iDEAL

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

iDEAL provides a method to make purchases online through quick and easy bank transfers that are not only secure but guaranteed.

To start accepting iDEAL payments, please contact your customer success manager.

Process an iDEAL payment

iDEAL payments follow a two-step process:

Step 1: Authorize an iDEAL payment

The request

Use the details below to set up your request.

Endpoint live

https://api.checkout.com/payments

Endpoint sandbox

https://api.sandbox.checkout.com/payments

Header parameters

Header
Value

Authorization
Required

secret key

Use the valid secret key of your Checkout.com account. You can find this in the Hub.

Content-Type
Required

application/json

Body parameters

The table below describes the minimum recommended fields. You can find the full list, as well as complete request and response examples, in our API reference.

Field names
Description

source
Object
required

The source object.

source.type
String
required

The payment source type. Set this to ideal.

source.bic
String
required

The BIC. Also known as issuerId in iDEAL payments.
Should be 8 or 11 characters.

source.description
String
required

A description of the order. For example, an order reference number.
Should be 35 characters or fewer. Do not use special characters or HTML tags.

source.language
String
optional

The customer's preferred language (2-letter ISO 639-1 code).
If an unsupported language is entered, the standard language of the issuer is used.

amount
String
Optional

The payment amount. Omitting the amount or providing 0 will perform a card verification.

currency
String
required

The three-letter ISO currency code. Set this to EUR.

Request example

{
  "source": {
    "type": "ideal",
    "bic":"INGBNL2A",
    "description": "ORD50234E89",
    "language": "nl"
  },
  "amount": 2000,
  "currency": "EUR"
}

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.

The response

If a payment id is returned, then your request was successful.

Example response

{
  "id": "pay_yndlioum4gau3oizxihvzdgp4i",
  "status": "Pending",
  "customer": {
    "id": "cus_erquvsbcz2xunm5rrwd5clyfiy"
  },
  "_links": {
    "self": {
      "href": "https://api.sandbox.checkout.com/payments/pay_yndlioum4gau3oizxihvzdgp4i"
    },
    "redirect": {
      "href": "https://sandbox.checkout.com/LP.Core/api/payment/108659"
    }
  }
}

Step 2: Redirecting the customer

Redirect your customer to the redirect link’s href in the response to Step 1. 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.

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 an iDEAL payment

You can use the payment_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=sid_vii64oquze5u3h2x6hh4rurc4y) to retrieve details about the payment.

The request

Use the details below to set up your request.

Endpoint

Live

GEThttps://api.checkout.com/payments/{payment_id}

Sandbox

GEThttps://api.sandbox.checkout.com/payments/{payment_id}

Header and path parameters

Header
Value

Authorization
Required

secret key

Use the valid secret key of your Checkout.com account. You can find this in the Hub.

Content-Type
Required

application/json

Path
Value

payment_id
Required

The payment ID, found in the payment response, or the session ID from the success/failure URL.

The response

Response example

{
  "id": "pay_gx2pyzir3nzuhfmz7djlrxuhre",
  "requested_on": "2019-03-01T09:21:08Z",
  "source": {
    "type": "ideal",
    "description": "iDEAL Demo Payment",
    "bic": "INGBNL2A",
    "iban": "NL53INGB0654422370",
    "account_holder": "Hr E G H Küppers en/of MW M.J. Küppers-Veeneman"
  },
  "amount": 100,
  "currency": "EUR",
  "payment_type": "Regular",
  "status": "Captured",
  "approved": true,
  "risk": {
    "flagged": false
  },
  "customer": {
    "id": "cus_smscm3h2nqpe3obmau4djsqfam"
  },
  "_links": {
    "self": {
      "href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre"
    },
    "actions": {
      "href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre/actions"
    },
    "refund": {
      "href": "https://api.sandbox.checkout.com/payments/pay_gx2pyzir3nzuhfmz7djlrxuhre/refunds"
    }
  }
}     

Refund an iDEAL payment

iDEAL supports both partial and full refunds. You can refund a payment through the Hub or using the refund API.

Cancel an iDEAL payment

If the customer fails to complete their payment, we will automatically void the payment and send a payment_expired webhook.
If the customer cancels their payment, we will send payment_canceled webhook.

Get a list of supported issuers

Use the following request to get an up-to-date list of all issuers supporting iDEAL payments.

The request

Use the details below to set up your request.

Endpoints

Live

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

Sandbox

GEThttps://api.sandbox.checkout.com/ideal-external/issuers

Header parameters

Header
Value

Authorization
Required

public key

Use the valid public key of your Checkout.com account. You can find this in the Hub.

The response

Response example

{
  "countries": [
    {  
      "name": "Nederland",
      "issuers": [
        {
          "bic": "INGBNL2A",
          "name": "Issuer Simulation V3 - ING"
        },
        {
          "bic": "RABONL2U",
          "name": "Issuer Simulation V3 - RABO"
        }
      ]
    }
  ],
    "_links": {
      "self": {
        "href": "https://sbapi.ckotech.co/ideal-external-api/issuers"
      }
    }
}

Testing iDEAL

Test a payment request

Before testing, please ensure that your account has been enabled to support iDEAL payments. Contact your customer success manager for more information.

  1. Create an iDEAL transaction as above, following the redirect link in the response to the bank's website.

  2. Click "Confirm transaction".

  3. You should then be redirected to your predefined success URL.

Simulate payment states in sandbox

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

`amount` value
Simulated status

200

Cancelled

300

Expired

400

Pending

500

Failure on the iDEAL test environment

700

SO1000 Failure in system

Can we help?

Thanks for using Checkout.com. If you need any help or support, then message our support team at support@checkout.com.

iDEAL


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.