A Dutch customer expects iDEAL. A Belgian expects Bancontact. Someone in Shanghai expects WeChat Pay. Offering only cards quietly costs you the sale.
Every method hands off to the place the customer already trusts: their banking app, their wallet, a code they take to a cash machine. You send them to one URL and we take care of what happens there.
Methods your account is not enabled for are never shown, so a customer is not offered a route that cannot complete.
Change method and the rest of your integration stays as it
is. The response always carries a URL to send the customer to.
{
"id": "3743881d-0fce-416c-b3de-8bc3f5d414b1",
"object": "payment",
"status": "awaiting_customer",
"amount": 1050,
"currency": "EUR",
"method": "ideal",
"redirect_url": "https://ideal.example/pay/...",
"reference": "order-1001",
"livemode": true
}A customer returning to your success page means their browser came back. It does not mean the money moved. Every payment is confirmed by a signed webhook, retried for 24 hours, and safe to receive more than once.
{
"id": "evt_01H...",
"type": "payment.settled",
"created": "2026-08-21T13: 15: 26.438Z",
"data": { "payment_id": "3743881d-0fce-416c-b3de-8bc3f5d414b1" }
}Full or partial, within each scheme's own window. Where a method has no refund mechanism at all, the API says so rather than failing at the bank.
Close a payment the customer abandoned, before the bank has authorised it.
Every payment carries your reference and the bank's, so a query from either side resolves to the same transaction.