Duplicate bill check before payment
Find the bills in this payment run that you already paid, or are about to pay twice.
Load the bills you are about to pay and your paid or history bills as CSV or XLSX, including QuickBooks vendor reports. DuplicateBillCheck compares every bill with the same vendor and currency, requires the exact amount for a likely duplicate, matches invoice numbers conservatively and shows the source rows behind every result.
Check bills Try the demo Download CSV templates
- Files never leave your browser. The check runs on your device; bills, vendor names and files are never uploaded.
- First 25 bills free, with CSV. Batch-wide totals always free. No account.
- $49 once per batch for every bill, the full CSV, a printable report and re-checks against new or corrected history files.
| Bill to pay | Northwind Packaging LLC · INV-004812 | $1,240.00 |
|---|---|---|
| Paid bill in history | Northwind Packaging LLC · 4812 · Paid | $1,240.00 |
| Would be paid twice | $1,240.00 |
- Likely duplicate: already paid Same vendor, currency and amount; INV-004812 = 4812 after normalization
- Likely duplicate within this batch Bluebird Office Supply 77310 and 0077310, $212.40 each
- Possible match: review SIT-1009 is in history at $1,450.00, the batch has $1,500.00
- No match found November rent: same vendor and amount as October, different invoice number
Example figures from the demo; your results depend on your files. A result describes the files, not proof that a bill was or was not paid.
Check your bills
Loading…
How it works
- Export the bills to pay. The batch you are about to pay:
vendor,invoice_number,bill_date,amount(start from the bills to pay template), or a QuickBooks Unpaid Bills or vendor report as CSV or XLSX. - Export the paid or history bills. Bills already entered or paid, ideally with a
statusorpaid_datecolumn (paid bills template). QuickBooks vendor reports are read as they are: title lines, vendor group rows and Total rows are recognized, andNum,Date,Transaction Type,Open Balancemap to the right columns. - Check on your device. Each bill to pay is compared with every history bill and every other bill in the batch that has the same vendor and currency.
- Review before you pay. Every result lists the matching bills, the reasons and the raw lines they came from. Hold the likely duplicates, review the possible ones, then print the report or hand over the CSV.
What DuplicateBillCheck reports
Likely duplicate: already paid
A history bill with the same vendor, currency, exact amount and invoice number is explicitly marked paid (its own status column says Paid, or it has a paid date).
Likely duplicate: in history, not marked paid
The same bill is already in your history file, but the file does not say it was paid: the status is unknown (no status column or a blank status) or open. Paid and unknown are always kept apart.
Likely duplicate within this batch
Two or more bills in the batch itself have the same vendor, currency, amount and invoice number. Verify the original bill before paying.
Possible match: review
Same vendor and currency, but not identical: the same invoice number with a different amount, the same amount with no invoice number to compare and bill dates within 45 days, or the same amount and date with different invoice numbers.
Invalid row: not checked
Rows with no vendor, impossible or ambiguous dates (11/31/2026, 03/04/2026 in a mixed file), amounts that are not plain numbers, or zero amounts are flagged and never guessed.
No match found
No history bill and no other bill in the batch matches under the rules.
Strict on purpose
- Vendor, currency and exact amount safeguards. Bills are compared only within the same vendor (case, punctuation and suffixes such as Inc or LLC ignored) and currency. A likely duplicate needs the exact amount in cents.
- Conservative invoice numbers. Case, spaces, separators, an
INVprefix and leading zeros of a numeric invoice are ignored:INV-004812=4812.A-4812is not4812. - Paid is never inferred from a bill row. Only an explicit status or paid date makes a history bill paid. Payment rows (Bill Payment, Check) are never linked to bills.
- The same explicit bill ID in both files is the same record, not a duplicate. All money math uses exact integer cents; text from your files is shown as plain text, and the CSV export neutralizes spreadsheet formulas.
Files it reads
- CSV with comma, semicolon, tab or pipe delimiters, quoted values and UTF-8 or UTF-16; XLSX (the first sheet, real Excel dates included). Legacy
.xls: save as XLSX or CSV first. - Header discovery: the header row is found in the first 40 lines, so report titles, company names and date ranges above it are skipped.
- QuickBooks vendor report aliases:
Num,Ref No.,Bill No.→ invoice number;Date→ bill date;Name,Vendor,Payee,Supplier→ vendor;Transaction Type,Due Date,Open Balance,Memo/Description,Status,Payment Status. With no vendor column, vendor names come from the group rows above each block. - Date validation:
YYYY-MM-DD,MM/DD/YYYYorDD/MM/YYYYdecided once per file (US month-first when the file does not prove otherwise, or set it yourself), and month names. Impossible dates are rejected. - Samples: bills to pay (CSV), bills to pay (XLSX), QuickBooks-style paid bills report.
Pricing
Free
$0
- Unlimited checks on your device
- Batch-wide totals and result counts
- The first 25 bills to pay in detail, plus a CSV of those 25
- Demo batch, sample files and CSV templates
Full batch report
$49 USD, once per batch
- Every bill to pay on screen and in the CSV
- Printable report with matched bills and source rows (print or save as PDF)
- Re-check the same batch against new or corrected paid/history files
- No subscription; pay with card (Square) or PayPal
A purchase is bound to the bills-to-pay file of its batch through a one-way SHA-256 fingerprint computed in your browser. A different batch file needs its own purchase.