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.

Overview

iDEAL payments follow a two-step process:

  1. Request a payment
  2. Redirect the customer

Request a payment 

The POST request

Use the details below to set up your request.

Endpoints

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

Header parameters

HeaderValue

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 nameDescription

source

OBJECT

REQUIRED

Details about the payment source.

source.type

STRING

REQUIRED

The payment source type. Set this to ideal.

source.bic

STRING

REQUIRED

The BIC. Also known as issuerId for iDEAL payments.

Eight or 11 characters.

source.description

STRING

REQUIRED

A description of the order. For example, an order reference number.

Up to 35 characters. Do not use special characters or HTML tags.

source.language

STRING

OPTIONAL

The customer's preferred language (two-letter ISO code).

If you enter an unsupported language, the default language of the issuer is used.

amount

INTEGER

OPTIONAL

The payment amount.

currency

STRING

REQUIRED

The currency in which the payment is being made (three-letter ISO 4217 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 POST 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"
    }
  }
}

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.

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 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 GET request

Endpoints

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

Header and path parameters

HeaderValue

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
PathValue

payment_id

REQUIRED

The payment ID found in the response of the initial response.

The GET 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_name": "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 a payment

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

Cancel a 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 GET request

Endpoints

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

Header parameters

HeaderValue

Authorization

REQUIRED

public key

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

The GET 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

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. Click Confirm transactionYou should then be redirected to your predefined success URL.

Simulate payment states

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 valueSimulated status
200Canceled
300Expired
400Pending
500Failure on the iDEAL test environment
700SO1000 Failure in system

Can we help?

Thanks for using Checkout.com. If you need help or have a question, message our Support team at support@checkout.com.