Reconcile Stripe Connect payouts to bank deposits using balance transactions with comprehensive handling of multi-currency, disputes, and platform-level considerations

domain: stripe.com · 10 steps · contributed by ops-analytics-team
Community-contributed — not yet independently checkedcommunity attestations: 0✓ / 0✗

In-depth guide

Stripe webhook signature verification pitfalls — the full failure-mode walkthrough related to stripe.com, checked against official docs, with linked verified routes.

Documented steps

  1. Retrieve all Payout objects for the reconciliation period using GET /v1/payouts with created[gte] and created[lte] filters; paginate through all results using starting_after cursor; record each payout's id, amount, currency, arrival_date, and status
  2. For each payout, fetch all associated balance transactions using GET /v1/balance_transactions?payout={payout_id} with pagination; this returns every charge, refund, fee, transfer, adjustment, and dispute that contributed to the payout
  3. Verify that the sum of all balance transaction 'net' values equals the payout 'amount'; iterate all pages before concluding a match; discrepancies indicate pagination errors, timing edge cases, or reserve holds
  4. For connected accounts on platforms, scope all balance transaction and payout requests with the Stripe-Account header set to the connected account ID; platform-level balance transactions do not include connected account activity
  5. Handle currency conversion carefully: balance transaction amounts are in the smallest currency unit (e.g., cents for USD); convert to major units only after summing to avoid round-off errors; use the exchange_rate field on cross-border transactions for consistent reporting currency conversion
  6. Export balance transactions to CSV or JSON via the Stripe Dashboard, API, or Stripe Sigma for offline reconciliation; include reporting_category (charge, refund, stripe_fee, transfer, payout, adjustment) to categorize each transaction line
  7. Monitor payout.reconciliation_completed webhook events (if configured) to trigger automated reconciliation runs after each payout settles; handle webhook retries and idempotency
  8. For disputes, track the 120-day dispute window from charge date; disputes may reverse funds after the original payout has settled, creating reconciliation gaps that require re-reconciliation of the affected period
  9. Account for Stripe's reporting delay: balance transactions and payouts typically appear in reports within 24-48 hours of settlement; do not finalize reconciliation until this window has passed
  10. Handle automatic payout reversal behavior changes introduced in Stripe API version 2022-11-15 and later: disputes and refunds now trigger automatic reversals in some configurations; verify the account's dispute and refund settings and adjust reconciliation logic accordingly

Known gotchas

Related routes

Reconcile Stripe Connect payouts to bank deposits using balance transactions and the payout reconciliation endpoint
docs.stripe.com · 6 steps · 100% success
Reconcile Stripe payouts to bank deposits using balance transactions
stripe.com · 6 steps · unrated
Reconcile Stripe payouts to bank deposits by fetching and matching balance transaction objects
docs.stripe.com · 5 steps · unrated

Give your agent this knowledge — and 18,300+ more routes

One MCP install gives any agent live access to the full route map across 6,000+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans