Skip to content

Last updated: January 25, 2023

Start accepting payments using iDEAL, a favorite online payment method in The Netherlands.

iDEAL payments are made through direct online transfer from the customer's bank account to your merchant bank account. Customers can use their mobile banking app or online banking environment. As soon as a payment is made, iDEAL sends you an online payment guarantee so you can deliver goods and services right away.

Information

To start accepting iDEAL payments, please contact your Customer Success Manager.


Overview

iDEAL payments follow a this process:

  1. Get list of supported issuers
  2. Request a payment
  3. Redirect the customer
  4. Consume webhook notification with the result of the payment
  5. Refund a payment

Get a list of supported issuers

Use the following request to get an up-to-date list of all issuers supporting iDEAL payments. To get a detailed view of all required and optional fields, see our API reference.

Endpoints

get

https://api.checkout.com/ideal-external/issuers

Response example

1
{
2
"countries": [
3
{
4
"name": "Nederland",
5
"issuers": [
6
{
7
"bic": "INGBNL2A",
8
"name": "Issuer Simulation V3 - ING"
9
},
10
{
11
"bic": "RABONL2U",
12
"name": "Issuer Simulation V3 - RABO"
13
}
14
]
15
}
16
],
17
"_links": {
18
"self": {
19
"href": "https://sbapi.ckotech.co/ideal-external-api/issuers"
20
}
21
}
22
}

Request a payment

Use the details below to set up your request. To get a detailed view of all required and optional fields, see our API reference.

Endpoints

post

https://api.checkout.com/payments

Request example

1
{
2
"source": {
3
"type": "ideal",
4
"bic":"INGBNL2A",
5
"description": "ORD50234E89",
6
"language": "nl"
7
},
8
"amount": 2000,
9
"currency": "EUR"
10
}

Information

If a customer ID or email is not provided in the request, then we automatically create a customer profile and return the customer id in the response.

Response example

If you receive a 202 Success response with a payment id and a status field set to Pending, your request was successful.

1
{
2
"id": "pay_yndlioum4gau3oizxihvzdgp4i",
3
"status": "Pending",
4
"customer": {
5
"id": "cus_erquvsbcz2xunm5rrwd5clyfiy"
6
},
7
"_links": {
8
"self": {
9
"href": "https://api.sandbox.checkout.com/payments/pay_yndlioum4gau3oizxihvzdgp4i"
10
},
11
"redirect": {
12
"href": "https://sandbox.checkout.com/LP.Core/api/payment/108659"
13
}
14
}
15
}

Redirect the customer

Redirect your customer to the redirect link’s href in the above response. The redirect transfers the customer to their bank's website where they are required to enter their authorization details; if successful, the payment can be approved.

Note

For security reasons, iDEAL forbids using custom-made in-app browsers for redirection. We recommend that you open the device’s default browser to display the redirect. If you do want to use an in-app web view, you must use SFSafariViewController for iOS or Chrome Custom Tabs for Android.

Once completed, the customer is transferred to your predefined success or failure URL. Confirmation of an iDEAL payment is communicated only through webhooks. When you receive a payment_captured webhook notification, the transaction has been completed successfully. Until the payment_captured webhook is received (response code 10000), all payments are labeled as Pending.


Get details about a payment

You can use the id found in the payment response, or the cko-session-id from the success/failure URL (e.g., https://www.checkout.com/order/succeeded?cko-session-id=) to retrieve details about the payment. To get a detailed view of all required and optional fields, see our API reference.

Note

The cko-session-id expires 15 minutes after being created.

Endpoints

get

https://api.checkout.com/payments/{id}

Response example

1
{
2
"id": "pay_gx2pyzir3nzuhfmz7djlrxuhre",
3
"requested_on": "2019-03-01T09:21:08Z",
4
"source": {
5
"type": "ideal",
6
"description": "iDEAL Demo Payment",
7
"bic": "INGBNL2A",
8
"iban": "NL53INGB0654422370",
9
"account_holder_name": "Hr E G H Küppers en/of MW M.J. Küppers-Veeneman"
10
},
11
"amount": 100,
12
"currency": "EUR",
13
"payment_type": "Regular",
14
"status": "Captured",
15
"approved": true,
16
"risk": {
17
"flagged": false
18
},
19
"customer": {
20
"id": "cus_smscm3h2nqpe3obmau4djsqfam"
21
},
22
"_links": {
23
"self": {
24
"href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre"
25
},
26
"actions": {
27
"href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre/actions"
28
},
29
"refund": {
30
"href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre/refunds"
31
}
32
}
33
}

Cancel a payment

If the customer fails to complete their payment, we will automatically void the payment in 10 minutes and send a payment_expired webhook.

If the customer cancels their payment, we will send a payment_canceled webhook.


Webhooks

When using iDEAL, you may receive the following webhooks.

WebhookDescription

payment_pending

Occurs when a payment request has successfully initiated.

payment_capture_pending

Occurs when the customer has approved the payment on the banking page.

payment_captured

Occurs when a capture is successful.

payment_capture_declined

Occurs when a capture is declined.

payment_canceled

Occurs when the customer has canceled the payment or the payment has failed.

payment_expired

Occurs when the payment has expired.

payment_refund_pending

Occurs when a refund request has successfully initiated.

payment_refunded

Occurs when a refund is successful.

payment_refund_declined

Occurs when a refund is declined.


Refund a payment

iDEAL supports both partial and full refunds. You can refund a payment through the Dashboard or using the refund endpoint of the Unified Payments API.


Testing iDEAL

Note

To start testing, you'll need to:

  • create a test account, and
  • contact your Customer Success Manager or integrations engineer to activate iDEAL payments in the sandbox environment.

Test a payment request

  1. Create an iDEAL transaction as above, following the redirect link in the response to the bank's website.
  2. Select Confirm transaction. You should then be redirected to your predefined success URL.

Note

When you test a payment refund, the transaction is likely to remain in a deferred refund state. Contact us at support@checkout.com to request triggering a simulation batch job that ensures the completion of the refund.


Simulate payment states

In the sandbox environment, you can test different payment states by entering one of the following values in the amount field of your payment request.

`amount` valueSimulated status

200

Canceled

300

Expired

400

Pending

500

Failure on the iDEAL test environment