Z A I D
2024 · Revenue Operations

Stripe + QuickBooks reconciliation for a Canadian SaaS

A daily reconciliation pipeline between Stripe (subscriptions, refunds, disputes, payouts) and QuickBooks Online for a B2B SaaS doing low-thousands of transactions per month. Replaces a manual export-and-paste job and surfaces problems the same day they happen.

Client B2B SaaS company, Canada
Stripe × QuickBooks
Revenue Operations
Role
Integrations Engineer
Year
2024
Hero stack
Stripe · QuickBooks
The problem

What was breaking.

Finance was spending around 6 hours per week exporting Stripe CSVs, splitting subscription revenue from one-off charges, mapping fees and refunds, and pasting into QuickBooks. Reconciliation lagged by a week, so disputed charges and failed dunning weren't caught until they'd already aged. Month-end close was painful and the CFO had no real-time view of MRR or churn.

Approach

How I built it.

  • Mapped every Stripe event the business cared about (charge.succeeded, charge.refunded, invoice.paid, charge.dispute.created, payout.paid) to its QuickBooks counterpart — sales receipt vs invoice vs credit memo vs journal entry.
  • Built an n8n workflow that subscribes to Stripe webhooks, normalises each event and writes the corresponding QBO record via API. Idempotent — re-runnable on any time window without creating duplicates.
  • Added a daily reconciliation report: Stripe payouts vs QBO bank deposits, with a delta column and click-through to any unmatched lines.
  • Built a small custom dashboard for the CFO showing MRR, churn, refunds and disputes sliced by plan and customer segment — auto-refreshes from Stripe.
  • Failed payments and dunning surface in a Slack channel within 60 seconds so customer success can act before retries exhaust.
Highlights

What makes it tick.

  • Event-driven, not batch — books revenue the moment Stripe confirms it.
  • Dispute flow: when a chargeback fires, QBO automatically posts the credit memo and the customer is tagged for retention outreach.
  • Year-end accountant export bundled into a single click — no more "can you pull last year's CSV again".
  • Every sync writes an audit row so any QBO entry can be traced back to the originating Stripe event.
Outcome

What changed.

Reconciliation effort dropped from around 6 hours per week to under 30 minutes of review. Close timeline went from T+7 to T+1. Three disputed charges in the first quarter were resolved before the chargeback window closed because they were caught same-day instead of a week late.

Stack

Tools used.

  • Stripe API
  • QuickBooks Online API
  • n8n
  • PHP
  • MySQL
  • Slack API
  • Webhooks

Have a similar workflow problem?

If this looks like the kind of system your business needs, the fastest way to start is a short discovery call.

Book a discovery call