I used to think receipt matching was mostly a date + amount problem.
In practice, it gets messy fast.
A few examples:
A receipt date may differ from the card posting date by one or two days.
The vendor name on the receipt rarely matches the vendor name on the card statement exactly.
Tips can change the total.
Foreign currency transactions may show different amounts depending on the statement view.
Hotel receipts can contain deposits, reversals, taxes, room charges, and restaurant charges on the same folio.
Some receipts show subtotal and tax clearly. Others bury it in tiny text or split it across pages.
Some “receipts” are really confirmation emails, screenshots, invoices, or order summaries.
That is why I think the useful part of automation is not just saying “matched.”
It needs to explain why it matched:
“This receipt was matched because the vendor name is similar, the receipt date is one day before the posting date, and the total is within the expected range.”
And it needs to know when not to force a match.
I’m building FinSnap around that idea: fast matching where the evidence is clear, and a review workflow where it is not.
For people who deal with expense or card reconciliation: what are the receipt edge cases that still waste the most time?