iDEAL

Introduction

IDEAL Logo

iDEAL is an e-commerce payment method widely used in the Netherlands. Introduced in 2005, this payment method allows consumers to buy on the Internet using direct online transfers from their bank account, i.e. payments are made directly between bank accounts. iDEAL works together with leading Dutch banks using the banks' online banking systems to carry out payment transactions.

Since the introduction of SEPA, iDEAL payments may be carried out from and to all European bank accounts (in EUR). However, in order to enable consumers outside The Netherlands to use this payment method, their bank must have an iDEAL license from Currence, the trademark owner and supervisory authority for iDEAL.

Advantages for Merchants
  • When offering iDEAL in your online shop, a direct link is established with the systems of your own bank or online financial service provider.

  • Virtually risk-free: consumers may not reverse the payment (no chargeback).

  • Payments are credited to the merchant´s account as fast as any conventional credit transfer.

  • Paying via their own familiar banking environment reassures consumers of a high payment security and leads to a higher conversion rate.

Advantages for Consumers
  • Easy to access, simple to use and free of cost.

  • Very convenient since consumers use the same familiar environment as their bank´s online banking platform.

  • Consumer´s name and bank account number are not disclosed until consumer approves the payment.

  • Immediately after completing the purchase, the consumer receives a confirmation message.

  • The consumer´s online bank account summary is also updated.

  • No sensitive information is disclosed to the merchant.

General Information

Payment Mode, Countries and Currencies

This table illustrates which payment mode iDEAL belongs to. It also provides detailed information about the countries and currencies which are relevant for iDEAL.

Payment Mode

Online Bank Transfer

Countries

Netherlands

Currencies

EUR

Communication Formats

This table illustrates how iDEAL notifications are encoded and which formats and methods can be used for requests and responses.

Requests/Responses

Format

XML

Methods

POST

IPN Encodement

A signed XML document

Transaction Types

For transaction type details which are not given here, look at Appendix B: Transaction Types.

Transaction Type Description Link to samples

get-url

A transaction for initiating an iDEAL payment. As long as there is no notification from iDEAL there is only a get-url transaction.

See sample

debit

Transfer funds from the Account Holder to the Merchant. The debit will be created when notification for the transaction is received from IDEAL.

See sample

Reference Transaction
For additional information regarding the referenced transaction functionality, see Cross-Payment-Methods Referencing.

Test Credentials

URLs (Endpoints)

For transaction type get-url.

https://api-test.wirecard.com/engine/rest/paymentmethods/

Merchant Account ID (MAID)

4aeccf39-0d47-47f6-a399-c05c1f2fc819

Username

16390-testing

Password

3!3013=D3fD8X7

Secret Key

7a353766-23b5-4992-ae96-cb4232998954

Additional Test Credentials on iDEAL Environment

BIC

INGBNL2A

The transaction result depends on the requested amount

Requested Amount

Result

EUR 1.00

Success

EUR 2.00

Canceled

EUR 3.00

Expired

EUR 4.00

Forever pending transaction

EUR 5.00

Failure

Workflow

debit
The merchant sends a debit request to Wirecard and receives a response which contains the URL of the consumers online banking system to which the consumer must be redirected to. The consumer is redirected back to merchants shop after the transaction is approved and the merchant receives a payment notification from Wirecard.
image
  1. Consumer adds items to his/her shopping basket.

  2. Consumer selects iDEAL.

  3. The merchant sends a get-url request to Wirecard Payment Processing Gateway.

  4. Wirecard Payment Gateway processes and validates the transaction.

  5. Wirecard Payment Gateway forwards the request to iDEAL.

  6. iDEAL provides the URL of the consumer’s online banking account for payment verification.

  7. Wirecard Payment Gateway processes the response.

  8. Wirecard Payment Gateway redirects the consumer to the provided online banking URL.

  9. Consumer verifies the payment within the personal online banking system.

  10. iDEAL transfers funds from the consumer’s bank account to the merchant’s bank account.

  11. iDEAL redirects consumer to the merchant’s result page.

  12. iDEAL sends the transaction Status to Wirecard Payment Gateway (Wirecard Payment Gateway continuously queries for the payment status).

  13. Wirecard Payment Gateway processes the notification and sends the payment debit notification to the merchant.

  14. The merchant receives the notification with the payment result.

