The first truth nobody says
80% of late payments aren't actually late — they're just misunderstood on both sides.
You invoiced on March 15 on NET_30. You expect payment on April 15. On the 16th, you're upset. But your client processes invoices at month-end — you'll be paid April 30, and that's totally normal under their reading of NET_30.
Before chasing, verify it's really late and not an interpretation difference.
Payment terms, really
NET_30 (30 days)
The standard. The counter starts:
- Either at invoice date (freelancer interpretation, most favorable)
- Or at receipt date (client interpretation, loses 1-3 days)
- Or end of invoice month (NET_30 + EOM, loses up to 30 days)
Always specify in the contract. "NET_30 from invoice date" removes any ambiguity.
NET_45, NET_60
Reserved for big accounts (corporations, agencies). If a small client asks NET_60, it's often a signal of cash tightness on their side — beware.
EOM (End of Month) or EOMNET_30
The client pays at the end of the month following the invoice. If you invoice on the 5th, you're paid on the 30th of next month. If you invoice on the 28th, it's almost the same. Avoid invoicing mid-month if you have this term — you lose 15 days for nothing.
CUSTOM (negotiated date)
For short missions and sensitive clients: "payment at 15 days from invoice date". Works well with startups and independent agencies.
The tolerance rule
Real lateness starts after a tolerance window. Most experienced freelancers apply:
- + 15 days: normal tolerance (poor admin management at client's, not serious)
- + 30 days: critical threshold (escalation needed)
- + 60 days: serious fault (recovery procedure to consider)
The chase schedule that works
D+0 (theoretical due date)
Nothing. Give 5-7 days of grace, especially on the first invoices with a new client.
D+7 (gentle reminder)
Simple email, light tone:
"Hi [Name], hope all's well. Quick reminder: invoice #X issued on [date] was due on [due date]. I haven't seen the payment yet, maybe it got lost? Let me know if I should resend."
90% of payments arrive within 5 days of this email.
D+15 (formal reminder)
More direct email, copy your contact + accounting if you can identify them:
"Hi [Name], invoice #X is 15 days late. Could you confirm the expected payment date?"
Short, factual, no fluff. You're expecting a clear answer with a date.
D+30 (escalation)
This time you pick up the phone. A call resolves 95% of cases — if the client has a real problem, they'll tell you (tight cash, CFO on vacation, etc.). You can propose a payment plan.
If the call yields nothing: certified email with acknowledgment of receipt, mentioning applicable late-payment interest (ECB rate + 10 points for B2B in France, ~14%).
D+45 (formal notice)
If formal notice yields nothing, you move to recovery procedure (bailiff, or a platform like Rubypayeur in France). From that point, you stop working for this client.
Mistakes to avoid
1. Chasing too early. If you write at D+3, you come across as a stressed freelancer. The client reads "they don't trust me" and lowers your rate next time.
2. Chasing too late. The longer you wait, the more the client gets used to your invoice at the bottom of the pile. By D+60, you're forgotten.
3. Threatening on the first chase. "Otherwise I'll take legal action" at D+15 is disproportionate. You break the relationship over a normal admin delay.
4. Mixing chase and negotiation. If the client uses the delay as leverage ("we'll look at the payment once we've closed topic X"), refuse. Payment isn't conditional — it's owed.
Warning signals (change clients)
- The client systematically pays at D+45 even though you're on NET_30
- They've already negotiated 2 payment postponements
- They ask to re-issue invoices under different headings "for admin reasons"
- They dodge your chase emails but stay reachable for mission talk
In all these cases: the client isn't a partner, they're a risk. Decline the next mission, or demand 50% upfront.
What Freelance Budget tracks
- Invoice date + expected payment date (per the client's NET_X)
- Configurable tolerance per entity (15 days by default)
- Automatic alert when an invoice crosses the tolerance threshold
- Status overdue / partially_received / paid tracked in real time
- Outstanding aging (how much expected, and for how long) at the dashboard level
The idea: not having to mentally remember every issued invoice. The tool knows.