Bank deposit to remittance matcher
Open your 835 remittance files and a bank export (CSV or Excel). Each remittance payment is paired with the bank credit of the same amount, first by trace number and then by date. What cannot be paired with certainty is listed, not guessed.
Your file never leaves this computer. It is read and processed inside this page, which is built so it cannot make network requests. It keeps working with your internet turned off.
1. Remittance files
2. Bank deposits
First rows of the bank file, as read:
3. Match
Verification
Summary
Bank rows are named by their row number in the bank file: R5 is row 5.
Matched
Remittance payments with no deposit found
Deposits with no remittance found
Ambiguous: more than one possible pairing
These are never paired automatically, even when one date is closer than another. Each row lists its candidates.
Remittances not expected among bank credits
Bank rows not considered (not credits)
What gets checked
- Every remittance payment appears in exactly one list: matched, unmatched, ambiguous, or not expected in the bank. Counts and amounts both add back to the full set.
- Every bank row appears in exactly one list: matched, unmatched, ambiguous, or not considered. Counts and amounts both add back to the full set.
- Each matched pair has the same amount on both sides, looked up again from the original files.
- No payment and no bank row is used in more than one match, confirmed by a separate pass over the result.
- Each matched pair still meets the rule it was matched by: the trace number is in the description, or the dates are within the chosen number of days.
- No pair was made where more than one pairing was possible: candidates are counted again by comparing every payment with every credit, and a matched pair must be each other's only candidate.
- Nothing listed as unmatched has a same-amount candidate, and everything listed as ambiguous has more than one possible pairing.
- Each 835 file's own balancing checks are carried through, and a bank row with an amount or date that could not be read makes the result not verified.
How it works
- Open the remittance files. Drop one or more 835 files. Each payment's trace number, date, amount, and method are read. Payments of zero, payments marked as no payment, and debits are set aside as not expected among bank credits.
- Open the bank export. Drop a CSV or Excel export of your bank activity and pick the date, description, and amount columns. Only credits (amounts above zero) are considered; other rows are listed as not considered.
- Trace number first. A payment and a credit are paired when the amounts are equal and the payment's trace number appears in the credit's description as a whole word, and no other payment or credit fits the same way.
- Then amount and date. What is left is paired when the amounts are equal, the dates are within the number of days you set (5 unless you change it), and that payment and that credit are each other's only candidate. When same-amount payments and credits inside the date range could pair up more than one way, all of them are listed as ambiguous, however close some of the dates are.
- Review and download. Matched pairs, unmatched payments, unmatched deposits, and ambiguous items are shown and can be exported to Excel or CSV with the certificate listing every check.
Worked example
A made-up batch of six remittance payments totaling $2,538.75, set against a bank export with five rows totaling $2,060.50, with 5 days allowed between dates.
| Remittance payment | Payment date | Amount | Bank row | Result |
|---|---|---|---|---|
| ACH EFT0000207 | 2026-02-03 | $1,240.50 | 02/04 credit of $1,240.50 with EFT0000207 in its description | Matched by amount and trace number |
| Check CHK20015 | 2026-02-03 | $310.00 | 02/06 mobile check deposit of $310.00 | Matched by amount and date, 3 days apart |
| ACH EFT0000208 | 2026-02-05 | $88.25 | none | Unmatched payment |
| ACH EFT0000209 | 2026-02-10 | $450.00 | 02/11 credit of $450.00 with no trace number | Ambiguous |
| ACH EFT0000210 | 2026-02-10 | $450.00 | the same 02/11 credit of $450.00 | Ambiguous |
| No payment EFT0000211 | 2026-02-10 | $0.00 | none | Not expected in the bank |
| none | 02/09 card settlement of $75.00 | Unmatched deposit | ||
| none | 02/12 service fee of -$15.00 | Not considered (not a credit) |
Remittance side: $1,550.50 matched + $88.25 unmatched + $900.00 ambiguous + $0.00 not expected = $2,538.75 across 2 + 1 + 2 + 1 = 6 payments. Bank side: $1,550.50 matched + $75.00 unmatched + $450.00 ambiguous − $15.00 not considered = $2,060.50 across 2 + 1 + 1 + 1 = 5 rows. The two $450.00 payments could each go with the one $450.00 credit, so neither is paired. The $310.00 check is paired by date because it is the only $310.00 payment and the 02/06 credit is the only $310.00 credit within 5 days.
The example uses made-up names and numbers.
Questions
Do my files get uploaded?
No. This page is served with a policy that blocks every kind of network request from the page, so it has no way to send the remittance files or the bank export anywhere. You can disconnect from the internet after the page loads and it still works.
What does ambiguous mean?
More than one pairing is possible: for example two payments of the same amount within the date range of one credit, or one payment with two credits of its amount inside the range, even when one date is closer than the other. The tool lists every item involved with its candidates and pairs none of them. Narrowing the number of days can separate groups that are far apart in time.
Why is a payment listed as not expected in the bank?
Its amount is zero, the file marks its method as no payment, or the file marks it as a debit. None of those would show up as a bank credit, so they are kept apart instead of being reported as missing deposits.
What if one deposit covers several payments?
The tool pairs one payment with one credit of exactly the same amount. A credit that combines several payments has a different amount, so it and those payments are listed as unmatched.
Which bank files does it read?
CSV and .xlsx exports with one row per transaction and a single amount column where money in is positive. An amount written with CR after it is read as money in, and one with DR after it as money out. You choose the date, description, and amount columns. Dates can be written as year-month-day, month/day/year, or day/month/year.
This tool calculates and checks numbers. It is not legal, tax, or medical advice.