Fields

The fields used for iDEAL requests, responses and notifications are the same as the ReST API Fields. Please refer to the REST API field list. Only the fields listed below have different properties.

The following elements are mandatory (M) or optional (O) for a request/response/notification. If the respective cell is empty, the field is disregarded or not sent.

Field Request   Response Notification Data Type Size Description

bank-account.bic

M

M

xs:string

11

This is the BIC of the end-consumer. It can’t be used together with account-number/bank-code.

order-number

O

O

O

xs:string

35

This is the order number of the merchant. The following characters are allowed: a-z A-Z 0-9 +

descriptor

O

O

O

xs:string

35

Description on the settlement of the account holder’s account about a transaction. The following characters are allowed: umlaut space 0-9 a-z A-Z ' + , - .

success-redirect-url

M

M

M

xs:string

512

The URL to which the consumer will be re-directed after a successful payment. This is normally a success confirmation page on the merchant’s website.

Participating Banks

BIC

Name

ABNANL2A

ABN Amro Bank

ASNBNL21

ASN Bank

BUNQNL2A

bunq

HANDNL2A

Handelsbanken

INGBNL2A

ING

KNABNL2H

Knab

MOYONL21

Moneyou

RABONL2U

Rabobank

RGGINL21

Regio Bank

SNSBNL2A

SNS Bank

TRIONL2U

Triodos Bank

FVLBNL22

Van Lanschot Bankiers

Frieslandbank merged into Rabobank. They are now available as Rabobank.

Only the following banks can be used on http://api-test.wirecard.com and iDEAL sandbox:

  • RABONL2U (Rabobank)

  • INGBNL2A (ING)

Samples

XML Get-URL Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
    <request-id>03cfdf09-86eb-4956-945e-da9ba61d8052</request-id>
    <transaction-type>get-url</transaction-type>
    <requested-amount currency="EUR">1.23</requested-amount>
    <order-number>180516095533783</order-number>
    <descriptor>customer-statement</descriptor>
    <payment-methods>
        <payment-method name="ideal" />
    </payment-methods>
    <bank-account>
        <bic>INGBNL2A</bic>
    </bank-account>
    <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
    <locale>de</locale>
</payment>
XML Get-URL Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
 <merchant-account-id>4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
 <transaction-id>67bea562-baa8-40fb-8ac2-cd84d1b2840c</transaction-id>
 <request-id>03cfdf09-86eb-4956-945e-da9ba61d8052</request-id>
 <transaction-type>get-url</transaction-type>
 <transaction-state>success</transaction-state>
 <completion-time-stamp>2018-05-16T07:55:34.000Z</completion-time-stamp>
 <statuses>
  <status code="201.0000" description="The resource was successfully created." severity="information" />
 </statuses>
 <requested-amount currency="EUR">1.23</requested-amount>
 <order-number>180516095533783</order-number>
 <descriptor>customer-statement</descriptor>
 <payment-methods>
  <payment-method url="https://idealtest.secure-ing.com/ideal/issuerSim.do?trxid=0050000172511748&amp;ideal=prob" name="ideal" />
 </payment-methods>
 <bank-account>
  <bic>INGBNL2A</bic>
 </bank-account>
 <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
 <locale>de</locale>
