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:

  1. Request an iDEAL payment
  2. Redirect the customer

Step 1: Request 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: Redirect 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 cko-session-id expires 15 minutes after being created.

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

If the payment has been captured, the response will include the bic, iban, and account_holder_name fields.

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

🚧

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.
  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

Canceled

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 [email protected].