01 the business
Online subscription box company
20 staff, 9,000 subscribers
Stripe, Shopify Payments and PayPal each pay out lump sums that cover hundreds of transactions. Matching them back to orders is slow, so reconciliation waits until month end. Errors hide until then.
02 before
The problem
A single Stripe or Shopify payout lands in the bank as one lump sum that covers dozens of orders, refunds and fees. Matching it back to individual invoices is slow, fiddly work, so reconciliation slips to the end of the month and errors hide until then.
- Reconciliation takes days at month end.
- Fees and refunds are posted as rough totals.
- Unmatched lines pile up for months.
03 the build
What the AI does
- Step 1: Pulls new bank feed lines from Xero or QuickBooks each morning, along with payout reports from Stripe, Shopify Payments and PayPal.
- Step 2: Breaks each payout into its underlying charges, refunds and fees so every customer payment can be traced.
- Step 3: Matches payments to open invoices and bills using amounts, references, dates and customer names, including part payments.
- Step 4: Drafts the fee and refund entries that a payout implies, ready to post alongside the match.
- Step 5: Lists the lines it could not match with its best guess and the reason, so a person starts with the hard cases rather than the easy ones.
paused: waiting for a person to approve
How it was put together
- Pulled bank lines each morning with payout reports from each payment provider.
- Broke each payout into charges, refunds and fees.
- Matched payments to invoices using amounts, references, dates and names, including part payments.
- Drafted fee and refund entries and listed unmatched lines with a best guess and a reason.
04 human in the loop
Where a person stays in charge
Your bookkeeper approves each batch of suggested matches and adjusting entries before anything is reconciled in the ledger. Unmatched lines are never cleared automatically.
- The bookkeeper approves each batch of matches and entries.
- Unmatched lines are never cleared automatically.
- Every match shows the evidence behind it.
05 rollout
From kickoff to live in 4 weeks
- Week 1Connect bank feeds and payment providers; agree matching rules.
- Weeks 2–3Reconcile last month in parallel and compare.
- Week 4Move to a daily approve-the-batch routine.
06 after
What changes
Reconciliation becomes a short daily check instead of a month-end slog. Customer balances stay accurate, so collections and reporting work from real numbers.
Assume 60 payouts a month covering 12,000 transactions, and 2 days of month-end reconciliation falling to 15 minutes a day.
2 days is about 16 hours of month-end crunch. 15 minutes × 22 working days = 5.5 hours, spread across the month and without the backlog.
What to measure
- Days between payout and reconciliation.
- Unmatched lines older than 30 days.
- Bookkeeper hours at month end.
- Fee totals that agree with provider statements.
07 evidence
What the research says
Gartner research put the average cost of poor data quality at $12.9 million a year per organisation.
Gartner, Data quality: why it matters and how to achieve it (opens in a new tab) · 2020
In 1,921 fraud cases, expense reimbursement schemes made up 13% of cases with a median loss of $50,000, and frauds at organisations with under 100 staff had a median loss of $141,000.
08 lessons
Mistakes to avoid
- Clearing what does not match. Unmatched means look closer.
- Ignoring currency and timing differences. Rules need to allow for them.
- Leaving fees as one lump. You lose the true cost of each channel.
09 questions
Common questions
- Does Xero's own matching not do this?
- It matches simple lines well. Lump-sum payouts need to be broken down first, which is the hard part this solves.
- Can it handle multiple currencies?
- Yes, using the rates from your accounting system and showing any differences.