</payment>
XML Debit Notification (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/4aeccf39-0d47-47f6-a399-c05c1f2fc819/payments/404894a2-fe56-4b79-8453-2935f78c0a6d">
 <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/4aeccf39-0d47-47f6-a399-c05c1f2fc819">4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
 <transaction-id>404894a2-fe56-4b79-8453-2935f78c0a6d</transaction-id>
 <request-id>03cfdf09-86eb-4956-945e-da9ba61d8052</request-id>
 <transaction-type>debit</transaction-type>
 <transaction-state>success</transaction-state>
 <completion-time-stamp>2018-05-16T08:01:55.000Z</completion-time-stamp>
 <statuses>
  <status code="201.1126" description="Successful confirmation received from the bank." severity="information" />
 </statuses>
 <requested-amount currency="EUR">1.230000</requested-amount>
 <parent-transaction-id>67bea562-baa8-40fb-8ac2-cd84d1b2840c</parent-transaction-id>
 <account-holder>
  <first-name>Hr</first-name>
  <last-name>E G H Küppers en/of MW M.J. Küpp</last-name>
 </account-holder>
 <order-number>180516095533783</order-number>
 <descriptor>customer-statement</descriptor>
 <payment-methods>
  <payment-method name="ideal" />
 </payment-methods>
 <bank-account>
  <iban>NL53INGB0654422370</iban>
  <bic>INGBNL2A</bic>
 </bank-account>
 <api-id>---</api-id>
 <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
 <locale>de</locale>
</payment>
XML Get-URL Request (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
    <merchant-account-id>4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
    <request-id>e530a6ca-fb93-4049-9c88-a8d6b9645f4b</request-id>
    <transaction-type>get-url</transaction-type>
    <requested-amount currency="EUR"/>
    <order-number>180516100904530</order-number>
    <descriptor>customer-statement</descriptor>
    <payment-methods>
        <payment-method name="ideal" />
    </payment-methods>
    <bank-account>
        <bic>INGBNL2A</bic>
    </bank-account>
    <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
    <locale>de</locale>
</payment>
XML Get-URL Response (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
 <merchant-account-id>4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
 <transaction-id>40f59357-21e6-4ef8-81e8-9e6cea6b37d6</transaction-id>
 <request-id>e530a6ca-fb93-4049-9c88-a8d6b9645f4b</request-id>
 <transaction-type>get-url</transaction-type>
 <transaction-state>failed</transaction-state>
 <completion-time-stamp>2018-05-16T08:09:04.000Z</completion-time-stamp>
 <statuses>
  <status code="400.1011" description="The Requested Amount has not been provided.  Please check your input and try again." severity="error" />
 </statuses>
 <requested-amount currency="EUR" />
 <order-number>180516100904530</order-number>
 <descriptor>customer-statement</descriptor>
 <payment-methods>
  <payment-method name="ideal" />
 </payment-methods>
 <bank-account>
  <bic>INGBNL2A</bic>
 </bank-account>
 <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
 <locale>de</locale>
</payment>
XML Debit Notification (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction" self="https://api-test.wirecard.com:443/engine/rest/merchants/4aeccf39-0d47-47f6-a399-c05c1f2fc819/payments/40f59357-21e6-4ef8-81e8-9e6cea6b37d6">
  <merchant-account-id ref="https://api-test.wirecard.com:443/engine/rest/config/merchants/4aeccf39-0d47-47f6-a399-c05c1f2fc819">4aeccf39-0d47-47f6-a399-c05c1f2fc819</merchant-account-id>
  <transaction-id>40f59357-21e6-4ef8-81e8-9e6cea6b37d6</transaction-id>
  <request-id>e530a6ca-fb93-4049-9c88-a8d6b9645f4b-get-url</request-id>
  <transaction-type>get-url</transaction-type>
  <transaction-state>failed</transaction-state>
  <statuses>
    <status code="400.1011" description="The Requested Amount has not been provided.  Please check your input and try again." severity="error" />
  </statuses>
  <requested-amount currency="EUR" />
  <parent-transaction-id>40f59357-21e6-4ef8-81e8-9e6cea6b37d6</parent-transaction-id>
  <order-number>180516100904530</order-number>
  <descriptor>customer-statement</descriptor>
  <payment-methods>
    <payment-method name="ideal" />
  </payment-methods>
  <bank-account>
    <bic>INGBNL2A</bic>
  </bank-account>
  <api-id>---</api-id>
  <success-redirect-url>http://someshop.com/success.html</success-redirect-url>
  <locale>de</locale>
</payment>
Custom URL: