Introduction

iDEAL is the most popular payment method in the Netherlands. It is an online bank transfer and thus enables a direct payment between bank accounts. For the payment, the customer is redirected to one of the participating Dutch banks. Here the customer then makes a transfer directly from their bank account. After the payment is done, the customer has no possibility to revoke the payment, therefore the merchant can immediately ship the goods without any risk.

iDEAL is increasingly used for paying energy bills, donations to charities, topping up call credits, payment requests, paying municipal taxes, traffic fines, etc...

Overview

iDEAL bank groups

Code Signification
ABN_AMRO_BANK

ABN Amro

ASN_BANK

ASN Bank

BUNQ_BANK

Bunq

ING_BANK

ING

KNAB_BANK

Knab

RABOBANK

Rabobank

REVOLUT

Revolut

SNS_BANK

SNS

SNS_REGIO_BANK

RegioBank

TRIODOS_BANK

Triodos Bank

VAN_LANSCHOT_BANKIERS

Van Lanschot Kempen

YOURSAFE

Yoursafe

NATIONALE_NEDERLANDEN

Nationale-Nederlanden

N26

N26

Integrations

POST Request - Pre-/ Authorization
Account Parameters
request
required
Fixed Value: preauthorization / authorization
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
Common Parameters
clearingtype
required
Fixed Value: sb
onlinebanktransfertype
required
Fixed Value: IDL
mode
required
Fixed Value: test/live
required
Fixed Value: NL
bankgrouptype
required
Format: Char XXX_XXX

See banklist above for all participating banks

reference
optional
Format CHAR(2..255)

A unique ID that will be displayed in your shop backend and for the customer

amount
required
Format NUMERIC(1..10)
Permitted values max. +/- 19 999 999 99

Specifies the total gross amount of a payment transaction.

Value is given in smallest currency unit, e.g. Cent of Euro.

The amount must be less than or equal to the amount of the corresponding booking.

currency
required
Format LIST
Permitted values ISO 4217 (currencies) 3-letter-codes
Samples

EUR

USD

GBP

narrative_text
optional
Format CHAR(1..81)

Dynamic text element on account statements
(3 lines with 27 characters each) and credit card statements.

successurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "payment successful"

errorurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "faulty payment"

backurl
required
Format CHAR(2..255)

Scheme <scheme>://<host>/<path>
       <scheme>://<host>/<path>?<query>
       
scheme-pattern: [a-zA-Z]{1}[a-zA-Z0-9]{1,9}

URL for "Back" or "Cancel"

PERSONAL DATA Parameters
customerid
optional
Format CHAR(1..20)
Permitted Symbols [0-9, a-z, A-Z, .,-,_,/]

Merchant's customer ID, defined by you / merchant to refer to the customer record.

"customerid" can be used to identify a customer record. 
If "customerid" is used then stored customer data are loaded automatically.
userid
optional
Format NUMERIC(6..12)

PAYONE User ID, defined by PAYONE

businessrelation
optional
Format LIST
value Comment
b2c

Indicates business to private customer

b2b

indicates business to business customer (company)

Value specifies business relation between merchant and customer

salutation
optional
Format CHAR(1..10)

The customer's salutation

title
optional
Format CHAR(1..20)
Samples

Dr.

Prof.

Dr.-Ing.

Title of the customer

firstname
optional
Format CHAR(1..50)

First name of customer; optional if company is used, i.e.: you may use

"company" or "lastname" or "firstname" plus "lastname"

lastname
required
Format CHAR(2..50)

Last name of customer; optional if company is used, i.e.: you may use

"company" or "lastname" or "firstname" plus "lastname"

company
optional
Format CHAR(2..50)

Comany name of customer; optional if company is used, i.e.: you may use

"company" or "lastname" or "firstname" plus "lastname"

street
optional
Format CHAR(1..50)

Street number and name (required: at least one character)

addressaddition
optional
Format CHAR(1..50)
Samples

7th floor

co Maier

Specifies an additional address line for the invoice address of the customer.

zip
optional
Format CHAR(2..50)
Permitted Symbols [0-9][A-Z][a-z][_.-/ ]

Postcode

city
optional
Format CHAR(2..50)

City of customer

country
required
Fixed Value DE
state
required
Format LIST
Permitted values ISO 3166-2 States (regions)  2-letter-codes
Samples US Samples CA
AK

AB

AL

BC

Specifies state / region of country for the customer.
"state" is required for these countries: US, CA, CN, JP, MX, BR, AR, ID, TH, IN and must not be used for all other countries.

email
optional
Format CHAR(5..254)

Mandatory if "add_paydata[shopping_cart_type]=DIGITAL"

Permitted Symbols RFC 5322

Special Remark email validation:

Max. length for email is 254 characters. Validation is set up in the following way: Username = Max. 63 characters

