iDEAL
iDEAL is by far the most popular payment method in the Netherlands. There are no chargebacks and faster settlement times as iDEAL is a bank-to-bank transfer, covered by all major Dutch consumer banks.
Features
Available country codes | NL |
---|---|
Processing currencies | EUR |
Settlement currencies | EUR |
Minimum transaction amount | 0.01 EUR |
Maximum transaction amount | Subject to transaction approval from the consumer’s bank |
Refunds | ✅ |
Refund validity | 365 days |
Chargeback | ❌ |
Integration Method
Payment method enumeration values:ideal
There are two integration methods for iDEAL
- Direct API
- Checkout
Direct API
How to integration
For direct API integration, you can create a PaymentIntent and get url in only one step. The following is the demo of creating payment intent:
A PaymentIntent is an object that represents your intent to collect payment from your customer and tracks the lifecycle of the payment process. Create a PaymentIntent on your server and specify the amount to collect and a supported currency. If you have an existing Payment Intents integration, add iDEAL to the list of payment method types.
Please note that for this payment method, you need to specify the country in billing_details.address
as Netherlands, which country code is NL
.
Request
{
"amount": 2000,
"currency": "EUR",
"confirm": true,
"payment_method_data": {
"type": "ideal",
"billing_details": {
"address": {
"country": "NL"
},
"firstName": "Anthony",
"lastName": "VDK"
}
},
"merchant_order_id": "id_XXXXXXX",
"return_url": "https://XXXX.XXXX"
}
Response
{
"id": "pi_1729469366946234368",
"object": "payment_intent",
"created": 1701172604000,
"livemode": false,
"currency": "EUR",
"amount": 2000,
"status": "requires_action",
"merchant_order_id": "id_XXXXXXX",
"client_secret": "pi_1729469366946234368_secret_hhO53N5LZyOcWHuaDn3BZLnh",
"next_action": {
"type": "ideal_handle_redirect",
"ideal_handle_redirect": {
"url": "https://r3.girogate.de/ti/simideal?tx=2162055858&rs=b2tsas0LfwxxNW6cxYnNzsnJIHeDPFwl&cs=a4c7bacb35015bddd31b5f1786c8ca241226c4a4e323ac7b6c4accb420b6043f"
}
},
"payment_method_types": [
"ideal"
],
"confirmation_method": "automatic",
"return_url": "https://XXXX.XXXX",
"payment_method": "pm_1729469366799433728",
"capture_method": "automatic"
}
Checkout
Payment flow
- Customer selects iDEAL from the list of payment methods available and clicks on the Pay botton
- Customers will be redirected to iDEAL's page
- Customers select their bank and approve payment
Create a Session
Request Create a Session
{
"cancel_url": "www.wooshpay.com",
"mode": "payment",
"success_url": "https://wooshpay.com/",
"payment_method_types": [
"ideal"
],
"payment_intent_data":{
"billing_details":{
"address":{
"country":"NL"
}
}
},
"line_items": [
{
"price_data": {
"currency": "EUR",
"unit_amount": 2000,
"product_data": {
"id": null,
"name": "apple",
"description": "very delicious",
"url": "www.wooshpay.com"
},
"billing_scheme": "testscheme",
"lookup_key": "test_lookup_key"
},
"quantity": 1
}
]
}
Response
{
"id": "cs_1729471425581940736",
"object": "checkout.session",
"created": 1701173095000,
"livemode": true,
"currency": "EUR",
"customer": "",
"mode": "payment",
"status": "open",
"url": "https://checkout.wooshpay.com/pay/cs_1729471425581940736?key=cGtfbGl2ZV9OVEUxT0RrNU5UWTJOak01TkRFMk5qUTNOamd4T21WR2VWWjJlSG8yVjNoWGEwTm9ZbkUxYkU1VU0zWk5SakUyTmpjNU1UQXhPRE16TXpFPQ==",
"cancel_url": "www.wooshpay.com",
"line_items": {
"object": "list",
"data": [
{
"id": "li_1729471425607106560",
"object": "item",
"currency": "EUR",
"description": "apple",
"price": {
"id": "price_1729471425615495168",
"object": "price",
"created": 1701173095000,
"livemode": true,
"active": false,
"currency": "EUR",
"product": {
"id": "prod_1729471425623883776",
"object": "product",
"created": 1701173095000,
"livemode": true,
"active": false,
"description": "very delicious",
"name": "apple",
"url": "www.wooshpay.com",
"updated": 1701173095000
},
"type": "one_time",
"unit_amount": 2000,
"billing_scheme": "per_unit",
"lookup_key": "test_lookup_key"
},
"quantity": 1,
"amount_subtotal": 2000,
"amount_total": 2000
}
]
},
"payment_intent": "pi_1729471428119494656",
"payment_method_types": [
"ideal"
],
"payment_status": "unpaid",
"success_url": "https://wooshpay.com/",
"amount_subtotal": 2000,
"amount_total": 2000,
"billing_address_collection": "auto",
"expires_at": 1701259494543,
"payment_link": "",
"client_secret": "pi_1729471428119494656_secret_lZ2kwASrV5VH6i2BSPTU1xDI"
}
Next step
You can add more features to your integration as needed
Create a Webhook
Listen to events on your WooshPay account so your integration can automatically trigger reactions. Create a webhook that mainly focuses on enabled_events and url.
Create a Refund
Create a refund to repay funds to your customer. You can also perform partial refunds, but not every payment method supports them. A partial refund is when you refund only part of the original transaction amount.