Accidental duplicate invoices are impossible

A second invoice for the same job, same amount, same day is refused outright — and you are told which one you already have.

The operating system for post-frame and barndominium builders.

What it is

Not a warning on the screen — a hard rule underneath every save. Same business, same job, same total, same day, and it will not go through. Equal progress draws are still fine: three identical instalments on one job is real billing. What is outlawed is the accidental repeat, which always lands on the same day at the same figure.

Also called: invoiced twice · duplicated the invoice · double billed the customer · clicked save twice

See it, piece by piece
01

The second identical invoice is refused outright, not warned about on screen

Try it

Same business, same job, same total, same day — the save is rejected. A check built into the screen gets stepped around by a second browser tab, a retry after a timeout, a background sync, and every path written after it. And the failure here is a retry: the save looked like it had not worked, so it was done again. Only the rule underneath is present for every single write.

Duplicate stopped

This invoice already exists

INV-2026-0041 on this project is already for $17,152.00, issued the same day. Your earlier one saved — nothing was lost.

Billing the same job in equal instalments is fine — if this is a separate draw rather than a repeat, say so below and it will be saved alongside the first.
INV-2026-0041 already exists for this job, this amount, today — keep it, or say it is a separate charge. Real screen · sample data.
Without it

The screen lags, you save again, and the customer gets two copies of a $17,152 instalment.

Why we built it

A customer who gets billed twice wonders what else you've got wrong. A check on the screen gets stepped around by a second tab, a retry or a sync; the rule underneath every save is the only one present every time.

Sound familiar?“invoiced the customer twice for the same thing”
02

Three equal instalments on one job are still fine — you say so on the record

Billing a job in equal draws is ordinary, so the block offers a second, deliberately differently worded way out: this is a separate charge, save it as well. That writes your say-so against the row, and the invoice goes through. Duplication stops being something that happens to you and becomes something a person states on purpose.

Without it

A job billed in three equal draws gets blocked on the second one, and the office starts working around the guard.

Why we built it

A guard that blocks honest billing gets switched off in people's heads. Equal draws are ordinary, so there's a deliberately different way through — and saying so on the record turns an accident into a decision.

Sound familiar?“clicked save twice and got two invoices”
03

The refusal names the invoice you already have

Instead of a failed save, you are told that INV-2026-0041, for this exact amount, was issued today — with two ways out: keep the one you have, or confirm this is a separate charge. And the half-made draft is removed, so a refused save does not leave a stray invoice behind for you to trip over later.

Without it

A save fails with no explanation and you spend ten minutes looking for the invoice it clashed with.

Why we built it

Being told exactly which bill you already have saves the hunt and the doubt. The half-made draft is cleaned up too, so a refused save never leaves a stray invoice to trip over later.

Sound familiar?“the app lagged so I did it again and now there are two”
04

The same cheque cannot be recorded twice against an invoice

A payment carrying the same reference and the same amount on the same invoice is refused, and the form stays open with an explanation saying it was not added a second time — because closing it would look like it went through, and "try again" is exactly how $10,205.06 got recorded twice. Cash and unreferenced payments are deliberately left alone: the same customer paying the same round sum twice is ordinary.

Record payment refused
Record Payment
Amount
25728.00
Method
Check
Paid On
Aug 12, 2026
Reference
8616
Notes
Cheque 8616 for $25,728.00 is already recorded on this invoice. It was not added a second time.
CancelRecord
Cheque 8616 for $25,728 is already on this invoice — not added a second time. Real screen · sample data.
Without it

A cheque gets keyed twice at month end, the job reads paid, and the real balance never gets chased.

Why we built it

Money that reads collected when it isn't is money nobody goes after. The form stays open with the reason, because closing it would look like it went through — and cash or unreferenced payments are left alone, since the same round sum twice is ordinary.

How it works
  1. 1Save an invoice that matches one already on the job — same amount, same day.
  2. 2The save is refused, and the one you already have is named on screen.
  3. 3Keep the one you have — or say it is a separate charge and it goes through.
  4. 4The half-made draft is cleaned up, so nothing is left behind.
Why we built it

A builder hit save on an invoice, the screen lagged, he closed out, came back and did it again — and the job ended up billed twice. A check built into the screen would never have caught it: two browser tabs, a retry after a timeout and a background sync all step around one. And the failure is a retry, by definition — the save looked like it had not worked. So the rule sits underneath every single write instead, where nothing can step around it. An identical bill on the same job on the same day cannot be created at all.

The problem
  • Retries after an apparent failure creating a second identical invoice.
  • Two tabs or a background sync racing to create the same bill.
  • Duplicates only discovered when the customer complains.
What you get
Duplication stops being something that can happen to you — or to your reputation with a customer.
The blocked save names the existing invoice instead of leaving you hunting.
Legitimate equal instalments are still allowed.
What's inside
"It really is a separate charge"

This is the way out of the duplicate block. An ordinary invoice carries no such statement, which is exactly why an ordinary repeat collides. You are shown the invoice it matched, and if you confirm this is genuinely a separate charge, the bill is allowed.

The same cheque cannot be recorded twice

Two real cheques never share a number, so a reference is a hard identity. Same invoice, same cheque number, same amount — it will not go on twice. Cash and unreferenced payments are deliberately left alone, because the same customer paying the same round sum twice is ordinary.

INVOICING

See accidental duplicate invoices are impossible
on one of your own jobs.

Twenty minutes, your building, your numbers. Bring the job where “invoiced the customer twice for the same thing” — we will show you exactly where that stops.

leads2build.com
Duplicate stopped

This invoice already exists

INV-2026-0041 on this project is already for $17,152.00, issued the same day. Your earlier one saved — nothing was lost.

Billing the same job in equal instalments is fine — if this is a separate draw rather than a repeat, say so below and it will be saved alongside the first.
Accidental duplicate invoices are impossible — Leads2Build