Payment Page Redirect
Redirect the customer to the iDEAL experience hosted by their selected bank after creating a payment.
Payment workflow
For the full sequence diagram, see Payment workflow on the iDEAL overview.
Implementation flow
- Make a Payment API request.
- Receive the API response with
client_action = redirect. - Redirect your customer to the
URLprovided inaction_data. - The customer selects their bank, authenticates with their bank, and authorises the payment.
- The bank displays the payment result and redirects the customer back to your
success_urlorerror_url, depending on the outcome. - Receive asynchronous postback notifications to
postback_urlabout transaction status. Use the postback as the source of truth, as the redirect may arrive before or after the postback.
For a general walkthrough of credentials, authentication, and postbacks, see Get Started — Payment Page Redirect.
Create a payment
POST/rest/payment
/rest/paymentProduction URL
https://api.betterpayment.de/rest/paymentTest URL
https://testapi.betterpayment.de/rest/paymentpayment_typeStringrequiredidealorder_idStringrequiredAny alphanumeric string to identify the Merchant's order
amountFloatrequiredAmount of the transaction including all taxes and shipping fees
currencyStringrequired3 letter currency code
postback_urlStringrequiredThe URL for updates about transaction status are posted
success_urlStringrequiredWhere to redirect the user after a successful transaction
error_urlStringrequiredWhere 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 RequestHTTP
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_idStringID of the created transaction
payment_typeStringPayment type of the transaction
status_codeIntegerStatus code of the transaction
statusStringStatus of the transaction
order_idStringOrder ID of the transaction
messageStringOptional additional information about the transaction result
additional_transaction_dataStringAdditional 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.amountFloatAmount of the transaction
included_feesStringIncluded fees for the transaction
error_codeIntegerError code for the response
client_actionStringIndicates 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_dataObjectPresent 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 ResponseJSON
{
"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:
- In
Or use internet banking, clickSelect your bank. - Choose
TESTNL2Aas the bank. - Select the desired test simulation (success, cancellation, etc.).