Skip to main content

iDEAL

Description

iDEAL is the most popular online payment method in the Netherlands, allowing users to pay directly from their bank account through a secure, real-time transfer. It's fast and offers immediate payment confirmation.

Availability

Netherlands.

Transaction Types

Payment Flow

Example iDEAL redirect experience

API Implementation

Required value for payment_type parameter: ideal.

Payment Page Redirect

Redirect the customer to the iDEAL experience hosted by their selected bank after creating a payment.

Implementation flow:

  1. Make a Payment API request.
  2. Receive the API response with client_action = redirect.
  3. Redirect your customer to the URL provided in action_data.
  4. The customer selects their bank, authenticates with their bank, and authorises the payment.
  5. The bank displays the payment result and redirects the customer back to your success_url or error_url, depending on the outcome. You will also receive asynchronous postbacks with the payment status. Use the postback as the source of truth, as the redirect may arrive before or after the postback.

Payment API

Payment API Request

payment_typeStringrequired
ideal
order_idStringrequired
Any alphanumeric string to identify the Merchant's order
amountFloatrequired
Amount of the transaction including all taxes and shipping fees
currencyStringrequired
3 letter currency code
postback_urlStringrequired
The URL for updates about transaction status are posted
success_urlStringrequired
Where to redirect the user after a successful transaction
error_urlStringrequired
Where to redirect the user after a failed transaction
This example includes only the minimum required parameters to create an iDEAL payment. See the Create Payment API reference for the full list of supported parameters.
Example Request
POST /rest/payment
Authorization: Basic <base64(api_key:api_password)>
Content-Type: application/json
{
"payment_type": "ideal",
"order_id": "IDEAL-12345",
"amount": "29.90",
"currency": "EUR",
"postback_url": "https://your-postback.url.com",
"success_url": "https://your-success.url.com",
"error_url": "https://your-error.url.com"
}

Payment API Response

transaction_idString
ID of the created transaction
payment_typeString
Payment type of the transaction
status_codeInteger
Status code of the transaction
statusString
Status of the transaction
order_idString
Order ID of the transaction
messageString
Optional additional information about the transaction result
additional_transaction_dataString
Additional transaction data provided by you. This will be shown in the dashboard as well as when you query for transaction data. It will also be sent back to your postback_url as part of the postback data.
amountFloat
Amount of the transaction
included_feesString
Included fees for the transaction
error_codeInteger
Error code for the response
client_actionString
Indicates the required client-side action after a payment request. Possible values: redirect (redirect to the url in action_data) or postform (build and submit a POST form using the data in action_data). When not returned, no client-side action is required.
action_dataObject
Present when client_action is specified. Contains: url (target URL of the action) and, in case of a postform, fields (key/value pairs of the data to be posted).
Example Response
{
"transaction_id": "6c2e7e30-b741-4c5e-bc50-91dffdf0e5fb",
"payment_type": "ideal",
"status_code": 1,
"status": "started",
"order_id": "IDEAL-12345",
"message": null,
"additional_transaction_data": null,
"amount": 29.9,
"included_fees": "0.00",
"error_code": 0,
"client_action": "redirect",
"action_data": {
"url": "https://testapi.betterpayment.de/ideal/6c2e7e30-b741-4c5e-bc50-91dffdf0e5fb"
}
}

Postbacks

For the full list of payment postback fields, see the Payment API. For retry policy and signature verification, see Postbacks.

Test Data

Follow these steps to trigger the iDEAL sandbox flow:

  1. In Or use internet banking, click Select your bank.
  2. Choose TESTNL2A as the bank.
  3. Select the desired test simulation (success, cancellation, etc.).