
I'm a solo builder, and this came out of a problem I actually had: I freelance-adjacent work with clients abroad, and by the time I remembered an invoice was overdue, it was the middle of their night (or mine), and I'd spend way too long deciding how firm to sound in the follow-up email. Most of the time I just... didn't send it.
So I built PingToPay. It watches your invoice due dates and sends calm, professional reminder emails automatically — three escalating stages, fully editable in your own words, with your Wise/PayPal/Payoneer/bank link included as the call to action. You get a BCC copy of every email so you always know exactly what your client saw and when.
How it works:
Pricing: Free for your first 5 invoices that go overdue (unlimited invoice tracking either way, no card required). Pro is $12/mo or $120/yr for unlimited reminders.
Stack, if useful to anyone: React + Firebase (Auth/Firestore/Cloud Functions), Resend for email, Dodo Payments as merchant of record for billing (handles global tax/compliance so I don't have to).
It's live and I just processed my first real payment end-to-end. Would genuinely love feedback — especially from anyone who invoices clients abroad and has felt this exact pain. What would make this a no-brainer for you?
pingtopay.app
Real problem. I run a small renovation company and chasing payment used to be the job nobody wanted, so a calm automatic reminder with the payment link in it makes a lot of sense.
One thing I learned on our side: some of our "late" invoices weren't forgotten, they were disputed. The client quietly disagreed with a line (usually extra work agreed verbally on site) and waited. Reminders didn't fix those. What fixed them was getting the client to confirm the extra work in writing before we did it, so there was nothing to argue about later.
So maybe worth a small feature: let the client reply "I have a question about this invoice" from the reminder itself, and flag those separately. Then the freelancer knows which ones need a conversation instead of another email.
Following up — the pause toggle we talked about is live now (posted a product update with the full list). You read the client's reply in your own inbox, then pause that invoice's reminders with one click while you sort out the dispute, and resume it yourself whenever it's settled.
This lines up with something another commenter asked about too — whether "late" sometimes means "disputed," not "forgotten." Sounds like you've lived that exact distinction.
Getting written confirmation on verbal extras before doing the work is honestly the more valuable lesson here — no reminder tool fixes a dispute that's already brewing. On the feature side, I built something close to what you're describing, just from the other direction: rather than a client-facing "I have a question" link, I added a freelancer-side pause toggle — you read the client's reply (they can already just hit Reply on any reminder, it lands in your real inbox), then pause that invoice's reminders yourself with one click while you sort it out. Stays paused until you resume it, no auto-timer resuming it mid-conversation. Same outcome as what you suggested, simpler mechanism.
the free tier covers the first five overdue invoices, how do you recognize the same invoice after a CSV reimport or edit so duplicates do not use up that allowance?
Shipped this — CSV imports and manual adds now check against your existing invoices by client + amount + due date before saving. If something looks like a repeat, you see the actual flagged row and choose to skip it or add it anyway, instead of it silently going through (or silently getting blocked).
Good catch — right now there's no recognition at all. Every add (single or via CSV) creates a brand-new record with no matching against existing invoices, so a re-imported CSV row would create a second entry, could burn a second reminder slot, and — worse — your client would get duplicate reminder emails for the same invoice. That's a real gap, not by design. Adding basic duplicate detection (matching on client email + amount + due date) to the list.
The part of your story that stood out is the time zones: the reminder arriving in the middle of the client's night. If you don't do it already, sending each reminder at around 9-10 am in the client's local time (you can guess it from the country on the invoice and let the user override it) would make that a feature rather than a footnote. A reminder that lands at the start of their workday gets paid the same day more often than one buried under overnight mail.
The other thing I'd worry about as a user is the reminder that goes out after the client has already paid. Bank transfers and Wise can take a day or two to show up, and a "final notice" sent to someone who paid yesterday costs more goodwill than the late payment itself. A one-click "I've already paid" link in every reminder, which pauses the sequence and notifies the user, would take away most of that fear. It also gives you a nice signal about when money is actually on its way.
Both of your suggestions are live now — the "I've already paid" link is in every reminder email, pauses that invoice's reminders and pings me to confirm, with a 5-business-day auto-resume if I never do. Posted a full product update with the details. Thanks again for pushing on this one, it was a real gap.
Both of these are really good — especially the "I've already paid" link. Right now stopping reminders requires me (the freelancer) to manually mark the invoice paid in the dashboard, which works but puts the burden on the wrong person if the client's the one who'd notice first. A one-click "I've paid this" link in the reminder itself that pauses the sequence (with some kind of confirmation step so it can't be spoofed) is a much better version of that. Adding it to the list.
On local send time — right now everything goes out on one daily check, not timezone-aware yet. You're right that catching someone at the start of their workday instead of the middle of their night would land better. Good flag.
Glad it's useful. On spoofing, I wouldn't overthink it: the link only pauses reminders and pings you, it never marks the invoice paid. Worst case someone pauses a reminder and you see the notification. What I'd add is an auto-resume: pause for about 5 business days, and if you haven't confirmed the payment by then, the sequence picks up where it stopped.
That covers the "I paid" that was really "I'll pay soon".
The stalled-invoice problem you're solving assumes the invoice itself was already correct by the time it went out. For people billing by the hour instead of a fixed project fee, that's not always true. Time gets logged days after the work happened, part of it gets forgotten, and the invoice is short before any reminder ever gets sent. I've been working on a time-tracking app for consultants that runs into that same gap, so it's the part I kept thinking about while reading this. Have you run into users whose late payment turned out to be a client quietly disputing the hours rather than just being slow to pay a number they already agreed with?
Genuinely good question, and yes, I've thought about it even though I don't have enough real usage yet to know how common it is. My take: reminders are built for "client fully intends to pay but forgot," not disputes. If someone's actually contesting the hours or scope, an automated reminder is the wrong tool — it'll look tone-deaf on top of a real disagreement. Right now it's on the freelancer to recognize that difference and pause reminders before the tool barrels ahead assuming good faith. Not something I've built explicit handling for yet, but a "pause — this is disputed" option separate from "paid" is probably worth adding.
The BCC copy is a smart touch. I'd never trust an auto-emailer to talk to my clients without seeing what it sent. Do people mostly keep the default wording or rewrite it?
Good question! honestly still too early to have solid data on this, single-digit real users so far! My design intent: the default wording is deliberately written to sound like a normal person, not a tool, so I'd guess most people keep stage 1 close to as-is and start tweaking the firmer/final-stage emails once they've seen how their own client relationships actually play out. There's a live preview while editing so you always see exactly what a client would receive before saving - that mattered a lot to me, no one should have to guess what tone comes out the other end.
That line about remembering an overdue invoice at the wrong time — then spending too long deciding how firm to sound — is the exact admin-stall loop. Automation solves the reminder timing; I’m interested in whether the smaller missing piece is getting a stalled freelancer from “I should chase this” to one concrete next action.
I’m recruiting a few ADHD/ADHD-ish freelancers for a free ~20-min observed silent watch. I’ll provide a fake sample overdue (e.g. Northstar Studio, $1,240, due Sep 16, 14 days late) so you don’t use real client data. You enter it, and we watch what next action + chase message the system surfaces. Not a sales call.
Reply YES + your timezone (optional window this week) — I’ll confirm a slot.
Interesting framing — "from 'I should chase this' to one concrete next action" is exactly the gap I was trying to close. For me the trigger was less decision-paralysis and more plain forgetting under a pile of other client work, but I can see the same "clear default action, no decision needed" design helping either way. Appreciate the offer on the observed session — not something I have bandwidth for right now, but curious to hear what you find if you run it.
With $12/month pricing, does the real value come from frequent overdue invoices or from eliminating the awkwardness and risk of chasing even one significant payment?
Honestly, it's more the second one. The free tier covers 5 overdue invoices, so occasional late payments don't even need Pro. The real value is consistency — every invoice gets the same calm, professional reminder, whether it's a small $200 job or a big $8,000 one, without you writing an awkward email under pressure. Unlimited volume is the real unlock for agencies or people juggling a lot of clients, but even at one significant late payment a quarter, the value is mostly "I never have to write that awkward email from scratch again."
That consistency angle is the more interesting part. If you’re open to it, what’s the best email to reach you on?
Sure -- support@pingtopay.app reaches me directly, happy to keep chatting there.
Thanks! I’ve just sent it over.
Looking forward to hearing your thoughts whenever you have a chance.