Domain Name = Max. 63 characters
Domain Suffixes = Max. 4 suffixes with max. 124 characters 
Example: username[63]@domain_name[63].suffix[60].suffix[60].suffix[4]

"@" and "." is counted as a character as well; in case of a total of three suffixes, this would allow a total of 254 characters.

email-address of customer

telephonenumber
optional
Format CHAR(1..30)

Phone number of customer

birthday
optional
Format DATE(8), YYYYMMDD
Samples

20190101

19991231

Date of birth of customer

language
optional
Format LIST
Permitted values ISO 639-1 (Language)2-letter-codes

Language indicator (ISO 639) to specify the language that should be presented to the customer (e.g. for error messages, frontend display).

If the language is not transferred, the browser language will be used. For a non-supported language English will be used.

vatid
optional
Format CHAR(1..50)

VAT identification number. Used for b2b transactions to indicate VAT number of customer.

gender
optional
Format LIST
Permitted values f / m/  d

Gender of customer (female / male / diverse* )

* currently not in use

personalid
optional
Format CHAR(1..32)
Permitted Symbols [0-9][A-Z][a-z][+-./()]

Person specific numbers or characters, e.g. number of passport / ID card

ip
optional
Format CHAR(1..39)

Customer's IP-V4-address (123.123.123.123) or IP-V6-address

Delivery data Parameters
shipping_firstname
required
Format CHAR(1..50)

First name of delivery address

shipping_lastname
required
Format CHAR(1..50)

Surname of delivery address

shipping_company
optional
Format CHAR(2..50)

Company name of delivery address

shipping_street
optional
Format CHAR(2..50)

Street number and name of delivery address

shipping_zip
required
Format CHAR(2..50)

Postcode of delivery address

shipping_addressaddition
optional
Format CHAR(1..50)

Specifies an additional address line for the delivery address of the customer, e.g. "7th floor", "c/o Maier".

shipping_country
optional
Format LIST
Permitted values ISO 3166 2-letter-codes
Samples

DE

GB

US

Specifies country of address for the customer.

Some countries require additional information in parameter "state"

shipping_state
required (in CN)
Format LIST
Permitted values ISO 3166-2 States (regions)  2-letter-codes
Samples US Samples CA
AK AB
AL BC
Response Parameters
Permitted Values
REDIRECT
ERROR
Response Data (Redirect)
txid
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

redirecturl
Redirect URL
Format NUMERIC(6..12)

PAYONE User ID, defined by PAYONE

Response parameters (error)
Format NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

Format CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded
Payload

aid=12345
mid=23456
portalid=12345123
key=abcdefghijklmn123456789
request=authorization
currency=EUR
encoding=UTF-8
mode=test
reference=asdf2q234werfaf
lastname=PM-Tester
firstname=Paul
country=NL
amount=1000
clearingtype=sb
bankcountry=NL
bankgrouptype=ING_BANK
onlinebanktransfertype=IDL
backurl=https://yourdomain.dev/return_back
successurl=https://yourdomain.dev/return_sucess
errorurl=https://yourdomain.dev/return_error
Response

redirecturl=https://www.banking.co.at/appl/ebp/logout/so/loginPrepare/eps.html?resource=2&demo=true&cai=%2BNMtoAXdSTWFUJxDMBOCxBJ1eb0wqE3Zfw63sAOSgSqg0PsYnMH--
status=REDIRECT
txid=943213864
userid=622493916
POST Request - Capture
Account Parameters
request
required
Fixed Value: capture
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
common Parameters
txid
required
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

sequencenumber
optional
Format NUMERIC(1..3)
Permitted values 0..127

Sequence number for this transaction within the payment process (1..n), e.g. PreAuthorization: 0, 1. Capture: 1, 2. Capture: 2

Required for multi partial capture (starting with the 2nd capture)

amount
required
Format NUMERIC(1..10)

Permitted values max. +/- 19 999 999 99

Specifies the total gross amount of a payment transaction.

Value is given in smallest currency unit, e.g. Cent of Euro; Pence of Pound sterling; Öre of Swedish krona.

The amount must be less than or equal to the amount of the corresponding booking.

currency
required
Fixed Value EUR
narrative_text
optional
Format CHAR(1..81)

Dynamic text element on account statements (3 lines with 27 characters each) and credit card statements.

Response Parameters
Permitted Values
APPROVED
PENDING
ERROR
Response Parameter (approved)
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

Format LIST 
Value Comment
yes

Settlement of outstanding balances has been carried out.

no

Settlement of outstanding balances has not been carried out.

Provides information about whether a settlement of balances has been carried out.

Response parameters (pending)
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

Format NUMERIC(6..12)

PAYONE User ID, defined by PAYONE

Response parameters (error)
Format NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

