Skip to main content

Duplicate invoice detection software

Duplicate invoice detection software compares every supplier invoice you receive against every other one, on the fields that stay stable when a document is re-sent — supplier, invoice number, total, date — and raises the pairs that look like the same bill twice. ininvoice runs three matching rules plus a content-hash check, and every match is a candidate a person confirms or dismisses. It flags; it does not pay, and it does not block.

Run it on your own invoices

Upload documents manually or connect Gmail, then run a duplicate scan across everything ininvoice has seen.

Start free — 20 documents, no card

Free plan: 20 documents/month. No card required.


How the same invoice ends up in your ledger twice

Duplicate payments are rarely caused by someone paying the same document twice on purpose. They are caused by the same claim arriving through two paths that never meet:

  • Two channels. The supplier emails the PDF and also posts it to a portal. Two people handle two copies.
  • A chased invoice. An unpaid invoice is re-sent as a reminder, from a different address, and is treated as new.
  • Two supplier records. "Meridian Supplies" and "Meridian Supplies SL" exist as separate contacts, so a per-supplier check never compares them.
  • A statement line re-keyed. An invoice already entered reappears on a monthly statement and gets entered again.
  • A re-upload. The identical file is added twice while someone is clearing a backlog.

Each path defeats a different check, which is why a single rule does not work. A number-only check misses the two-supplier-records case. A file-hash check misses everything that was re-generated rather than re-sent.

The four checks ininvoice runs

Three comparison rules run across your invoice records, and one check runs earlier, at the moment a document is ingested. Each rule carries a confidence value used to sort the review queue — not to decide anything on its own.

Check Matches when Confidence Catches
Content hash The file is byte-for-byte identical to one already ingested Exact Re-uploads and re-sent emails
Same supplier + same number Same supplier record and the same invoice number, compared with case and surrounding whitespace ignored 0.95 The same invoice re-entered or re-generated
Same supplier + same amount Same supplier record, totals within EUR 0.01, invoice dates less than 30 days apart 0.80 Duplicates issued under a new invoice number
Same number + same amount Identical invoice number and total, recorded against different supplier records 0.70 Duplicates hidden by split or misspelled supplier records

The third rule is the one most tools do not run, because it deliberately ignores the supplier. It is the rule that finds the duplicate your accounting system structurally cannot see: two contact records for one company mean two ledgers, and a per-supplier check compares each against itself.

Cancelled, voided and draft invoices are excluded from comparison, and a pair once raised is never raised again — confirming or dismissing it is final unless you reopen it.

A worked example

The figures below are synthetic, constructed to show each rule firing. They are not customer data.

A month of invoices is scanned. Three pairs come back:

Pair 1 — caught by same supplier + same number (0.95)

Document A Document B
SupplierNordwind Components GmbHNordwind Components GmbH
Invoice numberNW-2026-0418nw-2026-0418
TotalEUR 4,182.60EUR 4,182.60
Received12 May, from accounts@21 May, from billing@
VerdictConfirmed duplicate. A chase copy sent from a second mailbox. The content hash did not catch it — the PDF was regenerated, so the bytes differ. The lower-case invoice number did not hide it, because comparison normalises case.

Pair 2 — caught by same number + same amount, different suppliers (0.70)

Document A Document B
Supplier recordMeridian SuppliesMeridian Supplies SL
Invoice number8821388213
TotalEUR 2,340.00EUR 2,340.00
Received4 May28 May
VerdictConfirmed duplicate. One company, two contact records. Both per-supplier rules were blind to this pair; only the supplier-agnostic rule found it. Merging the two supplier records prevents the next one.

Pair 3 — flagged by same supplier + same amount (0.80), and dismissed

Document A Document B
SupplierCastell Facility ServicesCastell Facility Services
Invoice numberCFS-1180CFS-1206
TotalEUR 1,950.00EUR 1,950.00
Period billedApril cleaning contractMay cleaning contract
VerdictNot a duplicate. A fixed monthly retainer billed 26 days apart. Different invoice numbers, different service periods, identical amount. Dismissed in one click, and not raised again. This is the false positive the amount rule is expected to produce — the price of catching duplicates that carry a new invoice number.

Two real duplicates, one dismissable false alarm. That ratio is the honest shape of amount-based detection, and any tool claiming it never raises a false positive on recurring billing has either turned the rule off or is not telling you about it.

