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... |
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 |
POST Request - Pre-/ Authorization
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
|
clearingtype
required
|
Fixed Value: sb
|
onlinebank
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 |
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" |
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 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
Specifies state / region of country for the customer. |
||||||
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 "@" 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 |
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_
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
|
Permitted Values
REDIRECT
ERROR
|
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 |
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
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
|
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. |
Permitted Values
APPROVED
PENDING
ERROR
|
Format NUMERIC(9..12)
The txid specifies the payment process within the PAYONE platform |
|||||||
Format LIST
Provides information about whether a settlement of balances has been carried out. |
Format NUMERIC(9..12)
The txid specifies the payment process within the PAYONE platform |
|
Format NUMERIC(6..12)
PAYONE User ID, defined by PAYONE |
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
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
|
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_
optional
|
Format LIST
Use account details from debtor's master data |
||||||
transaction_
optional
|
Format CHAR(1..50)
Permitted Symbols [0-9][A-Z][a-z][.-_/] Optional parameter for merchant information (per payment request) |
status |
Permitted Values
APPROVED
ERROR
|
txid |
Format NUMERIC(9..12)
The txid specifies the payment process within the PAYONE platform |
||||||
settleaccount |
Format LIST
Provides information about whether a settlement of balances has been carried out. |
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.
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.
The customer chooses the iDEAL payment method during the regular checkout, is then redirected to their bank and successfully completes the payment process.
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
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
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
Now you have an existing mandate and can collect repeatedly based on it in the future
IBAN | BIC |
---|---|
NL55INGB0000000000 |
INGBNL2A |