Adyen
Connect Adyen to collect cards in 33 currencies, embedded with Drop-in or on a hosted payment link, with webhooks doing the settling.
Adyen collects card payments worldwide. It offers both payment experiences: embedded, where Adyen's Drop-in form appears on your pages, or hosted, where customers pay on an Adyen payment link. Adyen is also the connectable gateway that settles Bahraini Dinar and Kuwaiti Dinar.
One thing makes Adyen different from the other gateways: payments confirm through webhooks, not on the page. When a customer finishes paying, the charge shows as processing until Adyen's webhook arrives, usually within seconds. That is why the webhook is part of connecting, not an optional extra, and charging stays off until it is configured.
Currencies
USD, EUR, GBP, JPY, INR, AUD, CAD, CHF, BHD, KWD, NGN, GHS, KES, ZAR, TZS, UGX, RWF, XAF, XOF, CZK, DKK, HKD, HUF, ILS, MXN, NOK, NZD, PHP, PLN, SEK, SGD, THB and TWD.
Connecting
Go to Settings, then Payment gateways, then Adyen. The wizard asks for:
- API key: in your Customer Area under Developers, then API credentials, from a web service user.
- Merchant account: the account code charges run under (Account, then Merchant accounts).
- Webhook HMAC key: under Developers, then Webhooks, on your standard webhook. Required: this is how every inbound event is authenticated, and Adyen settles payments through webhooks.
- Client key: only if you want the embedded experience; hosted-only setups can leave it blank.
Live mode asks for two more values, because Adyen gives every account its own live endpoint:
- Live URL prefix: the unique prefix from your live checkout endpoint, under Developers, then API URLs.
- Live region: for embedded payments, the region matching your live endpoint (Europe, US, Australia or Asia Pacific South East).
Account settings that matter
- Your merchant account must use immediate capture, which is Adyen's default. With manual or delayed capture, an authorisation would look like a payment before any money moves.
- Using the embedded experience, register your checkout page's domain under the client key's allowed origins in the Customer Area, or the form will not mount.
- For dispute closure events, enable "Include the originalReference for CHARGEBACK_REVERSED events" under the webhook's additional risk settings.
Saving cards and renewals
Cards are saved without a charge through a zero-value payment link, and a card used to pay is stored for renewals as part of the same payment. Renewals and automatic collection charge the stored card off session. Removing a card in yRecurring also removes it from Adyen.
Refunds and disputes
Refunds are asynchronous at Adyen: the refund shows as processing and confirms when Adyen's refund webhook arrives. See refunds. Chargebacks appear on the payment's activity trail automatically. When a dispute closes against you, the chargeback is recorded on the customer's account automatically (see refunds).
Test cards
| Card | Number | Notes |
|---|---|---|
| Visa, succeeds | 4111 1111 1111 1111 | any future expiry, CVC 737 |
| Mastercard, succeeds | 5555 4444 3333 1111 | CVC 737 |
| Declined | 4111 1113 1111 1111 | refused by issuer |
Limits
- Cards only.
- The webhook (with its HMAC key) is required before charging: without it, payments made on Adyen's pages could never confirm.
- Adyen's API only returns stored cards one shopper at a time, with no way to list every shopper, so yRecurring cannot fetch them for you. A migration from another billing system brings the token references in by file instead. See migrating saved payment methods.