You can add iDEAL to your existing integration. The following instructions show only what you must add to your integration specifically for iDEAL.
If an instruction on this page corresponds with a step in the main integration guide, it includes a link to corresponding step of the main integration guide.
Requirements
Requirement | Description | |
---|---|---|
Integration type | Make sure that you have an existing API-only integration. | |
Redirect handling | Make sure that your existing integration is set up to handle the redirect. action.type : redirect. |
|
Setup steps | Before you begin, add iDEAL in your Customer Area. |
How it works
- The shopper selects iDEAL as the payment method.
- The shopper enters their details in the payment form that you build.
- When you make the payment request, you include additional information about the items that the shopper intends to purchase.
- You fulfill the order by sending items to the shopper.
Build your payment form
Include fields to collect the following information from your shopper in the payment form.
You can download the logo for iDEAL to use in your form.
Get iDEAL as an available payment method
When you make the /paymentMethods to get available payment methods, specify the following so that iDEAL is included in the response.
Parameter | Values |
---|---|
countryCode | NL |
amount.currency | EUR |
amount.value | The value of the payment. |
Add additional parameters to your /payments request
When you make a payment, add the following parameters:
Parameter | Description |
---|---|
paymentMethod.type | ideal |
returnUrl | The URL where the shopper will be redirected back to after they complete the payment. This URL can have a maximum of 1024 characters. |
Handle the redirect
-
To complete the payment, redirect the shopper to the
action.url
returned in the /payments response, taking into account the following recommendations:-
When using the HTTP GET method:
For security reasons, when showing the redirect in the app, we recommend that you use SFSafariViewController for iOS or Chrome Custom Tabs for Android, instead of WebView objects. Also refer to the security best practices for WebView. -
Redirection for mobile integrations:
For mobile integrations, we strongly recommended that you redirect the shopper to the default browser of their device. Redirecting to the default browser ensures the best compatibility, handling of multi-factor authentication, app-to-app redirection, and error handling.
-
-
After the shopper is redirected back to your website, check the payment result by making a POST /payments/details request, specifying:
details
: object that contains the URL-decodedredirectResult
returned when the shopper was redirected back to your site.
-
In the response note the following:
resultCode
: use this to present the result to your shopper.pspReference
: our unique identifier for the transaction.
Recurring payments
Adyen supports recurring payments for iDEAL through SEPA Direct Debit. To make recurring payments, you need to:
1. Create a token
We strongly recommend that you request explicit permission from the shopper if you intend to make recurring SEPA payments. Being transparent about the payment schedule and the charged amount reduces the risk of chargebacks.
To create a token, include in your /payments request:
- amount: The transaction must have a minimum value of EUR 0.01.
- storePaymentMethod: true
- shopperReference: your unique identifier for the shopper (minimum length three characters). Do not include personally identifiable information (PII), such as name or email address.
- recurringProcessingModel: Subscription or UnscheduledCardOnFile
From Checkout v70,
recurringProcessingModel
is a required parameter when creating or using a token.
When the payment is settled, you receive a recurring.token.created webhook containing:
type
: recurring.token.createdshopperReference
: your unique identifier for the shopper.eventId
: thepspReference
of the initial payment.storedPaymentMethodId
: the token that you need to make recurring payments for this shopper.
Make sure that your server is able to receive the Recurring tokens life cycle events webhook. You can set up this webhook in your Customer Area.
2. Make a payment with a token
For each recurring payment for this shopper, make a SEPA payment to the /payments endpoint, specifying:
- paymentMethod.type: sepadirectdebit
- paymentMethod.storedPaymentMethodId: The
storedPaymentMethodId
from the recurring.token.created webhook. You can also get this value using the /listRecurringDetails endpoint. - shopperReference: the shopper ID you provided when you created the shopper token.
- shopperInteraction: ContAuth.
-
recurringProcessingModel: Subscription or UnscheduledCardOnFile.
From Checkout v70,
recurringProcessingModel
is a required parameter when creating or using a token.
For more information about the shopperInteraction
and recurringProcessingModel
fields, refer to Tokenization.
If the payment was successfully received, the response contains:
resultCode
: ReceivedpspReference
: a unique identifier for this transaction.
You can track whether the payment was successful using webhooks.
Store the shopper's preferred bank
iDEAL allows you to store the shopper's preferred bank. With stored bank details, the shopper is redirected from your checkout page to their bank without having to select it.
To store the shopper's preferred bank:
- Configure your webhook to include bank account details:
- Navigate to your CA > Developers > Webhooks.
- Next to your webhook, click the three-dot menu and select Edit webhook.
- Under Additional settings > Bank, click the Include Bank Account Details checkbox.
- At the bottom of the page, click Save configuration.
- When you receive the webhook with the Authorised iDEAL, store the Bank Identifier Code (BIC) field as the shopper's preferred bank.
Create a payment with the shopper's stored preferred bank
-
Present the stored bank to the shopper on your Checkout page.
-
In your /payments request, include
paymentMethod.issuer
, where theissuer
value is the BIC of the stored bank.
If a shopper with a stored preferred bank wants to pay with a different bank, make a payment as usual without paymentMethod.issuer
.
BICs for iDEAL partner banks
The available banks for iDEAL are different in the test and live environment:
Test and go live
The iDEAL test environment is unreliable and may not always work to test your changes. We recommend doing live penny tests to verify your integration.
Request iDEAL for the live environment
Before you can accept live payments, you need to add iDEAL in your live Customer Area.
Live Penny Testing
- Get a live bank account from one of the iDEAL issuers.
- Create an iDEAL payment on live and redirect to the iDEAL Payment Page.
- Scan the QR code on the iDEAL Payment Page or Click Select your bank to navigate to a list of issuers.
- Authorise the payment.
- Check the status of test payments in your live Customer Area > Transactions > Payments.
Testing on the Test environment
In case the iDEAL test environment is up and running, it may be possible to test using your test account. You are always redirected to a test payment page where you can simulate different iDEAL result codes.
On the payment page:
- Click Select your bank to navigate to a list of issuers.
- Select the TESTNL2A issuer.
-
Select the test simulation you want to run according to the following table:
Test simulation resultCode
producedSuccess Authorised Cancellation Canceled Cancellation before login Canceled Expiration Pending or Received Failure Refused
When possible, we recommend that you test each scenario before you go live, otherwise you should perform a Live Penny Test to verify your integration.
Check the status of test payments in your Customer Area > Transactions > Payments.