Reconciliation
- You match your sales records to your bank deposits. It takes three sources, not two: sales system, processor report, bank statement
- T+2 settlement means today's deposit covers transactions from two days ago. Track by settlement date, not transaction date, or you'll be off by one forever
- Unexplained gaps are almost always fees, chargebacks, refunds, or batch timing. Categorize the unknowns. Don't adjust them away
- Automate when matching takes more time than you can spare or errors keep recurring. Sales volume alone doesn't decide it
You compare what you think happened against what actually happened. Your sales records against your bank deposits. Sounds simple. Then you try it.
Match a payout to your bank deposit
First confirm which provider actually processed the payment. Match the Shopify order's payment transaction to its actual provider. Write the store, processor account and currency above your worksheet, with the bank and payout dates beside them.
If you're asking when it'll arrive, start with Settlement Timing. If funds are held, use Money Held or Frozen.
Get the right export
Shopify Payments, one payout: open Finance > Payouts. Select the payout date and specific payout; in the original view, choose Export > Export payout transactions. In the new view, use the export icon, then Export payout transactions. The download's a CSV. Shopify warns that views can differ during its rollout. VENDOR Shopify payout details.
Need a Shopify PDF? The documented PDF is a period report. Open Finance > Documents > Shopify Payments activity report. Choose the period and payout currency, then Export to PDF. It's for Shopify Payments, with owner or payout-view permission; other payment providers aren't included. This report describes balance activity, rather than accounting revenue. VENDOR Shopify activity report.
For one bank deposit, use the payout CSV above. If you require a complete per-payout PDF, ask Shopify. Check the PDF's scope before treating it as that record.
Square: open Reports > Accounting > Reconciliation. Select the date range and locations, then Print or Export, keeping those selections with the file. VENDOR Square report instructions.
Stripe automatic payouts: open the Payout reconciliation report. Select dates covering the payout's estimated arrival date, then find it and download its Itemized CSV. That date can differ from the bank's posting date. Keep the report currency and time zone with your export. Manual payouts use the Balance report unless you're a platform whose connected accounts have automatic payouts. Instant payouts need a transaction-history reconciliation; Stripe can't identify their transaction batch. VENDOR Stripe payout reconciliation and Balance report.
Can't see the named report or export? Ask the owner to check access and the account product. Send Support the payout reference and required date range. Keep the payout export separate from the tax-year log.
Work one payout, including the part that doesn't match
Here's an invented USD worksheet, not a provider statement; its inputs aren't actual fees or typical amounts. They're just a way to check your arithmetic. Copy your own export's signs and categories instead.
| Worksheet row | Signed USD | Status and annotation |
|---|---|---|
| Charges assigned to illustrative payout P-EXAMPLE | +1,000 | Illustrative input; link each charge to its sale. |
| Processing fees | -30 | Illustrative input; separate fee line. |
| Refunds | -100 | Illustrative input; retain original payment references. |
| Disputed principal | -200 | Illustrative input; retain case reference. |
| Separate dispute fee | -15 | Illustrative input; never assume every provider charges this. |
| Reserve movement withheld from this payout | -50 | Illustrative input; carry to the reserve record for later review. |
| Other documented adjustment | +5 | Illustrative input; retain its explanation. |
| Expected payout from these rows | 610 | DERIVED: 1,000 - 30 - 100 - 200 - 15 - 50 + 5. |
| Bank deposit being compared | 600 | Illustrative input; not yet proved to be this payout. |
| Expected payout less bank deposit | 10 | DERIVED: 610 - 600; still unexplained. |
DERIVED All inputs are invented in this table. No fee rate or accounting treatment is implied. The report categories illustrate the Stripe payout report and Shopify balance activity report. Your provider's export decides which rows apply.
The difference stays open until the records explain it. A fee needs its own supporting line in the records. Check the payout reference and bank account again before asking the provider for the remaining explanation.
Please explain the difference for payout [ID], in [currency]. My export totals [amount]; the bank shows [amount]. Please identify the line or timing difference that explains it.
Ask the bank this:
Please confirm this deposit's amount, posting date and reference. Which transfer does that reference identify?
Separate matching from accounting and tax
Take the matched records to your accountant. Ask them to approve the accounts and recognition dates. A payout date isn't an automatic revenue rule. For the form's gross total, follow its 1099-K transaction report.
| Your setup | Do this next |
|---|---|
| One processor and currency | Work one payout before widening the date range. |
| Several processors or locations | Keep account and location references on every worksheet. |
| Several payout currencies | Compare each currency separately, with its conversion records. |
Check the report's date basis and time zone. Keep period summaries separate from a single payout. Keep reserves and unresolved transfers visible for follow-up. A pending difference isn't permission to invent an adjustment.
Choose a completed payout and its supporting export. Trace its reference to the bank's posted deposit, explaining each line and any carried balance or reserve. Leave anything unexplained on an open-items list with an owner. The test fails if you need a balancing plug.
The Three-Way Match
You need three sources, not two:
| Source | What It Shows | Where to Get It |
|---|---|---|
| Your POS/system | Every transaction processed | Your terminal, gateway, or POS software |
| Processor settlement report | Transactions settled, fees charged, chargebacks | Processor portal or API |
| Bank statement | Actual deposits received | Your bank |
All three should match. When they don't, you have a discrepancy to investigate.
Your reconciliation obligation:
Per Mastercard's Rules: "It is the responsibility of each Customer to reconcile the totals and Transactions provided by the Interchange System to its own internal records on a daily basis."
This isn't just best practice. It's a network requirement.
Why They Don't Match
Timing Differences
The most common issue. Your POS shows $10,000 in Monday sales. Your processor report shows $10,000 settled Tuesday. Your bank shows $9,720 deposited Wednesday. All normal. They're looking at different points on the same timeline.
Fee Deductions
Sales were $10,000. Deposit was $9,720. The $280 gap is fees. Miss that and you'll think you're short. See Reading Statements for how to read the deductions.
Batching Differences
You processed 100 transactions Monday. Your processor batched 98 of them Monday night. The other 2 came in after cutoff, so they batched Tuesday night. Your reports now show different counts for "Monday."
Chargebacks and Refunds
A chargeback or refund hits your current settlement. It doesn't get matched back to the original sale. So a $500 chargeback on a two-month-old order lands as a deduction today.
Reserves and Holdbacks
Your processor might hold 10% of every settlement. Sales say $10,000, fees are $280, and you got $8,748. The rest is reserve. See Money Held or Frozen.
Common Discrepancies
| Discrepancy | Likely Cause | How to Fix |
|---|---|---|
| Transaction in POS, not in settlement | Auth only, never captured; voided; rejected at clearing | Check transaction status in gateway |
| Transaction in settlement, not in POS | System not syncing; manual transaction on terminal | Check all transaction sources |
| Amount mismatch | Tip adjustment; partial capture; currency conversion | Compare original vs settled amount |
| Extra fees | PCI non-compliance fee; chargeback fee; statement fee; instant payout fee | Review fee schedule |
| Missing deposit | Batch didn't close; settlement rejected; bank holiday | Check batch status, bank account |
| Unexpected deduction | Chargeback; refund; adjustment; reserve; delivery-app order-error deduction | Review the report from whoever made the deduction. App deducted for a missing or wrong order? Check its merchant review steps |
Instant payout fees. Someone on your team taps "get it now". That's 1.95% on Square, 1.5% on Stripe in the US, 1.50% on PayPal Instant Transfer. It comes straight off the deposit.
Double dispute fees. Stripe charges $15 to receive a dispute and another $15 to counter it. Neither comes back on a partial win. PayPal charges $15 on wallet and Guest Checkout disputes, $20 on card chargebacks. So your ledger needs two fee codes even though only one fires per dispute. Assume a single $15 line and you'll be short on Stripe and wrong on PayPal.
Fees you were told didn't exist. Helcim publishes $0 for monthly, setup, PCI, cancellation and statement fees. See those lines on your statement? They're not standard. They're negotiable.
All figures verified against the vendor's own pricing page on 2026-08-02. See Processor Comparison for the sourced table.
Mismatch Troubleshooting Flowchart
When your numbers don't match, work through this before panicking:
Reading the flowchart: Green is normal, leave it. Red means something got deducted, so go look. Yellow is a timing issue and usually fixes itself. Blue is a batch shift. Purple means you're digging into line items.
Almost every mismatch is one of three things. Fees, which you expected. Chargebacks and refunds, which came out of today's settlement. Or timing, where the money shows up a day late. If none of those explain it, pull the line-item report and match row by row.
Reconciliation Frequency
How often should you reconcile?
| Business Type | Recommended Frequency | Why |
|---|---|---|
| High-volume e-commerce (1000+ txns/day) | Daily | Discrepancies compound quickly; fraud detection |
| Medium retail (100-1000 txns/day) | Daily or every 2-3 days | Catch issues before they age |
| Low-volume (under 100 txns/day) | Weekly | Sufficient for error detection |
| All businesses | Monthly (at minimum) | Month-end close, financial reporting |
The 3-day rule: a discrepancy is 10x easier to chase inside 3 days. After 30, some are gone for good.
The Reconciliation Process
Step 1: Export Your Data
- Pull settlement report from your processor (by settlement date)
- Pull bank statement or transaction export
- Export your POS/sales data for the same period
Step 2: Match Gross Amounts
- Total sales from your system
- Total settled amount (before fees) from processor
- Should match (or difference should be explainable)
Step 3: Verify Fees
- Expected fees based on your rate and volume
- Actual fees charged
- Explain each difference using the agreed fee schedule and actual card mix. An unexplained gap isn't acceptable just because it's under 1%
Step 4: Match Deposits
- Settled amount minus fees = expected deposit
- Actual bank deposit
- Difference = chargebacks, reserves, or adjustments
The three lines above are shorthand, not a complete payout formula or an explanation of a difference. Include every documented signed component, as in the payout worksheet. Keep the difference unexplained until the records identify its cause.
Step 5: Investigate Discrepancies
- Document each discrepancy
- Research root cause
- Resolve or escalate
- Track patterns over time
Automation vs Manual
Manual works at a handful of transactions a day. Past that you need software:
| Volume | Approach |
|---|---|
| Under 100 transactions/day | Spreadsheet reconciliation feasible |
| 100-1000 transactions/day | Semi-automated (import/match tools) |
| 1000+ transactions/day | Fully automated reconciliation software |
Most processors ship reconciliation reports and an API. Your accounting software probably has an integration already. Third-party tools exist for messy multi-processor setups.
Settlement Holds and Reserves
Not all of your money reaches you right away. Processors and acquirers hold funds to cover their own risk.
| Reserve Type | How It Works | What to match |
|---|---|---|
| Rolling | % held each batch, released after X days | Your agreed withholding and scheduled releases |
| Capped | % held until reaching maximum | Withholding against the documented cap |
| Upfront | Lump sum held before processing | The agreed amount and release conditions |
| Minimum | Floor that must be maintained | The required balance and any top-ups |
See Money Held or Frozen for complete coverage of why funds get held and how to negotiate reserve release.
Next Steps
Want the math laid out for one payout? Use AI on payouts, books and tax forms, with made-up totals first.
Just learning reconciliation?
- Pull your last week's deposits and match them to sales
- Ask your processor for fee breakdown documentation
- Identify your batch cutoff time
Handling discrepancies?
- Understand chargebacks → Disputes cause the biggest gaps
- Build a fee tracking system → Catch overcharges
- Review your processor contract → Know what you agreed to pay
See Also
- Settlement Lifecycle - How a transaction goes from capture to deposit
- Money Flow - Where the fees come out and who gets paid
- Reading Statements - Interpret your processor statements
- Chargebacks - Dispute impact on reconciliation
- Money Held or Frozen - Reserve mechanics
- Processor Management - Working with your processor
- Chargeback Metrics - Track dispute impact
- Accounting Integration - Connecting processors to QuickBooks/Xero
Sources
| Source | Supports | Opened |
|---|---|---|
| Shopify payout details | Specific-payout CSV, payout reference, component transactions and original/new views | 21 October 2026 |
| Shopify Payments activity report | Period/currency PDF, permissions, balance-activity scope and reserve/dispute categories | 21 October 2026 |
| Square accounting reports | US Reconciliation route, dates, locations, Print/Export and report permissions | 21 October 2026 |
| Stripe payout reconciliation | Automatic-payout batch, estimated arrival date, Itemized CSV, manual/platform exception and instant limits | 21 October 2026 |
| Stripe Balance report | Balance report alternative, settlement currency, date range and time zone; no payout-to-payment assignment | 21 October 2026 |