How to reconcile revenue across 8 brands monthly — the 90-minute close
- Revenue reconciliation across multiple brands is the job that tends to eat a full day every month and generate errors that only surface at tax time.
- With the right pipeline it is a 90-minute process, automated end-to-end except for the variance review.
- What reconciliation actually means across 8 brands You are matching four independent data sources per brand, per month:Storefront orders — Shopify, WooCommerce, or custom platform showing what customers paid.
On this page
Revenue reconciliation across multiple brands is the job that tends to eat a full day every month and generate errors that only surface at tax time. With the right pipeline it is a 90-minute process, automated end-to-end except for the variance review. This guide covers the build.
1. What reconciliation actually means across 8 brands
You are matching four independent data sources per brand, per month:
- Storefront orders — Shopify, WooCommerce, or custom platform showing what customers paid.
- Processor settlements — Stripe, Adyen, Authorize.Net showing what got authorized and captured.
- Bank deposits — what actually landed in the brand's LLC bank.
- Accounting ledger — QuickBooks, Xero, or NetSuite showing what was booked.
A clean month means all four sources agree within acceptable variance (usually <1% on fee allocation). An unclean month means fraud, bugs, refund timing mismatches, or bank holds you need to investigate.
2. The pipeline
Per brand, build four extractors that dump to a shared data warehouse or spreadsheet:
- Orders extractor: Shopify GraphQL
ordersquery (or WooCommerce REST/wp-json/wc/v3/orders) filtered to the close month. - Settlements extractor: Stripe Balance Transactions API, Adyen settlement details report, etc. Pull fees, refunds, chargebacks, net payout.
- Bank extractor: Plaid or manual CSV from bank. Match deposits against processor expected payouts.
- Ledger extractor: QuickBooks API or Xero API, pull the revenue account balance for the brand.
Dump all four into one table with columns: brand, source, date, amount, txn_id. Then reconcile by txn_id and date.
3. The four variance reports you actually need
Automate these and the close becomes review-only:
Report A: orders vs captures
Which storefront orders do not have a matching processor capture? Reasons:
- Authorized but not captured (held order, manual review)
- Capture failed
- Order was refunded before capture
- Test order on production store
Report B: captures vs settlements
Captures that have not yet settled. Usually 1-2 day lag. Anything older than 7 days is a problem.
Report C: settlements vs bank deposits
Processor says it paid $127,430 on the 15th. Bank says $127,385 landed on the 16th. $45 variance is usually a wire fee or a micro-deposit verification. Anything above $500 needs investigation.
Report D: bank deposits vs ledger
Did accounting book the revenue correctly? Common errors:
- Double-booked the deposit (once from Stripe sync, once manually)
- Booked gross when should be net of fees, or vice versa
- Wrong brand entity on the JE
4. Variance thresholds — what to investigate
- Under 0.5%: accept as fee rounding, move on.
- 0.5%-1%: log, investigate next month if it recurs.
- 1%-5%: investigate now. Usually a batch of unmatched refunds or a fee structure change.
- Over 5%: stop the close and find the cause. Either a genuine fraud/data issue or a broken data pipeline.
5. The 90-minute close process
- Minute 0-10: trigger the four extractors for all 8 brands. Parallel. Wait for completion.
- Minute 10-20: auto-generate the four variance reports per brand.
- Minute 20-60: review any brand with variance above the 1% threshold. Usually 1-2 brands per month.
- Minute 60-75: post month-end JEs in the accounting system for any timing adjustments.
- Minute 75-90: produce consolidated P&L across the 8 brands. Review top-line vs budget.
Working example: 8-brand nutra portfolio, $12M annual
Operator runs:
- 5 brands on Stripe standalone accounts
- 2 brands on a high-risk acquirer (CBD vertical)
- 1 brand on Adyen (international expansion)
Before automation: 8-10 hours per month, usually $2-4k of variance carried forward as "to investigate."
After automation: 75 minutes average close time. Variance carried forward typically under $500. Year-end audit time reduced by ~40 hours.
Tools that save time
- Fivetran or Airbyte for pulling processor + bank + storefront data into a warehouse.
- QuickBooks Online Multi-Entity or NetSuite for brand-level consolidation.
- Plaid for bank reconciliation.
- multiflow orchestration surfaces the four variance reports out of the box — one dashboard per brand plus consolidated view.
See the full multi-brand reconciliation playbook and consolidated close for 20 brands.
FAQ
Do I need a data warehouse? Above 4-5 brands, yes. Spreadsheets stop scaling.
What about refund timing across month-end? Book refunds to the original sale month, not the refund month. This is GAAP and matches your processor 1099-K reporting.
How do I handle chargeback timing? Chargebacks post in the month filed, not the month of the original transaction. Keep a separate chargeback aging report.
What if a brand uses multiple processors? Extract each processor independently, consolidate at the brand level before comparing to bank.
CTA
If your monthly close is taking more than 4 hours across your portfolio, we can build the pipeline. Apply to multiflow or see pricing.