After initiating a payment, persist the PaymentId (UK) or paymentId (Berlin Group) and a correlation to your internal order or transaction ID; do not treat the 201 Created response as payment execution — it confirms only that the initiation instruction was accepted
For UK Open Banking: poll GET /domestic-payments/{DomesticPaymentId} to retrieve status; map UK statuses (Pending, AcceptedSettlementInProcess, AcceptedSettlementCompleted, Rejected) to your internal state machine
For PSD2/Berlin Group: poll GET /payments/{paymentId}/status; map Berlin Group status codes (ACCP, ACSC, RJCT, PDNG, CANC) — ACSC (AcceptedSettlementCompleted) is the terminal success state
Register webhooks wherever the ASPSP or aggregator supports them; UK Open Banking event notifications use the /event-subscriptions and /events endpoints — subscribe to urn:uk:org:openbanking:events:resource-update events for payment objects
Implement a polling fallback with exponential backoff for ASPSPs that do not support push notifications; start with a 10-second interval and back off to a maximum of 5-minute intervals; set a hard timeout (e.g., 2 hours) after which you mark the payment as timed-out and alert operations
Reconcile completed payments against your order management system using the EndToEndIdentification (UK) or endToEndIdentification (Berlin Group) reference included in the payment initiation — this field passes through to the beneficiary bank statement
Known gotchas
AcceptedSettlementInProcess (ACSC in-progress) is NOT final settlement; funds are not guaranteed at this stage — only AcceptedSettlementCompleted (ACSC terminal) or UK AcceptedSettlementCompleted confirms irrevocable credit
Polling interval must respect the ASPSP's rate limits; some ASPSPs rate-limit status polling to a few calls per minute per consent — aggressive polling will result in 429 responses that mask genuine errors
Payment status terminology is inconsistent across UK Open Banking and Berlin Group; maintain a translation layer that maps raw ASPSP status strings to your canonical state machine rather than conditional logic scattered throughout your codebase
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