Define a normalized settlement record schema with common fields: transaction ID, payment method type, gross amount, fee amount, net amount, currency, settlement date, and PSP-specific reference.
For Stripe, fetch balance transactions via the Balance Transactions API filtering by type and payout ID to get all transactions included in a given payout; map each record to your normalized schema.
For Adyen, download the settlement detail report (available as a CSV or via the Reports API) and parse the columns into your normalized schema, applying Adyen's fee breakdown structure.
Join normalized records against your order management system using the PSP's transaction reference stored at payment time to match every settlement record to an order.
Flag unmatched records (settlement records with no matching order) and unmatched orders (orders with no settlement record after the expected settlement window) for manual review.
Aggregate net settlement amounts by currency and payout date and compare against actual bank deposits to confirm end-to-end reconciliation.
Known gotchas
Stripe and Adyen use different timezone conventions in their reports; normalize all timestamps to UTC before joining records to avoid off-by-one errors on day boundaries.
Refunds and chargebacks appear as separate line items in settlement files, not as adjustments to the original transaction; your reconciliation logic must handle these as distinct record types.
Currency conversion fees appear as separate line items in Adyen's settlement reports but may be bundled differently in Stripe; account for both structures to avoid understating processing costs.
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