Call GET /v1/balance_transactions with parameters created[gte] and created[lte] for your settlement window, and limit set to 100; include type filters (e.g., type=payout or type=charge) if you want to narrow scope
Capture the has_more field and the last object's id; if has_more is true, repeat the request with starting_after set to that id to page through all records
For payout reconciliation specifically, filter by payout={payout_id} to retrieve only the balance transactions included in a specific payout batch
Sum the net amounts of all balance transactions associated with the payout and compare to the payout amount; a match confirms the payout is fully accounted for
Store each balance transaction's source (charge, refund, dispute) and fee breakdown for your GL posting; Stripe returns an array of fee objects with type and amount
Flag any balance transactions with type=adjustment or type=stripe_fee separately as they represent non-transaction-based debits that must be posted to distinct GL accounts
Known gotchas
Balance transactions use Stripe time (UTC); if your bank deposits show a different settlement date, reconcile on the payout's arrival_date, not the balance transaction created timestamp
Refunds and disputes create separate balance transactions with negative net amounts; do not double-count by also netting the original charge
The /v1/balance_transactions list endpoint reflects when items were posted to the Stripe balance, not when the underlying payment occurred — a charge authorized on day 1 may appear in a later payout window
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