Mathproven

Find duplicate transactions

Open one file of transactions: the CSV or Excel export from a bank or card account, or rows from a ledger. Every row is put in exactly one of three lists: exact repeats (same date, same amount, same description), near repeats (same amount and description within the number of days you type), or no repeat found. The page shows the groups, labels every row, and counts the rows and dollars in the second and later rows of each group. Nothing is removed from the file.

The file is read in your browser and stays on this device. Nothing is uploaded. This tool reads rows (CSV, Excel, or pasted text); it does not read PDF files or scans.

Every row in the fileExact repeatsNear repeatsNo repeat foundThe three lists add up to the file
Every row lands in exactly one of three lists, and the lists add back up to the file.
1. Transaction rows

Or paste rows copied from a statement or spreadsheet, with a header row first (for example Date, Description, Amount):

The rows are read in this browser and are not uploaded. This tool reads rows; it does not read PDF files or scans.

Two identical card payments on one day can both be real. This page compares rows and counts them. It does not say which rows are mistakes, and nothing is removed from the file.

What gets checked

Your numbersThe mathThe checksVerifiedNot verified
A result that fails a check is marked not verified. It is never shown as correct.

How it works

  1. Open the rows. Drop a .csv or .xlsx export from a bank or card account, or a ledger saved as rows, or paste rows with a header row first. The rows are read in the browser. PDF files and scans are not read.
  2. Check the columns. Date, description, and amount (or separate money out and money in columns) are matched from the header words. Every choice can be changed, along with the header row, whether dates are month first or day first, and whether the signs are flipped.
  3. Type a number of days, or leave it blank. Blank or 0 lists exact repeats only. With a number above zero, rows with the same amount and description are put in date order, and a row is joined to the row before it when the two dates are that many days apart or fewer. Joined rows on more than one date are a near group.
  4. Review and download. The summary counts the groups and the rows and dollars in their second and later rows. One table lists the groups and another lists every row with its list and group. Download both as Excel or CSV with the certificate, or print.

Worked example

A made-up March export of ten transactions. Row 1 of the file is the header row, so the transactions are rows 2 to 11. The days box is set to 3. The last column is the group the page puts each row in.

File rowDateDescriptionAmountGroup
203/02/2026CARD PURCHASE CORNER CAFE-18.40Exact 1
303/02/2026Card Purchase Corner Cafe-18.40Exact 1
403/03/2026ACH DEPOSIT CLIENT INVOICE 2041250.00No repeat found
503/05/2026CARD PURCHASE OFFICE SUPPLY-45.00Near 1
603/06/2026CARD PURCHASE OFFICE SUPPLY-45.00Near 1
703/09/2026CARD PURCHASE OFFICE SUPPLY-45.00Near 1
803/13/2026CARD PURCHASE OFFICE SUPPLY-45.00No repeat found
903/16/2026FUEL STATION 12-60.00No repeat found
1003/16/2026FUEL STATION 1260.00No repeat found
1103/31/2026MONTHLY SERVICE FEE-12.00No repeat found

Rows 2 and 3 are an exact group: the same date, the same amount, and the same description once capital letters are ignored. Rows 5, 6, and 7 are a near group: row 6 is 1 day after row 5 and row 7 is 3 days after row 6. Row 8 is 4 days after row 7, one day more than the 3 typed, so no repeat is found for it. Rows 9 and 10 have opposite signs, so they are not repeats of each other. The second and later rows of the exact group are 1 row and -$18.40; those of the near group are 2 rows and -$90.00. The exact repeats are 2 rows and -$36.80, the near repeats are 3 rows and -$135.00, and the rows with no repeat found are 5 rows and $1,193.00, which add up to the file's 10 rows and $1,021.20. All 14 checks pass.

The example uses made-up names and numbers.

Questions

What counts as an exact repeat?

Two or more rows with the same date, the same amount with the same sign, and the same description once capital letters and spacing are ignored. A payment and its reversal have opposite signs, so they are not repeats of each other. Rows on different dates are not exact repeats, however alike they are.

How are near repeats found?

Only when a number of days above zero is typed. Rows with the same amount and the same description are put in date order, and a row is joined to the row before it when the two dates are that many days apart or fewer. Two or more joined rows on more than one date are one near group. Because each row is compared with the row before it, a group can cover more days from its first row to its last than the number typed.

Why is a pair of same-date rows sometimes listed as a near repeat?

Each row is in one list only. When a number of days is typed and same-date rows are also within that many days of a row on another date, all of them are joined into one near group, so the pair is listed there and not as an exact group of its own. With the days box blank, the same pair is listed as an exact group.

Does the page say which rows are mistakes?

No. Two identical card payments on one day can both be real, and a repeated row can also be one entry made twice. The page has no way to know which. It lists the groups, labels every row, and counts the rows and dollars in the second and later rows of each group.

Is anything removed from the file?

No. The file is read in the browser and is not changed. The Excel and CSV downloads list every row that was read, each with its list and its group, so no row is dropped from the output.

What do the totals of second and later rows mean?

In each group the rows are put in date order, the first row is set aside, and the amounts of the rest are added up with their signs, so money out is negative. The summary shows that count and that total for the exact groups and, separately, for the near groups. They are totals of the rows listed. They are not a statement that those rows are wrong.

What happens to a row with no description?

It is still compared. A row with a blank description is matched on date and amount only, and only with other rows whose description is blank. A warning counts those rows and lists their row numbers.

Does it read PDF statements or scans?

No. It reads rows: a .csv or .xlsx export from a bank or card account, a ledger saved as .csv or .xlsx, or rows copied from a spreadsheet into the box on the page.

This tool calculates and checks numbers. It is not legal, tax, or medical advice.