The workflow

  1. Documents arrive. Upload them manually, or connect a Gmail account so invoices are collected as they land.
  2. Identical files are stopped at the door. A re-uploaded or re-sent identical file is recognised by content hash before it becomes a second invoice record.
  3. Fields are extracted. Supplier, invoice number, date and total are read from the document, along with the individual lines.
  4. The scan runs. The three comparison rules run across your invoices and produce candidate pairs, each with a confidence value and the reasons it matched.
  5. You review side by side. Both documents are shown together with the matching fields highlighted, so the decision takes seconds rather than a search through the ledger.
  6. You confirm or dismiss. Confirmed pairs are marked as duplicates. Dismissed pairs are remembered and never resurface. A whole rule can be cleared in bulk if it is noisy for your billing pattern.

Duplicate detection is one check among several. The same documents are also matched line by line against purchase orders and goods receipts, which is where price and quantity discrepancies are found — see invoice matching software.

Limitations, stated plainly

  • It flags, it does not block. ininvoice does not execute payments, so it cannot stop one. It surfaces the pair before approval; a person decides.
  • Amount-based matching produces false positives. Fixed recurring charges billed twice inside 30 days will be raised. They are dismissed in one click, but they will appear.
  • It only compares what it can see. Invoices paid outside ininvoice, or from a period before you started, are not in the comparison set.
  • It depends on extraction being right. If the invoice number or total is misread from a poor-quality document, the rules that depend on those fields will not fire.
  • Same work, different invoice, different amount is not a data duplicate. A supplier billing twice for one job under two unrelated invoices is a commercial dispute. No field comparison finds it.
  • Gmail only. Outlook and Microsoft 365 are not currently available. Manual upload works regardless.
  • Early-stage product. ininvoice is a matching and validation layer that runs before your accounting system. It is not a full accounts payable suite and does not replace one.

Questions worth asking any duplicate detection vendor

  1. Which fields are compared, exactly? "AI-powered" is not an answer.
  2. Does it compare across supplier records, or only within one? Split supplier records are the most common hiding place.
  3. Is invoice-number comparison normalised for case, spacing and punctuation?
  4. What happens to a dismissed pair — is the decision remembered, or does it come back next scan?
  5. Does it detect duplicates that arrived through different channels, or only re-uploads of the same file?
  6. Can a noisy rule be cleared in bulk without dismissing everything else?
  7. Does it claim to block payment? If so, ask how, given it is not the system that pays.

Frequently asked questions

How does duplicate invoice detection actually work?
By comparing every invoice against every other one on the fields that stay stable when a document is re-sent: supplier, invoice number normalised for case and whitespace, total amount and invoice date. ininvoice applies three rules — same supplier and number, same supplier and amount within 30 days, and same number and amount across different supplier records. Byte-identical files are caught earlier, at ingestion, by content hash.
Does the software block the payment automatically?
No. Every match is raised as a candidate with a pending status and a confidence value, and a person confirms or dismisses it. ininvoice does not execute payments, so it cannot stop one. It flags the pair before approval so the decision is made by someone looking at both documents.
Will it flag legitimate recurring invoices as duplicates?
Sometimes, yes. The same-supplier-same-amount rule will flag a fixed monthly charge billed twice inside one 30-day window. That is a deliberate trade-off: the rule exists to catch duplicates issued under a new invoice number, and the cost is a dismissable false positive. Dismissed pairs are remembered, and a whole rule can be cleared in bulk.
What does it not detect?
Anything it cannot see. Invoices paid outside ininvoice are not compared. A supplier billing twice for the same work under genuinely different numbers and amounts is a commercial dispute, not a data duplicate. Detection also depends on the invoice number and total being read correctly from the document.
Is this the same as duplicate payment detection?
Related but earlier. Duplicate payment detection looks at payments that have already left, usually as a recovery audit. This runs on invoices before approval, which is the only point at which the money can still be kept.
Do I need to connect an email account?
No. Documents can be uploaded manually. Connecting a Gmail account lets invoices be collected as they arrive instead. Outlook and Microsoft 365 are not currently available. The free plan covers 20 documents per month and needs no card.

Scan your own invoices for duplicates

Upload documents or connect Gmail, run a scan, and review the candidate pairs side by side before anything is approved.

Start free — 20 documents, no card

Free: 20 documents/month, no card · Starter 49 EUR/mo, 200 documents · Pro 149 EUR/mo, 750 documents