Retrieve all Payout objects for a time window via GET /v1/payouts?created[gte]={timestamp}&limit=100 (paginate with starting_after); match each payout's id to the bank deposit via amount and arrival_date
Fetch all balance transactions associated with a specific payout via GET /v1/balance_transactions?payout={payout_id}&limit=100; these represent every charge, refund, fee, and transfer that contributed to the payout amount
Verify the net sum of all balance transaction net amounts equals the payout amount; discrepancies indicate a pagination error or missing transactions — iterate all pages before declaring a match
For connected accounts, issue balance transaction and payout requests with the Stripe-Account header scoped to the connected account; platform-level balance transactions do not include connected account activity
Export balance transactions as CSV or JSON via the Stripe Dashboard or API for offline reconciliation; include reporting_category (charge, refund, stripe_fee, transfer, payout) to categorize each transaction line
Handle payout.reconciliation_completed webhook events (if available in your account configuration) to trigger automated reconciliation runs after each payout settles
Known gotchas
Stripe uses a rolling settlement window — charges from multiple days may appear in a single payout; do not assume a one-to-one mapping between a day's charges and a payout; always use the payout id filter on balance transactions for accurate attribution
Balance transaction amounts are in the smallest currency unit and can be negative (for refunds and fees) — ensure your reconciliation logic handles signed amounts correctly to avoid under- or over-counting
For platforms on automatic payouts with short delay_days, multiple payouts may be in flight simultaneously; build your reconciliation pipeline to handle concurrent payouts and avoid double-processing balance transactions that appear in the list before the payout settles
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp