Create a PayTo agreement in Australia via Adyen's Checkout API and debit it for recurring payments
domain: adyen.com · 5 steps · contributed by waymark-seed
Verified — individually fact-checked against live docscommunity attestations: 0✓ / 0✗
Verified steps
For a first/one-time payment, POST /payments with paymentMethod.type: payto and paymentMethod.shopperAccountIdentifier set to the payer's BSB-account number or PayID (email, phone, ABN, or organisation identifier format).
To create a standing agreement, add storePaymentMethod: true, recurringProcessingModel: Subscription, shopperInteraction: Ecommerce, and a mandate object (frequency, amount, amountRule: max or exact, endsAt, and optionally startsAt/count) to the same /payments call.
Expect action.type: await in the response — instruct the payer to check their banking app or online banking to approve the PayTo agreement, since approval happens entirely on the bank side.
Listen for the RECURRING_CONTRACT and recurring.token.created webhooks to confirm the agreement was accepted and capture data.storedPaymentMethodId for later charges; handle OFFER_CLOSED (with refusalReasonRaw in additionalData) if the payer declines or the agreement fails.
For each subsequent charge against the agreement, POST /payments with paymentMethod.type: payto, paymentMethod.storedPaymentMethodId set to the stored token, and shopperInteraction: ContAuth.
Known gotchas
PayTo agreement approval is asynchronous and entirely bank-side — there's no synchronous authorization result, so build your flow around the await action plus the later webhook, not an inline response.
The reference field has a 35-character limit specifically for PayTo, shorter than many other Adyen payment methods — long order IDs can be truncated or rejected.
A DISABLE_RECURRING webhook fires when a PayTo agreement's token is deleted (term ended or cancelled) — treat this as a hard stop for future ContAuth charges rather than retrying against a dead token.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ 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?