Upload your bank statement once. SendToBooks matches each charge to a receipt, flags discrepancies, and identifies anything missing. Every reconciliation decision is logged as a comment for full audit trail.
Go to /reconcile. Drop in either a CSV export from your bank (most reliable) or a PDF statement. We auto-detect Chase, Amex, Capital One, Wells Fargo, and Bank of America formats. For other banks we fall back to a generic parser — you'll want to spot-check the results.
For each bank transaction we look for a receipt that fits within these tolerances:
Matches above the confidence threshold are applied automatically. Lower-confidence candidates go into the "Unmatched" section for manual review.
The reconciliation page splits results into:
For each discrepancy you have four options:
| Action | What it does | Use when |
|---|---|---|
| Trust bank | Updates the receipt total to the bank amount. Adds an audit-trail comment to the receipt. | Receipt was hard to read; OCR got the cents wrong. Or the bank charge includes a tip you added in cash. |
| Trust receipt | Keeps the receipt amount; flags the bank entry as "receipt trusted." Adds a comment. | You know the receipt is right; bank charge is from a partial refund, dispute, or split transaction. |
| Note only | Acknowledges the difference; doesn't change either amount. | Both numbers are right but different (e.g., bank charge happened before the refund; you want both on record). |
| Unmatch | Breaks the link; returns both to "unmatched." | The auto-match was wrong; these aren't actually the same transaction. |
If there's a receipt that should be matched but the auto-matcher missed it (different merchant name, very different amount, charge older than 3 days), click Match to receipt… and pick from candidate receipts within 7 days.
If the bank charge doesn't need a receipt — like a Netflix subscription, transfer between accounts, or interest — click No receipt expected. It moves to the resolved section and won't appear as missing.
Upload the bank statement. If a receipt shows $47.23 but the bank charge is $47.43, it'll appear as a discrepancy. Click Trust bank. The receipt gets updated, and a comment is auto-posted: "Reconciled to bank statement. Bank charged $47.43; receipt showed $47.23. Updated receipt to bank amount."
If you tip in cash on a card receipt of $40 and the bank charge comes through as $48, it'll match within the 20% tolerance. Discrepancy section. Click Trust bank to update the receipt to the actual charged amount.
The bank entry will appear in the "Unmatched" section. If you forgot to capture it, find the merchant and total here — that's enough to add a receipt manually from the dashboard. Or comment on the receipt (once created) asking the client to add details.
Filter your dashboard by date range and look for receipts that DON'T have a bank link. Common causes: paid cash, charge hasn't posted yet, or you used a different card not on this statement.
Open the receipt detail and use the comment thread. Standard follow-up questions are pre-populated based on the receipt type (restaurant → who attended, what was the purpose; travel → trip purpose and dates; fuel → vehicle and business use; etc.).
CSV is more reliable. Every bank lets you export transactions as CSV from their website — usually "Download" or "Activity" → "Export." PDF parsing works for major bank formats but PDFs are designed for humans, not data. If something looks off after a PDF import, try the CSV export instead.
The CSV path works for every bank. If you'd like better PDF parsing for a specific bank, email support@sendtobooks.com with a sample (redact account numbers) and we'll add a parser.
Reconciliation works on your existing receipts — no setup. Upload a bank statement and watch the matches roll in.