Processing iDEAL Transactions
This section provides the information you need in order to process a iDEAL
transaction.
The iDEAL payment method allows for the following processes:
- Requesting Options
- Processing a Sale
- Refunding a Payment
- Checking a Transaction Status
Request Options
The options service retrieves a list of bank option IDs and bank names which you can
display to the customer on your web site.
Request the options service once each day, at any time, to retrieve the list of bank
names. Each name represents the bank identification code (BIC, also known as a
swift code
) associated with the bank and is prefixed with ideal
,
for example: ideal-BUNQNL2A.Cybersource
recommends caching the information and displaying the
bank name to the customer in a drop-down menu on your checkout page. The customer
chooses the iDEAL payment method and chooses their bank from the list of options
that you have cached.A list of all available banks can be displayed in a drop-down menu in any order you
choose.
Cybersource
recommends displaying the following six bank
names and their logos at the top of the list:- ING Bank
- Rabobank
- ABN AMRO
- SNS Bank
- ASN Bank
- Triodos Bank
When a customer chooses a bank on your web site, you must include the associated
option ID in the sale request (see Processing a Sale). This
returns a bank redirect URL, which steers the customer to the bank they have chosen.
If the option ID is not included in the sale request, the bank redirect URL directs
the customer to a bank selection page.
Endpoints
Set the
apOptionsService_run
field to
true
, and send the request to one of these
endpoints:Production:
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
Test:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor
Required Fields for Requesting Options
- apPaymentType
- Set toIDL.
- apOptionsService_run
- Set totrue.
- merchantID
- merchantReferenceCode
Example: Requesting Options
Processing a Sale
A sale transaction combines an authorization and a capture into a single transaction.
The sale service responds with the redirect URL for the customer’s bank. The
customer is directed to the URL to confirm their payment details.
The sale service requires you to include three redirect URLs in request. The URL to which
the customer is directed is determined by the result of the sale process:
- successURL
- Set to the URL to which the customer is redirected after completing a payment. Do not use this URL to confirm a payment because the reply is not signed and it could be tampered with.Cybersourcerecommends that the success URL link to a static web page with text that tells the customer their payment is being processed. A follow-up email or web page can then be used to inform them when their payment is successful.
- cancelURL
- Set to the URL to which the customer is redirected after canceling a payment or closing the browser.
- failureURL
- Set to the URL to which the customer is redirected when a payment fails because of insufficient funds or because the issuer declines it.
Cybersource
can update your
configuration settings to include the success, cancel, and failure URLs in your Cybersource
service requests. To update your configuration to include these
URLs, contact your Cybersource
account representative.Endpoints
Set the
apSaleService_run
field to
true
, and send the request to one of these
endpoints:Production:
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
Test:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor
Required Fields for a Sale
The type of
Cybersource
merchant account you have determines which
API fields are required.- apPaymentType
- Set toIDL.
- apSaleService_cancelURL
- Required when yourCybersourceaccount does not include this value.
- apSaleService_successURL
- Required when yourCybersourceaccount does not include this value.
- apSaleService_failureURL
- Required when yourCybersourceaccount does not include this value.
- apSaleService_run
- Set totrue.
- invoiceHeader_merchantDescriptor
- merchantID
- merchantReferenceCode
- purchaseTotals_currency
- purchaseTotals_grandTotalAmount
Required Fields for Cybersource Settlement Services
Accounts
Cybersource
Settlement Services
AccountsIf you have a
Cybersource
Settlement Services Account, include these
required fields in addition to the required fields listed above.- billTo_city
- billTo_country
- billTo_firstName
- billTo_lastName
- billTo_street1
Example: Processing a Sale
Refund a Payment
A refund is linked to a capture or sale. Bancontact transaction support:
- Refunds of payments that have a status of settled.
- Partial refunds and multiple refunds.
- Refunds for the original payment amount and the addition of 25 EUR. If the original payment amount was 45 EUR, you can refund up to 70 EUR.
The refund service request is a follow-on request that uses the request ID value returned
in the sale service reply. The request ID value links the refund transaction to the
original payment transaction.
Before refunding a payment and returning funds to the customer account, the payment
status must be settled. You must request a refund within 180 days of the
authorization.
Endpoints
Set the
apRefundService_run
field to
true
, and send the request to one of these
endpoints:Production:
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
Test:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor
Required Fields for Refunding a Payment
- apPaymentType
- Set toIDL.
- apRefundService_refundRequestID
- Include the value of therequestIDfield that was returned in the sale service reply.
- apRefundService_run
- Set totrue.
- merchantID
- merchantReferenceCode
- purchaseTotals_currency
- Set toEUR.
- purchaseTotals_grandTotalAmount
Required Fields for Cybersource Settlement Services
Accounts
Cybersource
Settlement Services
AccountsIf you have a
Cybersource
Settlement Services Account, include these
required fields in addition to the required fields listed above.- billTo_city
- billTo_country
- billTo_firstName
- billTo_lastName
- billTo_street1
Example: Refunding a Payment
Check Transaction Status
Request the check status service when the authorization status is pending.
The check status service returns the latest status of a transaction. The request ID links
the check status request to the payment or refund transaction.
- To check the status of the sale service, include the request ID value returned in the sale service reply.
- To check the status of the refund service, include the request ID value returned in the refund service reply.
Cybersource
recommends waiting 30 seconds before requesting the check
status service.If the check status reply is pending, wait 5 minutes before making the check status
request again. If there is still no status change, wait 20 minutes before making another
check status request. After 20 minutes, the status should be
settled
,
abandoned
, or failed
.When the payment is confirmed, the customer is directed to your success URL. Your success
URL should point to a static web page that confirms the order is being processed. When
the payment completes, notify the customer using email or a dedicated web page.
Do not ship your goods until the payment status is
settled
.Endpoints
Set the
apCheckStatusService_run
field
to true
, and send the request to one of these
endpoints:Production:
https://ics2ws.ic3.com/commerce/1.x/transactionProcessor
Test:
https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor
Required Fields for Checking Transaction Status
- apCheckStatusService_checkStatusRequestID
- To check the status of a sale, include the value of therequestIDfield that was returned in the sale service reply.
- apPaymentType
- Set toIDL.
- apCheckStatusService_run
- Set totrue.
- merchantID
- merchantReferenceCode
Example: Checking Transaction Status
Request Options
1234567<="urn:schemas-cybersource-com:transaction-data-1.158"> <merchantID>abcd_1234</merchantID> <merchantReferenceCode>refnum1234</merchantReferenceCode> <apPaymentType>IDL</apPaymentType> <apOptionsService run="true"/> </apOptionsService> </>
Response to a Successful Options Request
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061<:c="urn:schemas-cybersource-com:transaction-data-1.158"> <merchantReferenceCode>refnum1234</merchantReferenceCode> <requestID>4703329437356002101200</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <apOptionsReply> <reasonCode>100</reasonCode> <responseCode>00000</responseCode> <offset>0</offset> <count>12</count> <totalCount>12</totalCount> <option data="0"> <id>ideal-FVLBNL22</id> <name>van Lanschot</name> </option> <option data="1"> <id>ideal-TRIONL2U</id> <name>Triodos Bank</name> </option> <option data="2"> <id>ideal-SNSBNL2A</id> <name>SNS</name> </option> <option data="3"> <id>ideal-RBRBNL21</id> <name>RegioBank</name> </option> <option data="4"> <id>ideal-MOYONL21</id> <name>Moneyou</name> </option> <option data="5"> <id>ideal-KNABNL2H</id> <name>Knab</name> </option> <option data="6"> <id>ideal-HANDNL2A</id> <name>Handelsbanken</name> </option> <option data="7"> <id>ideal-BUNQNL2A</id> <name>bunq</name> </option> <option data="8"> <id>ideal-ASNBNL21</id> <name>ASN Bank</name> </option> <option data="9"> <id>ideal-RABONL2U</id> <name>Rabobank</name> </option> <option data="10"> <id>ideal-INGBNL2A</id> <name>ING</name> </option> <option data="11"> <id>ideal-ABNANL2A</id> <name>ABN AMRO</name> </option> </apOptionsReply> </>
Sale Service Request
1234567891011121314151617<="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantID>mid43210</merchantID> <merchantReferenceCode>refnum1234</merchantReferenceCode> <invoiceHeader> <merchantDescriptor>Online Store</merchantDescriptor> </invoiceHeader> <purchaseTotals> <currency>EUR</currency> <grandTotalAmount>20.00</grandTotalAmount> </purchaseTotals> <apPaymentType>IDL</apPaymentType> <apSaleService run="true"> <cancelURL>https://www.redirect.url.html?action=cancel</cancelURL> <successURL>https://www.redirect.url.html?action=success</successURL> <failureURL>https://www.redirect.url.html?action=failure</failureURL> </apSaleService> </>
Response to a Successful Sale Service Request
12345678910111213141516171819202122<:c="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantReferenceCode>refnum1234</merchantReferenceCode> <requestID>4703329437356002101200</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>EUR</currency> </purchaseTotals> <apSaleReply> <reasonCode>100</reasonCode> <paymentStatus>pending</paymentStatus> <responseCode>00001</responseCode> <merchantURL>https://merchant.redirect.com/url.do?param utf=%27%22%3C%3E %20%E6%B8%AC%E8%A9%A6%E6%B8%AC¶m_url=https%3A%2F%2F www.abc.com¶m_special=+@#%~_&sign=fdaa1df42b6260a10e2e3f1c0fc</merchantURL> <processorTransacationID>007055</processorTransactionID> <reconciliationID>9530019443</reconciliationID> <amount>20.00</amount> <processorResponse>0000001</processorResponse> <dateTime>2020-01-11T12:47:19Z</dateTime> </apSaleReply> </>
Sale Service Request (
Cybersource
Settlement Services
Account)123456789101112131415161718192021222324<="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantID>mid43210</merchantID> <merchantReferenceCode>refnum1234</merchantReferenceCode> <invoiceHeader> <merchantDescriptor>Online Store</merchantDescriptor> </invoiceHeader> <billTo> <firstName>John</firstName> <lastName>Smith</lastName> <street1>10 TheStreet</street1> <city>Amsterdam</city> <country>NL</country> </billTo> <purchaseTotals> <currency>EUR</currency> <grandTotalAmount>20.00</grandTotalAmount> </purchaseTotals> <apPaymentType>IDL</apPaymentType> <apSaleService run="true"> <cancelURL>https://www.redirect.url.html?action=cancel</cancelURL> <successURL>https://www.redirect.url.html?action=success</successURL> <failureURL>https://www.redirect.url.html?action=failure</failureURL> </apSaleService> </>
Response to a Successful Sale Service Request (
Cybersource
Settlement Services Account)12345678910111213141516171819202122<:c="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantReferenceCode>refnum1234</merchantReferenceCode> <requestID>4703329437356002101200</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>EUR</currency> </purchaseTotals> <apSaleReply> <reasonCode>100</reasonCode> <paymentStatus>pending</paymentStatus> <responseCode>00001</responseCode> <merchantURL>https://merchant.redirect.com/url.do?param utf=%27%22%3C%3E %20%E6%B8%AC%E8%A9%A6%E6%B8%AC¶m_url=https%3A%2F%2F www.abc.com¶m_special=+@#%~_&sign=fdaa1df42b6260a10e2e3f1c0fc</merchantURL> <processorTransacationID>007055</processorTransactionID> <reconciliationID>9530019443</reconciliationID> <amount>20.00</amount> <processorResponse>0000001</processorResponse> <dateTime>2020-01-11T12:47:19Z</dateTime> </apSaleReply> </>
Refund Service Request
123456789101112<="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantID>mid43210</merchantID> <merchantReferenceCode>refnum1234</merchantReferenceCode> <purchaseTotals> <currency>EUR</currency> <grandTotalAmount>20.00</grandTotalAmount> </purchaseTotals> <apPaymentType>IDL</apPaymentType> <apRefundService run="true"> <refundRequestID>4703329437356002101200</refundRequestID> </apRefundService> </>
Response to a Successful Refund Service Request
1234567891011121314151617181920<:c="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantReferenceCode>refnum1234</merchantReferenceCode> <requestID>8484832012000483918274</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <purchaseTotals> <currency>EUR</currency> </purchaseTotals> <apRefundReply> <reasonCode>100</reasonCode> <status>refunded</status> <processorResponse>0000006</processorResponse> <amount>20.00</amount> <dateTime>2020-01-11T15:43:01Z</dateTime> <reconciliationID>01950351</reconciliationID> <processorTransactionID>903344</processorTransactionID> <paymentStatus>completed</paymentStatus> <responseCode>00006</responseCode> </apRefundReply> </>
Check Transaction Status Service Request
12345678<="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantID>mid43210</merchantID> <merchantReferenceCode>refnum1234</merchantReferenceCode> <apPaymentType>IDL</apPaymentType> <apCheckStatusService run="true"> <checkStatusRequestID>4703329437356002101200</checkStatusRequestID> </apCheckStatusService> </>
Response to a Successful Check Transaction Status Service Request
12345678910111213<:c="urn:schemas-cybersource-com:transaction-data-1.126"> <merchantReferenceCode>refnum1234</merchantReferenceCode> <requestID>52391098509302958393020294</requestID> <decision>ACCEPT</decision> <reasonCode>100</reasonCode> <apCheckStatusReply> <reasonCode>100</reasonCode> <reconciliationID>TC38480966</reconciliationID> <paymentStatus>settled</paymentStatus> <processorResponse>000004</processorResponse> <dateTime>2020-01-11T15:16:14Z</dateTime> </apCheckStatusReply> </>