Format CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded
Payload
mid=23456 portalid=12345123 key=abcdefghijklmn123456789 api_version=3.10 mode=test request=capture encoding=UTF-8 txid=345678901 amount=300 currency=EUR
RESPONSE
status=APPROVED txid=345678901 settleaccount=no
POST Request - Debit
Account Parameters
request
required
Fixed Value: debit
mid
required
your merchant ID, 5-digit numeric
aid
required
your subaccount ID, 5-digit numeric
portalId
required
your Portal ID, 7-digit numeric
key
required
your key value, alpha-numeric
Common Parameters
txid
required
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

sequencenumber
required
Format NUMERIC(1..3)
Permitted values 0..127

Sequence number for this transaction within the payment process (1..n), e.g. PreAuthorization: 0, 1. Capture: 1, 2. Capture: 2

Required for multi partial capture (starting with the 2nd capture)

amount
required
Format NUMERIC(1..10)
Permitted values max. - 19 999 999 99

Specifies the total gross amount of a payment transaction.

Value is given in smallest currency unit, e.g. Cent of Euro; Pence of Pound sterling; Öre of Swedish krona.

The amount must be less than or equal to the amount of the corresponding booking.

currency
required
Fixed Value EUR
narrative_text
optional
Format CHAR(1..81)

Dynamic text element on account statements (3 lines with 27 characters each) and credit card statements.

clearingtype
optional
Fixed Value wlt
use_customerdata
optional
Format LIST
Value Comment
yes

Uses current account details from debtor's master data (default)

no

Uses the last known account details in the payment process

Use account details from debtor's master data

transaction_param
optional
Format CHAR(1..50)
Permitted Symbols [0-9][A-Z][a-z][.-_/]

Optional parameter for merchant information (per payment request)

Response Parameters
status
Permitted Values
APPROVED
ERROR
Response Parameter (approved)
txid
Format NUMERIC(9..12)

The txid specifies the payment process within the PAYONE platform

settleaccount
Format LIST 
Value Comment
yes

Settlement of outstanding balances has been carried out.

no

Settlement of outstanding balances has not been carried out.

Provides information about whether a settlement of balances has been carried out.

Response Parameter (error)
errorcode
Format NUMERIC(1..6)

In case of error the PAYONE Platform returns an error code for your internal usage.

errormessage
Format CHAR(1..1024)

In case of error the PAYONE Platform returns an error message for your internal usage.

customermessage
Format CHAR(1..1024)

The customermessage is returned to your system in order to be displayed to the customer.

(Language selection is based on the end customer's language, parameter "language")

Host: api.pay1.de
Content-Type: application/x-www-form-urlencoded
Payload
                    
mid=23456 portalid=12345123 key=abcdefghijklmn123456789 api_version=3.10 mode=test request=debit encoding=UTF-8 txid=345678901 sequencenumber=2 amount=-1000 currency=EUR
RESPONSE
status=APPROVED
txid=345678901 settleaccount=no

The iDEAL payment method does not provide a solution for payments in which the end customer is not involved. Recurring payments or merchant initiated payments are not possible with iDEAL alone. Therefore, it is necessary to add another payment method. Since iDEAL is an account-based payment method and the Netherlands is part of the EURO currency area, the SEPA direct debit procedure is a good choice. However, there are a few things to consider with this procedure.

You can find all the necessary information here - Special remarks - SEPA integration. The only alternative to the direct debit procedure would be payment by invoice.

Process Flow

In the following process flow, we assume that you have decided to use the digital collection of a mandate or you are using the PAYONE Payment Service and are therefore obliged to use the digital collection.

1
initial purchase

The customer chooses the iDEAL payment method during the regular checkout, is then redirected to their bank and successfully completes the payment process.

2
transaction status message

Subsequently, a transaction status message is sent to the URL stored in the PMI, which contains the customer's bank details - Parameter for the TransactionStatus query

3
create a pending mandate

With the help of this bank data you are able to create a pending mandate - CA - Create a mandate (managemandate) - and display the mandate text for confirmation to the customer when reaching the success page of your store

4
execute a pre-authorization

As soon as the mandate text has been confirmed by the customer, you need to execute a pre-authorization - SA - Initiating payment reservation (preauthorization) with any amount to persist the pending mandate

If you have no use for the pre-authorized amount, you can resolve it with a capture request with an amount of 0

5
Collection

Now you have an existing mandate and can collect repeatedly based on it in the future

Optional: If a customer leaves the site from iDEAL to the success page of the web shop, you have the option of using the PAYONE Link - Channel PAYONE Link - to subsequently perform the steps 3 and 4 of obtaining the mandate and the subsequent pre-authorization.
Test Data
Please notice that the amount in test mode is limited to 3900,00 Euro.
IBAN BIC

NL55INGB0000000000

INGBNL2A