Integrate iDEAL and allow consumers to authorize payments from their online or mobile banking apps.

Payment Method Properties

Available country codesNL
Processing (Presentation) currenciesEUR
Settlement currenciesEUR
Consumer currenciesEUR
Channel member tagideal
Scheme name in the settlement fileIdeal
Minimum transaction amountEUR 0.01
Maximum transaction amountSubject to transaction approval from the consumer’s bank
Session timeout60 minutes
Refund Validity365 days
Integration TypeAsynchronous

Transaction Flow

  1. The consumer selects iDEAL as their preferred payment method.
  2. The consumer is redirected to a payment page where they are presented with an option to select their preferred bank or to scan a QR code.
  3. If:
    1. The consumer chooses a bank from the list, they are redirected to their online bank where they are requested to confirm the payment.
    2. The consumer scans their QR code, they must confirm the payment in the banking app.
  4. The merchant receives the payment confirmation.
  5. The merchant can ship the order/deliver the goods to the consumer.

iDEAL Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeRegexDescription
specin.bicOascii[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}Valid BIC. It can only contain 8 or 11 alphanumeric characters. Must be an iDEAL issuer’s BIC as listed below.

For standard input parameters, see Input parameters for the TRANSACTION call.

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
SPECOUT.PAYMENTPURPOSEasciiReflects what a consumer sees on the proof of payment
SPECOUT.SRCIBANasciiIBAN of the consumer’s account
SPECOUT.SRCBICasciiBIC of the consumer’s account

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input


TRANSACTION call output


Additional Information

Transaction state changes

Transactions may change from any state at any time. This change occurs especially from a FAILED to a SUCCEEDED state. SUCCEEDED is considered a stable state (see also Important note about transaction states).

Integration options

There are two integration options:

  1. Using a PPRO-hosted payment page
  2. By-passing the HPP and redirecting straight to the iDEAL supported banks

Using a PPRO-hosted payment page

If specin.bic is not provided, the consumer is redirected to a bank selection page.

Within the PPRO-hosted payment page, the consumer is either prompted to select a bank or scan the QR code.

The payment page adjusts to different screen sizes based on the device of the consumer:

  • Small mobile devices (<350px width): The bank list is rendered in a single column; no QR code; The transaction summary is above the bank list
  • Large mobile devices (350px - 1280px width): The bank list is rendered in two columns; no QR code; The transaction summary is above the bank list
  • Large screens (>1280px width): The bank list is rendered in 2 columns; the QR code is shown to the right of the bank list; the transaction summary is rendered above the QR code

By-passing the HPP and redirecting straight to the iDEAL supported banks

The second option requires you to send PPRO the BIC of each supported bank:

Bank NameBIC
Van Lanschot BaniersFVLBNL22
Triodos BankTRIONL2U

Branding Guidelines

For information regarding branding, see the iDEAL branding guidelines.


Why does the iDEAL bank-hosted checkout page break when using iframes?

iDEAL does not allow using iframes for rendering its flows. Many of the iDEAL banks will fail to render checkout elements or display errors during the process. The scheme’s rules strictly forbid the use of iframes. PPRO recommends not using iframes for any LPMs as iframes can be misleading or cause unexpected behavior with an LPM.

Why is an "invalid URL" error displayed at the bank’s checkout when using a mobile browser on iOS?

The error is being displayed because the consumer may have erroneously tapped the “open in [bankname] app” link/button during the bank’s iDEAL checkout process. The link/button is ultimately an app url (ex: INGNLBANK://) designed to invoke the bank’s own app to complete the payment. iOS can't handle these URLs if an app is not installed as a handler of the URL, therefore an error is emitted that the URL is not known.