You are on page 1of 67

API Manual

Version: 2.17

Contact details
Simon Carmiggeltstraat 6-50
1011 DJ Amsterdam
P.O. Box 10095
1001 EB Amsterdam
The Netherlands

T +31 20 240 1240


E support@adyen.com

Table of Contents
1. Introduction...............................................................................................................................................................................................................................................................................................................................................
6
1.1. SOAP API.......................................................................................................................................................................................................................................................................................................................................
7
1.2. REST API.......................................................................................................................................................................................................................................................................................................................................7
1.2.1. General Remarks On HTTP Name/Value Pair Communication......................................................................................................................................................................................................
7
1.3. REST API.......................................................................................................................................................................................................................................................................................................................................8
2. Submitting API Payments..................................................................................................................................................................................................................................................................................................................9
2.1. Payment Fields.........................................................................................................................................................................................................................................................................................................................9
2.1.1. General Payment Fields........................................................................................................................................................................................................................................................................................9
2.1.2. Card Payment Specifc Fields.........................................................................................................................................................................................................................................................................
10
2.1.3. Payment Response Fields.................................................................................................................................................................................................................................................................................10
2.2. Submitting API Modifcation Requests....................................................................................................................................................................................................................................................................
11
2.3. Client-Side Encryption (CSE) (optional)..................................................................................................................................................................................................................................................................
11
2.3.1. How Does It Work?................................................................................................................................................................................................................................................................................................11
2.3.2. Additional Payment Fields...............................................................................................................................................................................................................................................................................12
2.3.3. Where Can I Find My Public key?.................................................................................................................................................................................................................................................................12
2.3.4. Is CSE Secure?.........................................................................................................................................................................................................................................................................................................12
2.3.5. Main Benefts...........................................................................................................................................................................................................................................................................................................
13
2.4. 3-D Secure................................................................................................................................................................................................................................................................................................................................13
2.5. AVS................................................................................................................................................................................................................................................................................................................................................15
2.6. Testing AVS and CVC/CVV Results...............................................................................................................................................................................................................................................................................15
2.6.1. Testing AVS Results..............................................................................................................................................................................................................................................................................................15
2.6.2. Testing CVC/CVV Results....................................................................................................................................................................................................................................................................................16
2.6.3. Testing Error Codes...............................................................................................................................................................................................................................................................................................16
2.7. Card Verifcation/Dynamic Zero Value Auth...........................................................................................................................................................................................................................................................
17
2.8. MasterCard Authorisation Flagging...........................................................................................................................................................................................................................................................................17
2.9. Installments.............................................................................................................................................................................................................................................................................................................................17
2.10. Additional Payment Response Data.......................................................................................................................................................................................................................................................................
18
3. One-Click Payments...........................................................................................................................................................................................................................................................................................................................19
3.1. The Initial Payment.............................................................................................................................................................................................................................................................................................................
19
3.2. Submitting A One-Click Payment................................................................................................................................................................................................................................................................................
19
4. Card Deposit (CFT).............................................................................................................................................................................................................................................................................................................................20
4.1. Card Deposit Using An Existing Transaction........................................................................................................................................................................................................................................................20
4.2. Directly Depositing Funds On A Card.......................................................................................................................................................................................................................................................................20
4.3. CFT Notifcations..................................................................................................................................................................................................................................................................................................................21
5. Direct Debit Payments.....................................................................................................................................................................................................................................................................................................................22
5.1. US ACH Payments.................................................................................................................................................................................................................................................................................................................
22
5.1.1. ACH Transaction Types........................................................................................................................................................................................................................................................................................22
5.1.2. ACH Response..........................................................................................................................................................................................................................................................................................................
22
5.1.3. ACH Chargebacks...................................................................................................................................................................................................................................................................................................22
5.2. SEPA Direct Debits...............................................................................................................................................................................................................................................................................................................23
5.2.1. One-off SDD Payment Requests...................................................................................................................................................................................................................................................................23
5.2.2. Recurring SDD Payment Requests...............................................................................................................................................................................................................................................................
23
5.2.3. SDD Notifcations..................................................................................................................................................................................................................................................................................................24
5.2.4. SDD Settlement Timeline.................................................................................................................................................................................................................................................................................25
5.2.5. SDD Chargebacks..................................................................................................................................................................................................................................................................................................26
5.3. ELV Payments deprecated 1st August 2014.....................................................................................................................................................................................................................................................26

2 / 67
API Manual

5.4. Dutch Incasso Payments deprecated 1st August 2014.............................................................................................................................................................................................................................


27
5.4.1. Incasso Response..................................................................................................................................................................................................................................................................................................27
5.4.2. Incasso Chargebacks...........................................................................................................................................................................................................................................................................................27
5.4.3. Incasso Statement Text......................................................................................................................................................................................................................................................................................27
5.4.4. Incasso Legal Requirements...........................................................................................................................................................................................................................................................................28
6. Boleto Bancrio....................................................................................................................................................................................................................................................................................................................................29
6.1. Boleto Notifcations............................................................................................................................................................................................................................................................................................................29
6.2. Important Information Regarding Storage Of The Boleto PDF.................................................................................................................................................................................................................
30
7. Notifcations...........................................................................................................................................................................................................................................................................................................................................31
7.1. Notifcation Message Fields...........................................................................................................................................................................................................................................................................................31
7.2. Accepting Notifcations......................................................................................................................................................................................................................................................................................................
33
8. API Fault Codes....................................................................................................................................................................................................................................................................................................................................34
Appendix A: TEST and LIVE URLs...................................................................................................................................................................................................................................................................................................
35
Appendix B: SOAP API Payment Request and Response...................................................................................................................................................................................................................................................36
Appendix C: REST API Payment Request and Response...................................................................................................................................................................................................................................................
37
Appendix D: CSE Source Libraries Used.....................................................................................................................................................................................................................................................................................
38
Appendix E: CSE Sample Encrypted Form.................................................................................................................................................................................................................................................................................39
Appendix F: Integration Example CSE....................................................................................................................................................................................................................................................................................41
Appendix G: Integration Example Server Side (SOAP)..................................................................................................................................................................................................................................................
42
Appendix H: Integration Example Server Side (REST with cURL)..........................................................................................................................................................................................................................43
Appendix I: Authorise3d Request...................................................................................................................................................................................................................................................................................................
45
Appendix J: Zero-Auth Request and Response........................................................................................................................................................................................................................................................................46
Appendix K: Payment Request with MasterCard Flagging..............................................................................................................................................................................................................................................48
Appendix L: Payment Request with Installments.................................................................................................................................................................................................................................................................49
Appendix M: CVC/CVV and AVS Result Values.........................................................................................................................................................................................................................................................................50
Appendix N: ACH Payment Request..............................................................................................................................................................................................................................................................................................
51
Appendix O: SEPA Direct Debit One-off Payment Request and Response.............................................................................................................................................................................................................52
Appendix P: SEPA Direct Debit Recurring Payment Request..........................................................................................................................................................................................................................................
54
Appendix Q: Incasso Payment Request.......................................................................................................................................................................................................................................................................................55
Appendix R: Boleto SOAP API Payment Request and Response...................................................................................................................................................................................................................................56
Appendix S: Boleto REST API Payment Request and Response....................................................................................................................................................................................................................................58
Appendix T: Sample Boleto Forms................................................................................................................................................................................................................................................................................................59
Appendix U: SOAP Notifcation Request and Response....................................................................................................................................................................................................................................................
61
Appendix V: REST Notifcation Request and Response......................................................................................................................................................................................................................................................63
Appendix W: Fault Codes.....................................................................................................................................................................................................................................................................................................................64

3 / 67
API Manual

ADYEN CONFIDENTIAL INFORMATION


Copyright (c) Adyen B.V. 2014

Changelog
Version

Date

Changes

2.17

2014-11-06

Added section for MasterCard authorisation fagging

2.16

2014-11-04

Updated optional felds in Payment request


Update section 'Card Verifcation'

2.15

2014-10-16

Removed optional functionality

2.14

2014-08-28

Added installments WSDL to Appendix A


Added code for inserting line breaks to section 7 and updated examples in
Appendices P and Q
Corrected typo in REST example of Appendix J

2.13

2014-04-30

Updated Introduction to include PCI compliance section


Added Transient errors and Idempotency section
Updated authorise REST API examples

2.12

2014-01-15

2.11

2013-11-27

Added note about testing AVS results

2.10

2013-11-22

Added additional information regarding response codes to the AVS section

2.00

2013-11-14

Combined SOAP and REST manuals


Added Client Side Encryption
Updated document to conform to Adyen brand guidelines

1.39

2013-09-13

Added card verifcation and idempotency documentation


Moved ELV to direct debit chapter
Removed deprecated iDeal API

1.38

2013-03-18

Added note about correct XML for SOAP Payment Request with installments

1.37

2012-11-12

Added Received as possible responseCode

1.36

2012-10-19

Added additional AVS result codes

1.35

2011-12-15

Added information about not using LATEST with ONECLICK

1.34

2011-08-31

Added API Payment Response

1.33

2011-02-16

Added details about new selectedBrand parameter

1.32

2010-12-30

Added ACH US direct debits

1.31

2010-12-21

Added section about Installments

1.30

2010-12-03

Added general Tips and Warnings

1.21

2010-07-16

Added changelog and audience sections


Manual reviewed for English and layout consistency

4 / 67
API Manual

Added note about testing CVC/CVV results


Added SEPA DD section
Added note on submitting amount value
Updated installments appendix

Audience
This is a technical manual aimed at IT personnel involved in integrating merchants' systems with those at Adyen.
The latest version of this document is available here:
https://support.adyen.com/links/documentation

General Tips/Warnings
Defensive Programming
Adyen strongly recommends the use of defensive programming when integrating with the Adyen Services. This implies
that automated decisions programmed into your systems should be defaulted to non-delivery of products and services. In
other words, program your systems to only deliver products and/or services after receiving an explicit authorisation of the
requested payment and NOT to deliver in situations where an explicit rejection is not received.

Feedback
You can provide feedback about this document by sending an email to the following address:
support@adyen.com
We appreciate your comments.

5 / 67
API Manual

1. Introduction
The purpose of this manual is to provide you with the ability to submit payments to the Adyen Payment System using an
API rather than the Hosted Payment Pages (HPP). Due to strict industry regulations the API is only available to merchants
who have full Payment Card Industry Data Security Standard (PCI DSS)1 compliance and fall into either the Level 1 or Level
2 categories. Furthermore, certain implementations of the API may require that you process minimum annual transaction
volumes. Please contact an Adyen sales representative for more information regarding the API and transaction volume
requirements.
While there are signifcant benefts to using the HPP rather than an API there are some situations in which it makes sense
for you to capture the payment details and use an API to submit these to Adyen. If you do not have full PCI DSS
compliance Adyen also ofers the ability to process payments using Client-Side Encryption, this is covered in more detail in
section 2.3.
In the following sections we will cover how you can submit payments to our platform using either Adyen's SOAP or REST
APIs. Details on how to submit modifcation requests is covered in the Adyen Merchant Integration Manual, this can be
found here:
https://support.adyen.com/links/documentation
Please note that the ability to process API payments or Client-Side Encryption is not enabled by default, please contact the
Adyen Support Team (support@adyen.com) if you would like to have this functionality enabled for you.
It is important to respect the DNS Time-To-Live (TTL) when communicating with Adyen. Some frameworks, Java in
particular, cache DNS lookups by default. Adyen routinely changes their DNS confguration and, if your implementation
caches the DNS lookup, your ability to submit modifcations and/or payments may be impacted.
This document is an addendum to the Adyen Merchant Integration Manual and will reference, without citation, concepts
explained there.
Adyen has code samples in various programming languages available for your reference; these can be found here:
https://github.com/adyenpayments

1Please see http://en.wikipedia.org/wiki/PCI_DSS for more information.

6 / 67
API Manual

1.1. SOAP API


SOAP is a communication protocol between two web services that uses XML for its message format. While you are free to
choose your preferred method of integration, SOAP/REST., in most cases we recommend that you implement a SOAP
integration to Adyen; SOAP implementations automatically handle a number of edge cases around encoding and
validation that will result in a more robust integration.
SOAP is also benefcial for high volume merchants particularly with regards to notifcations; if there are many pending
notifcations, the SOAP format allows Adyen to transfer multiple notifcations in a single message. As such, when
compared to REST messages, SOAP notifcations reduce the number of requests and improve throughput. Please refer to
section 7 for more details regarding notifcation processing.

1.2. REST API


Representational State Transfer (REST) is an architecture style for designing networked applications. The idea being that,
rather than using complex mechanisms such as CORBA, RPC or SOAP to connect machines, simple HTTP with name/value
pairs is used to make calls between machines, in much the same way that web browsers transfer requests between the
user and a web server. For example, a URL with the possibility of diferent parameters.
https://www.google.com/search?q=adyen

https:// indicates the secure HTTP protocol variant

www.google.com/search is the address of the platform/service

?q=adyen is a variable Name (q) / Value (adyen) pair that lets the service know information about adyen needs
to be queried and returned to the requesting service

An important component of REST is that it is stateless in nature. Each request from client to server must contain all of the
information necessary to understand the request, and cannot take advantage of any stored context on the server. Session
state is therefore kept entirely to the client.

1.2.1.

General Remarks On HTTP Name/Value Pair Communication

The Adyen APIs are mapped from the SOAP felds to REST Name/Value pairs. Adyen provides an easy testing option via a
regular web browser showing a default form for the variables. Please refer to Appendix A for the URL of the HTTP
adapter.
The following screenshots show how it is easy to make test payments.
1.

When accessing the HTTP Adapter URL in a browser you will be prompted to log in:

2.

Select the Adyen API function that you want to test/explore:

7 / 67
API Manual

3.

Insert
the payment
variables, including your specifc account details and the relevant felds for the transaction type and click the
submit button at the bottom of the page:

4.

The browser communicates the values as HTTP Name/Value pairs and the response to the request is displayed
in the browser:

1.3. REST API


To submit authorisation messages you must supply authentication credentials (username/password). This will be
confgured in the library that you use to communicate the server-to-server request, or response, to the Adyen platform.
The username is ws@Company.[YourCompanyAccount] and you set the password for this user in the Adyen Customer Area
(CA) under Settings Users.

8 / 67
API Manual

2. Submitting API Payments


SOAP API payments are submitted using the authorise action2. We will explain a simple credit card submission and in
subsequent sections we will show you how to implement Verifed by VISA / MasterCard SecureCode (3-D Secure) and
Direct Debits.

2.1. Payment Fields 3


2.1.1.

General Payment Fields

merchantAccount
The merchant account for which you want to process the payment.

amount
A container for the data concerning the amount to be authorised. This should contain the following items:

currency
The three character ISO currency code.

value
The paymentAmount of the transaction.
Please note, the transaction amount should be provided in minor units according to ISO standards;
some currencies don't have decimal points, such as JPY, and some have 3 decimal points, such as BHD.
For example, 10 GBP would be submitted with a value of 1000 and 10 JPY would be submitted as
10.

reference
This is your reference for this payment, it will be used in all communication to you regarding the status of the
payment. We recommend using a unique value per payment but this is not a requirement. If you need to provide
multiple references for a transaction you may use this feld to submit them with the transaction, separating each
with -.
This feld has a maximum of 80 characters.

shopperIP (recommended)
The IP address of the shopper. We recommend that you provide this data, as it is used in a number of risk
checks, for example, number of payment attempts, location based checks.

shopperEmail (recommended)
The shopper's email address. We recommend that you provide this data, as it is used in a velocity fraud check.
Please note, this feld is required for Recurring payments.

shopperReference (recommended)
An ID that uniquely identifes the shopper, such as a customer id in a shopping cart system. We recommend that
you provide this data, as it is used in a velocity fraud check and is the key for recurring payments.
Please note, this feld is required for Recurring payments.

fraudOfset (optional)
An integer that is added to the normal fraud score. The value can be either positive or negative.

merchantOrderReference (optional)
The reference to link multiple transactions to each other.
selectedBrand (optional)
Used with some payment methods to indicate how it should be processed. For the MisterCash payment method
it can be set to maestro (default) to be processed like a Maestro card or bcmc to be processed as a MisterCash
card.

2
3

The URLs are provided in Appendix A


Please refer to Explanation of the Session Fields section in the Adyen Merchant Integration Manual for more information
regarding each of the felds.

9 / 67
API Manual

When comparing the SOAP felds and HTTP felds they are exactly the same. Typically it is just one feld with the same
name, but more complex structures like the amount will be rendered in two individual felds:
SOAP representation of an amount:
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">500</value>
</amount>

REST representation of an amount:


paymentRequest.amount.currency=EUR&paymentRequest.amount.value=500

2.1.2.

Card Payment Specifc Fields


card
A container for credit card data, this object should not be populated when using Client-Side Encryption. This
should contain the following items:

2.1.3.

expiryMonth
The expiration date's month written as a 2-digit string, padded with 0 if required. For example, 03 or 12.

expiryYear
The expiration date's year written as in full. For example, 2016.

holderName
The card holder's name, as embossed on the card.

number
The card number.

cvc
The card validation code. This is the CVC2 code (for MasterCard), CVV2 (for Visa) or CID (for American
Express).

issueNumber (Maestro UK / Solo only)


This feld is no longer in use.

startMonth (Maestro UK / Solo only)


This feld is no longer in use.

startYear (Maestro UK / Solo only)


This feld is no longer in use.

Payment Response Fields

If the message passes validation a risk analysis will be done and, depending on the outcome, an authorisation will be
attempted. You will receive a response with the following felds:

pspReference
This is Adyen's unique reference that is associated with the payment. This is guaranteed to be globally unique
and is used when communicating with us about this payment.

resultCode
The result of the payment. The possible values are Authorised, Refused, Error or Received (as with a Dutch Direct
Debit).

authCode
The authorisation code if the payment was successful. Blank otherwise.

refusalReason
Adyen's mapped refusal reason, populated if the payment was refused.

Please refer to Appendix B and Appendix C for examples of SOAP and REST API requests and responses.

10 / 67
API Manual

2.2. Submitting API Modifcation Requests


In addition to being able to perform modifcations via the Adyen Customer Area (CA), you may also use the API to initiate
your modifcation requests. Modifcations are submitted using the same API, URL, WSDL, username and password as
used for authorisations but using the modifcation specifc action.
Please refer to the Adyen Merchant Integration Manual for details:
https://support.adyen.com/links/documentation

2.3. Client-Side Encryption (CSE) (optional)


Merchants that require more stringent security protocols or do not want the additional overhead of managing their PCI
compliance, may decide to implement Client-Side Encryption (CSE). This is particularly useful for Mobile payment fows
where only cards are being ofered, as it may result in faster load times and an overall improvement to the shopper fow.
The Adyen Hosted Payment Page (HPP) provides the most comprehensive level of PCI compliancy and you do not have
any PCI obligations. Using CSE reduces your PCI scope when compared to implementing the API without encryption, as
Adyen bears the PCI burden on your behalf.
If you would like to implement CSE, please provide the completed PCI Self Assessment Questionnaire (SAQ) A to the
Adyen Support Team (support@adyen.com). The form can be found here:
https://www.pcisecuritystandards.org/security_standards/documents.php?category=saqs
Transactions that are submitted using Client-Side Encrypted card details follow the same process as a regular
authorisation request. However, instead of the card object, the encrypted data is sent in the additional data felds
described in section 2.3.2.
Adyen has built some code samples for your review, these are available here:
https://github.com/adyenpayments/client-side-encryption

2.3.1.

How Does It Work?

To implement CSE, you will need to follow this high level process:
1.

Build and host the credit card payment form on your servers.

2.

Ensure that the card felds have the attribute data-encrypted-name instead of name; the use of name may
result in the raw card data to be posted to your servers.

3.

Include the adyen.encrypt.min.js Client Encryption library.

4.

Set the Adyen public key and tie the Adyen library to your form.

The Client Encryption library will:


1.

Intercept the form submission event before it hits your server.

2.

Encrypt the card felds in-browser using a per transaction unique AES key.

3.

Encrypt the unique AES key with your RSA public key, Adyen retains its private counterpart.

4.

Send the encrypted data, containing the card and encrypted AES key, with the other felds in the form via the
server-to-server API.

Please note, the encrypted data must not be stored on your servers or be available in your logs as this would be a
violation of PCI regulations.

11 / 67
API Manual

2.3.2.

Additional Payment Fields

There are two additional felds that will need to be passed in the authorisation request:

generationtime
This feld is used to determine the validity of the payment request, any transactions submitted after 24 hours of
this time will be refused. The format for this feld is the ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ . For
example, 2013-11-15T13:42:40.428Z. This must be generated server-side as the client (browser) may not have
its system clock synchronised which could cause the payment to fail.

adyen-encrypted-data
This feld is used to transmit the encrypted to Adyen.

Please refer to Appendix G for a SOAP CSE example and to Appendix H for a REST CSE example.

2.3.3.

Where Can I Find My Public key?

The public key is tied to the WebService user you will be using to submit the API payment request, as described in section
Error: Reference source not found. If a key has not previously been generated, you will see an option to Generate the
key. The generated key is pre-formatted for easy insertion into your page.

2.3.4.

Is CSE Secure?

The CSE solution uses only PCI/NIST approved cryptographic algorithms. The RSA key is 2048 bits and is unique to your
user account. Per transaction the client will generate a unique AES (256bit) key which is used in CCM mode for both
encryption and authentication.

The Public Key (RSA) can be downloaded from the Adyen CA.

The Secret Key (RSA) is only known to Adyen and stored in encrypted form on Adyen's servers.

All card data is End-To-End encrypted and is never visible to merchant.

The payment authorisation is done over the server-to-server Adyen API using the encrypted card.

The encrypted data is only valid for a period of 24 hours and tied to your public key. It is of no use outside of this
context.

12 / 67
API Manual

2.3.5.

Main Benefts

The credit card data is never readable to you.

Stateless, synchronous processing; the solution does not rely on a session token.

Uses the current API therefore all features are available:

3D Secure.

Recurring.

Installments.

Airline / Level 3 Data.

Risk/Fraud Detection.

2.4. 3-D Secure


3-D Secure (Verifed by VISA / MasterCard SecureCode) is an additional authentication protocol that involves the shopper
being redirected to their card issuer where they authenticate themselves before the payment can proceed to an
authorisation request.
In order to start processing 3-D Secure transactions the following changes are required:
1.

Your Merchant Account needs to be confgured by Adyen to support 3-D Secure. If you would like to have 3-D
Secure enabled please submit a request to the Adyen Support Team (support@adyen.com).

2.

Your integration should support redirecting the shopper to the card issuer and submitting a second API call to
complete the payment.

The initial API call for both 3-D Secure and non-3-D Secure payments is almost identical, however, for 3-D Secure
payments you must supply the browserInfo object as a sub-element of the payment request, this is a container for the
acceptHeader and userAgent of the shopper's browser.
SOAP example:
<browserInfo xmlns="http://payment.services.adyen.com">
<acceptHeader xmlns="http://common.services.adyen.com">text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8</acceptHeader>
<userAgent xmlns="http://common.services.adyen.com">Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9) Gecko/2008052912 Firefox/3.0</userAgent>
</browserInfo>

SOAP example:
paymentRequest.browserInfo.acceptHeader=text%2Fhtml%2Capplication%2Fxhtml%2Bxml%2Capplication
%2Fxml%3Bq%3D0.9%2C%2A%2F%2A%3Bq%3D0.8&paymentRequest.browserInfo.userAgent=Mozilla%2F5.0+
%28X11%3B+Linux+x86_64%29+AppleWebKit%2F537.31+%28KHTML%2C+like+Gecko%29+Chrome
%2F26.0.1410.63+Safari%2F537.31

Once your account is confgured for 3-D Secure, the Adyen system performs a directory inquiry to verify that the card is
enrolled in the 3-D Secure programme. If it is not enrolled, the response is the same as a normal API authorisation. If,
however, it is enrolled, the response contains these felds:

paRequest
The 3-D request data for the issuer.

md
The payment session.

issuerUrl
The URL to direct the shopper to.

13 / 67
API Manual

resultCode
The resultCode will be RedirectShopper.

The paRequest and md felds should be included in a HTML form which needs to be submitted using the HTTP POST
method to the issuerUrl. You must also include a termUrl parameter in this form which contains the URL on your site that
the shopper will be returned to by the issuer after authentication. We recommend that the form is self-submitting with a
fallback in case javascript is disabled. A sample form is shown below.
<body onload="document.getElementById('3dform').submit();">
<form method="POST" action="${issuerUrl}" id="3dform">
<input type="hidden" name="PaReq" value="${paRequest}" />
<input type="hidden" name="TermUrl" value="${termUrl}" />
<input type="hidden" name="MD" value="${md}" />
<noscript>
<br/>
<br/>
<div style="text-align: center">
<h1>Processing your 3-D Secure Transaction </h1>
<p>Please click continue to continue the processing of your 3-D Secure transaction.</p>
<input type="submit" class="button" value="continue"/>
</div>
</noscript>
</form>
</body>

After the shopper authenticates at the issuer they will be returned to your site by sending a HTTP POST request to the
TermUrl containing the MD parameter as explained previously and a new parameter called PaRes. These will be needed to
complete the payment.
To complete the payment the following parameters should be submitted to the authorise3d action:

merchantAccount
This should be the same as the Merchant Account used in the original authorise request.

browserInfo
It is safe to use the values from the original authorise request as they are unlikely to change during the course
of a payment.

md
The value of the MD parameter received from the issuer.

paResponse
The value of the PaRes parameter received from the issuer.

shopperIP (recommended)
The IP address of the shopper. We recommend that you provide this data, as it is used in a number of risk
checks, for example, the number of payment attempts and location based checks.

Please refer to Appendix I for an example of an authorise3d request.

14 / 67
API Manual

2.5. AVS
Address Verifcation Service (AVS) is a security feature that verifes the billing address of the card holder. It does so by
comparing the numeric portions of the card holder's registered billing address to those entered by the shopper. AVS is
only supported on a limited set of acquiring connections, card types, and only for a limited set of countries (United States,
Great Britain and Canada).
To use AVS you must supply the full address of the shopper using the billingAddress sub-element of the card element.
<billingAddress xmlns="http://payment.services.adyen.com">
<city xmlns="http://common.services.adyen.com">Burbank</city>
<street xmlns="http://common.services.adyen.com">South Buena Vista Street</street>
<houseNumberOrName xmlns="http://common.services.adyen.com">500</houseNumberOrName>
<postalCode xmlns="http://common.services.adyen.com">91521</postalCode>
<stateOrProvince xmlns="http://common.services.adyen.com">California</stateOrProvince>
<country xmlns="http://common.services.adyen.com">US</country>
</billingAddress>

Please note:

If you are submitting the billingAddress object all the sub-elements are mandatory, if some felds are not
provided you will receive an error response.

The country value must be provided as the 2-character ISO country code, for example, GB for the Great
Britain. An invalid country code may result in the payment request being rejected. The full list is available
here:
http://www.iso.org/iso/english_country_names_and_code_elements

The various card brands and networks have their own specifc AVS response codes; these are mapped to
Adyen's generic response codes that are sent to you by default. If you would like to receive the actual
response from the card or network, please contact the Adyen Support Team (support@adyen.com) to have the
Raw AVS Reason enabled for you. This will be included in the Notifcation that you receive.

2.6. Testing AVS and CVC/CVV Results


2.6.1.

Testing AVS Results

It is possible to test the 27 diferent AVS result codes. If the street feld of the billingAddress element has the value Test
AVS result you can specify the avsResult value in the houseNumberOrName feld. Note that all other billingAddress felds are
still required but their values do not impact the avsResult that is returned.
Please refer to Appendix L for the complete list of AVS result codes.
SOAP billingAddress element:
<billingAddress xmlns="http://payment.services.adyen.com">
<city xmlns="http://common.services.adyen.com">Burbank</city>
<street xmlns="http://common.services.adyen.com">South Buena Vista Street</street>
<houseNumberOrName xmlns="http://common.services.adyen.com">17</houseNumberOrName>
<postalCode xmlns="http://common.services.adyen.com">91521</postalCode>
<stateOrProvince xmlns="http://common.services.adyen.com">CA</stateOrProvince>
<country xmlns="http://common.services.adyen.com">US</country>
</billingAddress>

15 / 67
API Manual

REST billingAddress element:


paymentRequest.card.billingAddress.city=Burbank&paymentRequest.card.billingAddress.street=Sou
th+Buena+Vista+Street&paymentRequest.card.billingAddress.houseNumberOrName=17&paymentRequest.
card.billingAddress.postalCode=91521&paymentRequest.card.billingAddress.stateOrProvince=CA&pa
ymentRequest.card.billingAddress.country=US
Please note, when testing the AVS results it is important to ensure that you are using one of the AVS test card numbers
found here:
https://support.adyen.com/index.php?/Knowledgebase/Article/View/11/0

2.6.2.

Testing CVC/CVV Results

It is possible to test the 7 diferent CVC/CVV result codes. You will need to use one of the Adyen test cards that includes a
CVC and instead of inputting the CVC, enter the code you want to simulate.
Please refer to Appendix L for the complete list of CVC/CVV result codes.
SOAP card element:
<card xmlns="http://payment.services.adyen.com">
<cvc>004</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>4111111111111111</number>
</card>
REST card element:
&paymentRequest.card.cvc=004&paymentRequest.card.expiryMonth=06&paymentRequest.card.expiryYea
r=2016&paymentRequest.card.holderName=Test+Tester&paymentRequest.card.number=5555444433331111
Please note, when testing the CVC/CVV results it is important to ensure that you are using one of the test card numbers
that requires a CVC found here:
https://support.adyen.com/index.php?/Knowledgebase/Article/View/11/0

2.6.3.

Testing Error Codes

It is possible to test Refused transactions and their specifc Refusal reasons by placing the following text in the Card
Holder Name:
[Response code] : [The refusal reason raw String that is tested]
For example:
DECLINED : 05 : ISSUER_UNAVAILABLE

Other response codes that are available for testing are:

REFERRAL
ERROR
BLOCK_CARD
CARD_EXPIRED
DECLINED
INVALID_AMOUNT
INVALID_CARD
NOT_SUPPORTED
NOT_3D_AUTHENTICATED
NOT_ENOUGH_BALANCE

16 / 67
API Manual

APPROVED

Please note:

There is a limit in characters of the Card Holder Name. The result may be:

DECLINED : 05 : ISSUER_UNAVAIL

You may have to lower the risk score for non-alphabetic characters in the card holder name as the ':' character
will trigger this check and may cause the payment to be declined with reason code "FRAUD".

An incorrect CVC or invalid expiry date will override the response code and always lead to a generic
"DECLINE".

2.7. Card Verifcation/Dynamic Zero Value Auth


In order to verify a card's validity, you may submit an authorisation request with an amount value of 0, the currency
should match the eventual transaction currency. This will result in the Adyen system submitting a card verifcation call,
also referred to as a Zero Value Auth, to the Acquirer, the resultCode will return either Authorised or Refused.
Not all Acquirers and Issuers support card verifcation, in the situation where your transactions are routed to an Acquirer
that does not support this feature, the Adyen system will automatically submit a EUR 1 authorisation followed by an
automatic cancel of the authorisation. For other currencies, the EUR 1 approximate equivalent value is used, for example,
1000 Korean Won (KRW) as 1 KRW is too low an amount to be authorised. In this case the notifcation message you will
receive after the authorisation request will include the additionalAmount feld with the amount (as in the example, 1000
Korean Won) that was used for card verifcation.
If you want to force a card verifcation request to use a non-zero value, you must use the 'additionalAmount' feld to
specify the amount to be used. This means the normal amount feld should still be flled in with 0, so that the Adyen
system can recognize the transaction as a non-zero amount validation, instead of a regular low-value authorisation. This
will trigger an automated cancel by the Adyen system after the authorisation. The specifed additionalAmount has to be
higher than the currency equivalent of 0.02 USD to be accepted by the schemes.
Please refer to Appendix J to review the SOAP examples for dynamic zero-auth request and zero-auth request with
additionalAmount

2.8. MasterCard Authorisation Flagging


MasterCard provides two types of authorisation, pre-authorisation (PreAuth) and fnal-authorisation (FinalAuth). Adyen, by
default, handles all MasterCard payment requests as FinalAuth.
If required, you can individually fag any MasterCard payment request to be handled as one of the two authorisation types.
Simply, you need to add a new entry with key 'mcAuthorisationType' to the additionalData feld of your payment request
(please see Appendix K for a SOAP example). As for the value of the new entry, there are the two possible options (case
sensitive) for fagging a MasterCard payment request

PreAuth
Flags the payment request to be handled as pre-authorisation

FinalAuth
Flags the payment request to be handled as fnal-authorisation

You can also request to have a default authorisation type for all your MasterCard transactions at a Merchant level, to do
this please contact the Adyen Support Team (support@adyen.com).

2.9. Installments
Some Acquirers, most notably in South America, support installments whereby the shopper is not charged the full

17 / 67
API Manual

payment amount in one charge, but is split at specifed intervals over a fxed period. Please contact the Adyen Support
Team (support@adyen.com) for more details about the Acquirers that support this functionality.
To support installments an additional object must be submitted in the authorise payment request:

installments
A container for the installment data.

Value = <the number of installments>


The number of installments must be greater than zero.
There typically is a limit on the maximum number of installments, for example 24, but this is an Acquirer
specifc limit.

Please refer to Appendix L to review a payment request with the number of installments is set to 4.
Please note, Adyen provides a WSDL that contains the installments feld; you can fnd this in Appendix A.

2.10.

Additional Payment Response Data

If required, extra response felds can be added to the SOAP response in the additionalData object; these are not enabled
by default. Please contact the Adyen Support Team (support@adyen.com) if you wish to enable this for your Merchant
Account.

authCode
The authorisation code if the payment was successful. Blank otherwise.

cvcResult
The CVC result of the payment; please refer to Appendix M for the list of possible values that my be returned.

avsResult
The AVS result of the payment; please refer to Appendix M for the list of possible values that my be returned.

referred
When the payment is referred the value of this feld will be true; otherwise the feld will not be available. Please
note, this is not typically returned for eCommerce transactions.

Where available, you may choose to receive the raw results that we receive from the Acquirer. This is an extra setting that
must be enabled for your Merchant Account by the Adyen Support Team (support@adyen.com). The setting will add the
following felds to the additionalData object of the SOAP response.

cvcResultRaw
The raw CVC result received from the Acquirer where available.

avsResultRaw
The raw AVS result received from the Acquirer where if available.

refusalReasonRaw
The raw refusal reason received from the Acquirer where available.

18 / 67
API Manual

3. One-Click Payments
One-Click Payments can be used to allow repeat/known shoppers to pay without re-entering their payment details. The
shopper can be given the opportunity to store their payment details when they frst pay and is able to use these details
for subsequent requests. For One-Click Payments the shopper will have to enter their credit card's CVC. Currently OneClick payments only work for Card payments.
Please refer to the Adyen Recurring Manual for more details regarding managing and submitting Recurring payments.

3.1. The Initial Payment

The initial payment , or subsequent payments with diferent details, are processed as normal payment requests as
described in section 2. The only diference is the addition of the Recurring object to the payment request, and that the
shopperReference and shopperEmail felds are required.
The Recurring object contains the following felds:

contract
This should be set to ONECLICK.

recurringDetailName (optional)
A short description entered by the shopper to identify their payment details. For example, My wife's
MasterCard.

If the payment is successful the details are stored.

3.2. Submitting A One-Click Payment

When submitting a payment using a payment detail returned from listRecurringDetails, you generate a normal payment
request which follows the same rules as the initial payment, meaning that the shopperReference and shopperEmail are
required and that a Recurring object should be present and contain the value ONECLICK for the contract feld. However, the
recurringDetailName should not be supplied.
One additional feld is added to the payment request:

selectedRecurringDetailReference
This is the recurringDetailReference you want to use for this payment, the customer will need to provide the CVC
for the selected card and so the value LATEST cannot be used.

In the case of a card payment you should supply a card object in the payment request with only the cvc feld and value
populated.

19 / 67
API Manual

4. Card Deposit (CFT)


Card Deposit, also referred to as Card Funds Transfer (CFT), allows you to transfer funds directly onto a credit card. There
are two methods to do this:
1.

Refund an existing transaction for an amount exceeding the original transaction amount. This does not require
you to know the card details, only a reference to the existing transaction.

2.

Directly deposit funds on a card without an existing transaction. This requires you to submit the card details and
is much like the process for submitting a direct payment.

Both methods are disabled by default. Please contact the Adyen Support Team (support@adyen.com) if you would like to
submit card deposits.

4.1. Card Deposit Using An Existing Transaction

To deposit an amount using an existing transaction send a FundTransferRequest using the fundTransfer action containing
the following felds:

merchantAccount
The merchant account the original payment was processed with.

modifcationAmount
The amount to deposit. This consists of a currencyCode and a paymentAmount4. The currencyCode must match the
currency used in the original payment.

originalReference
This is the pspReference that was assigned to the original payment. It is received with the payment status or with
the authorisation notifcation.

reference
Your reference for this payment. This reference will be used in all communication to you regarding the status of
the payment. We recommend using a unique value per payment but this is not a requirement.

shopperEmail (optional)
The shopper's email address.

If the message is syntactically valid and the merchantAccount is correct, you will receive a response with the following
felds:

pspReference
A new unique reference Adyen has assigned to identify this deposit. This is guaranteed to be globally unique and
should be used when communicating with us about this payment.

response
If successful, this value returned will be [fundtransfer-received], if unsuccessful an informational message will be
returned.

Please note, that [fundtransfer-received] does not mean that the card deposit was successful, it means that Adyen has
successfully received the message. The actual transfer is executed ofine and the fnal result communicated using a
notifcation, please see Section 4.3 for details.

4.2. Directly Depositing Funds On A Card

The process to directly deposit funds on to a card, without reference to an existing transaction, is similar to submitting a
payment to the API, please refer to section 2. The request is exactly the same as for a payment request but the request is
submitted to the refundWithData method rather than the authorise method.

Please refer to Explanation of the Session Fields section in the Adyen Merchant Integration Manual.

20 / 67
API Manual

4.3. CFT Notifcations

Notifcations for card deposits, using both methods, are the same as for payments but the eventCode is
REFUND_WITH_DATA, please refer to the Notifcations section in the Adyen Merchant Integration Manual for more
information. As with regular payments you should check the success parameter to determine if the deposit succeeded.

21 / 67
API Manual

5. Direct Debit Payments


The European Payments Council (EPC) has mandated that as of 1st February 2014, all merchants that are currently
processing, or planning to process, ELV or Incasso payments, must have implemented SEPA Direct Debits (DD).

5.1. US ACH Payments


ACH (Automated Clearing House) payments are a form of Electronic Direct Debit used in the United States.
The payment request is similar to a credit card request but rather than supplying a card you supply a bankAccount
container with the following felds:

bankAccountNumber
The US shopper's bank account number, this is a numeric feld.

bankLocationId
The shopper's bank transit routing number, a nine digit number leading zeroes should not be stripped out.

bankAccountType
The value 'C' for a checking account or 'S' for a savings account.

ownerName
The bank account holder name.

countryCode
The value 'US'.

For ACH payments shopperReference and shopperIP are required felds.

5.1.1.

ACH Transaction Types

The ACH transaction types WEB and TEL are supported:

WEB - Internet-Initiated Transactions


WEB is used when a merchant is authorised by the consumer, via the Internet, to create an ACHP debit. The WEB
code applies to both single-entry and recurring payments. WEB transactions must be drawn on a consumer
account and are payable in U.S. currency.

TEL Telephone-Initiated Transactions


TEL may only be used when a consumer initiates contact with the merchant or there is a previously existing
relationship between the merchant and the consumer, this is defned as the consumer having made a purchase
from the merchant within the past two years.

A transaction's Shopper Interaction will determine how the transaction will be processed; this is confgured at the Merchant
Account level or using an override per transaction. eCommerce transactions will be processed as WEB, ContAuth will
cause the transaction to be processed as WEB recurring and MOTO transactions will be processed as TEL.
Please refer to Appendix N for a sample SOAP & REST ACH Payment request.

5.1.2.

ACH Response

The response for ACH payments is similar to card payments, however an authorisation code is not generated or returned.

5.1.3.

ACH Chargebacks

ACH payments may be reversed by the account holder after settlement, which will result in a payment status of
Chargeback. The process is comparable with a Credit Card chargeback but without the ability to defend against the
dispute.

22 / 67
API Manual

5.2. SEPA Direct Debits


The Single Euro Payments Area (SEPA) is an EU payment-integration initiative for the simplifcation of bank transfers
denominated in EUR. The European Payments Council (EPC) has mandated that as of 1st August 2014, all merchants
that are currently processing ELV or Incasso (Dutch Direct Debit) payments, must have implemented SEPA Direct Debits
(SDD). Please refer to the SEPA Migration Manual for more details on migrating ELV or Incasso payments to SDD:
https://support.adyen.com/index.php?/Knowledgebase/Article/View/2112/101/sepa-migration-manual
Please note, there is still some ongoing development and as a result this document is subject to change.

5.2.1.

One-of SDD Payment Requests

The payment request will include the bankAccount container that contains the following elements:

iban
The IBAN.

bic
The unique identifcation code for both fnancial and non-fnancial institutions.

ownerName (optional)
The name of the account holder.

In addition to the bankaccount container, you must also include:

selectedBrand
The value should be sepadirectdebit.

Please refer to Appendix O for an example of a sepadirectdebit one-of API payment request.

5.2.2.

Recurring SDD Payment Requests

The only change to the payment request is that you must include the selectedBrand element.
Please refer to Appendix P for an example of a sepadirectdebit recurring API payment request.

23 / 67
API Manual

5.2.3.

SDD Notifcations

Pending Notifcation
The Pending notifcation is not enabled by default. Once enabled, the notifcation is sent out at the moment the payment
is created. Please contact Adyen support (support@adyen.com) if you want to receive this additional notifcation.
<com.adyen.services.notification.NotificationRequestItem>
<pspReference>9913856361050084</pspReference>
<merchantReference>Test Payment Reference</merchantReference>
<merchantAccountCode>SupportAdyenTest</merchantAccountCode>
<eventDate>2013-11-28 11:55:05.934 CET</eventDate>
<eventCode>PENDING</eventCode>
<amount>
<value>1500</value>
<currency>EUR</currency>
</amount>
<success>true</success>
<paymentMethod>sepadirectdebit</paymentMethod>
<additionalData>
<entry>
<string>sepadirectdebit.dateOfSignature</string>
<string>2013-11-28</string>
</entry>
<entry>
<string>sepadirectdebit.sequenceType</string>
<string>First</string>
</entry>
<entry>
<string>sepadirectdebit.mandateID</string>
<string>9913856361050084</string>
</entry>
</additionalData>
<com.adyen.services.notification.NotificationRequestItem>

Authorisation Notifcation
<com.adyen.services.notification.NotificationRequestItem>
<pspReference>9913856361050084</pspReference>
<merchantReference>Test Payment Reference</merchantReference>
<merchantAccountCode>SupportAdyenTest</merchantAccountCode>
<eventDate>2013-11-28 11:55:05.934 CET</eventDate>
<eventCode>AUTHORISATION</eventCode>
<amount>
<value>1500</value>
<currency>EUR</currency>
</amount>
<success>true</success>
<reason/>
<paymentMethod>sepadirectdebit</paymentMethod>
<com.adyen.services.notification.NotificationRequestItem>

24 / 67
API Manual

Extended Authorisation Notifcation


The extended notifcation is not enabled by default. Please contact Adyen support (support@adyen.com) if you want to
receive the extended notifcation.
<com.adyen.services.notification.NotificationRequestItem>
<pspReference>9913856361050084</pspReference>
<merchantReference>Test Payment Reference</merchantReference>
<merchantAccountCode>SupportAdyenTest</merchantAccountCode>
<eventDate>2013-11-28 11:55:05.934 CET</eventDate>
<eventCode>AUTHORISATION</eventCode>
<amount>
<value>1500</value>
<currency>EUR</currency>
</amount>
<success>true</success>
<reason/>
<paymentMethod>sepadirectdebit</paymentMethod>
<additionalData>
<entry>
<string>sepadirectdebit.dateOfSignature</string>
<string>2013-11-28</string>
</entry>
<entry>
<string>sepadirectdebit.sequenceType</string>
<string>First</string>
</entry>
<entry>
<string>sepadirectdebit.mandateID</string>
<string>9913856361050084</string>
</entry>
</additionalData>
<com.adyen.services.notification.NotificationRequestItem>

5.2.4.

SDD Settlement Timeline

Prior to initiating the DD, you will need to inform the customer that the payment is due.
Core
Event:

SDD First

SDD Recurring

Pre-notifcation

(T-14) T-5

(T-14) T-2

Submit SDD instructions (Moment of payment


request)

T-5

T-2

Latest moment to revoke (cancel) SDD

T-1

T-1

SDD instruction processed by bank

Reconciliation by Adyen PSP

T+1

T+1

25 / 67
API Manual

Core 1
Core 1 is automatically used in Germany, Spain and Austria.
Event:

SDD

SDD Recurring

Pre-notifcation

(T-14) T-1

(T-14) T-2

Submit SDD instructions

T-1

T-2

Latest moment to revoke (cancel) SDD

N/A

T-1

SDD instruction processed by bank

Reconciliation by Adyen PSP

T+1

T+1

5.2.5.

SDD Chargebacks

The chargeback process is standardised for all SEPA DD variants. The SEPA DD schemes ensure more protection and
refund rights for consumers:

The shopper can have the authorised SEPA DD payment returned within 8 weeks.

The shopper has 13 months to report incorrect unauthorised SEPA DD with their bank and request a reversal, as
the debit was not authorised or the mandate was expired or had been cancelled.

Both scenarios result in a payment status of Chargeback. The process is comparable with a Credit Card chargeback but
without the possibility to defend against the dispute.

5.3. ELV Payments deprecated 1 st August 2014


ELV (Elektronisches Lastschriftverfahren) payments are a form of Electronic Direct Debit which are very popular in
Germany.
The payment request is the same as for a credit card request but rather than supplying a card container you supply an elv
container with the following felds:

bankLocation
The city in which the bank (branch) is located.

bankName
The name of the bank.

bankLocationId
The location ID (Bankleitzahl) of the bank.

accountHolderName
The name of the account holder.

bankAccountNumber
The account number (Kontonummer).

A sample ELV element is shown below:


<elv xmlns="http://payment.services.adyen.com">
<accountHolderName>S. Hopper</accountHolderName>
<bankAccountNumber>1611613</bankAccountNumber>
<bankLocation>Hamburg</bankLocation>
<bankLocationId>20010020</bankLocationId>
<bankName>Postbank Hamburg</bankName>
</elv>

26 / 67
API Manual

5.4. Dutch Incasso Payments deprecated 1 st August 2014


Dutch Incasso payments are a form of Electronic Direct Debit used in the Netherlands.
The request is similar to a credit card request but rather than supplying a card object you supply a bankAccount object
with the following felds:

bankAccountNumber
A numeric feld for the Dutch bank account number which is either a 9-digit account number that complies with
the Dutch elfproef5 or a Postbank number (see below).

ownerName
The bank account holder name.

bankName
The feld is set to 'ING' for ING (or former Postbank) accounts, for non-ING accounts the feld is optional but we
recommend that it is provided.

countryCode
The value 'NL'.

Please note, Direct Debit payments were formerly submitted to the directdebit action rather than the authorise action.
The directdebit action is deprecated as of January 1 2011, but will be maintained until further notice for backward
compatibility.
Please refer to Appendix Q for a sample SOAP Incasso Payment request.

5.4.1.

Incasso Response

For every transaction submitted you will receive an authoriseResponse, for all transactions that are successfully submitted,
Adyen will return a value of Received in the resultCode feld; this is not an indication that the transaction was successful,
just that Adyen has received the request.
For bank account numbers that are invalid, blacklisted or otherwise not acceptable, there are two possible responses:

In the case of an invalid bank account number or an invalid message, a SOAP exception will be returned.

A resultCode of Refused in the situation where a fraud check was triggered, the response will contain the refusal
reason FRAUD.

If the account number is accepted and the resultCode is Received the transaction will be submitted, by Adyen, to the
banking network in the next Incasso batch, the cutof time for inclusion in the batch is 12pm CET. It is not possible to
schedule Incasso payments for later processing.
When the batch is submitted to the banking network every transaction can end up in one of two statuses:

Authorised immediately followed by SentForSettle, followed by Settled: The transaction is accepted, the money has
been received by Adyen, and will be settled to the merchant.

Refused: The transaction has been refused by the banking network.

5.4.2.

Incasso Chargebacks

Incasso payments can be reversed by the account holder up to 30 days after settlement, which will result in a payment
status of Chargeback. The process is comparable with a Credit Card chargeback but without the ability to defend against
the dispute.

5.4.3.

Incasso Statement Text

The consumer's statement will contain Adyen's bank account number and the name ADYEN. The actual account holder is
5

Please refer to the following site for more details: http://nl.wikipedia.org/wiki/Elfproef

27 / 67
API Manual

the Adyen Client Management Foundation. Two further lines of information will be printed:

PspReference: 16 characters (Payment Reference).

Shopper Statement: 32 characters (Fixed or supplied as shopperStatement).

Here is an example of an Incasso statement line that a consumer would see:


1323.94.782
1415362362372721
UW ORDER 122345677889

ADYEN

Please ensure that your customers are informed that they can expect to see Adyen displayed on their statements.

5.4.4.

Incasso Legal Requirements

For Incasso payments you need a signed mandate from the bank account holder, this is true for both one-of and
recurring Incasso payments.

28 / 67
API Manual

6. Boleto Bancrio
Boleto Bancrio, often simply referred to as Boleto, is an ofine payment method used in Brazil . The consumer will take
the Boleto form to an ATM, bank, an approved facility, or access their online banking system to complete the payment.
Once the Boleto is paid, the bank will send Adyen a fle confrming that the payment was made, this usually takes one day,
but it may occur up to 6 days after the payment. If a Boleto is not paid, the transaction will expire once the expirationDate
is reached.
The payment request will contain the data that is displayed on the Boleto. The billingAddress, deliveryDate and
shopperStatement felds are optional but may be used to customise the Boleto form:

deliveryDate (optional)
This is the date by which the consumer must submit their payment; there aren't any time restrictions on the date
inserted, however, if you do not populate this feld the Adyen system will insert a date 5 days from the creation
date.

shopperStatement (optional)
In this context the feld can be used to provide the consumer with customised instructions for submitting their
payment; if you do not provide this feld, the default text will be displayed:
No receber aps o vencimento.
No aceitar o pagamento com cheque.
This translates to:
Do not accept payment after the due date.
Do not accept payment by cheque.
If you would like to add a line break in the shopper statement, you must use the following code:
SOAP:

"&#xA;

REST:

"%0A"

socialSecurityNumber (mandatory)
The consumer will need to provide their Cadastro de Pessoas Fsicas (CPF) number.

frstName and lastName (mandatory)


Shopper's full name.

Please refer to Appendix R and Appendix S for examples of SOAP and REST Boleto requests and responses.
When submitting a Boleto payment, the Adyen system will return a URL to you in the feld boletobancario.url. You may use
this to download the PDF of the Boleto or redirect the consumer to it. This will render the Boleto form that the shopper
must use to complete their payment at an ATM, bank or approved facility. The PDF may be accessed until the
expirationDate, this is the deliveryDate + 15 days, at this time the transaction will expire in the Adyen system.
Please refer to Appendix T for sample Boleto forms.

6.1. Boleto Notifcations


Adyen will send a PENDING notifcation once the Boleto transaction is created in the Adyen system. We will return the
additionalData.acquirerReference, in the notifcation, you may want to store this data as it is the Boleto's "Nosso Numero"
or ID at the bank.
Adyen will send an AUTHORISATION notifcation once we have received confrmation from the bank that the Boleto has
been paid.

29 / 67
API Manual

6.2. Important Information Regarding Storage Of The


Boleto PDF
The Boleto contains sensitive information, namely the consumer's address and CPF; the Adyen URL is not available via a
direct link but if you do decide to download the PDF and make it available on your systems, it is important to ensure that
it is only available from a secure location, this is the recommended approach. If, however, you do intend to store the fles
in a publicly available area, we suggest ensuring that the content is not indexed, you may use the following command in
the HTTP header where the fle is being served: X-Robots-Tag:noindex. This will prevent the PDF fle from being accessed by
search engines and will not appear in search results pages.

30 / 67
API Manual

7. Notifcations
Whenever a payment is made, a modifcation is processed or when a report is available for download, we will notify you
of the event and whether or not it was performed successfully. Notifcations should be used to keep your backofce
systems up to date with the status of each payment and modifcation.
Notifcations are sent using either a SOAP call or using HTTP POST parameters to a server, that you host, that will receive
and accept the notifcations. We provide code examples in common programming languages for this, please refer to the
link in the Introduction. Your system should be able to handle requests/responses which contain additional felds and
duplicate notifcations for the same transaction.
Due to the nature of the Adyen platform, an AUTHORISATION notifcation may be sent twice. The front end systems (HPP)
will attempt to send the notifcation as soon as the payment is made. However our front-end systems do not register if
this notifcation is received successfully by your servers. This is done on a central application and hardware instance
which updates the accounting journal entries for each transaction. This system not only sends at least one notifcation, it
also records whether or not it was successfully received, this is determined by your server responding to the notifcation
with a message indicating that the notifcation has been [accepted]. Please refer to section 7.2 for more details regarding
accepting notifcations.
Notifcations will be resent if their delivery has failed or if the delivery is uncertain. This at-least-once delivery rule implies
that you may receive the same notifcation twice. A duplicate notifcation is one where the eventCode and pspReference
felds are the same (see below). If a duplicate is received with the success feld set to true it overrules the previous
notifcation. In all other cases you do not need to act on duplicate notifcations.
Notifcation settings are confgured in the Adyen CA. You can set the method (HTTP POST/SOAP), URL to submit to, and
user name/password for HTTP Basic authentication. Default HTTP (TCP port 80) and HTTPS (TCP port 443) are allowed, as
well as extra TCP ports 8080, 8888 (for HTTP) and 8443, 8843 (for HTTPS) if needed.

7.1. Notifcation Message Fields


A notifcation contains the following felds for each transaction that it references:

live
boolean (true/false) indicating if the notifcation originated from the LIVE or TEST payment systems.

eventCode
The event type of the notifcation. Values include:
Normal Payment Events
AUTHORISATION.
Modifcation Payment Events
CANCELLATION.

REFUND.

CANCEL_OR_REFUND.

CAPTURE.

REFUNDED_REVERSED.
Please note that the success feld in a REFUNDED_REVERSED notifcation will always be set to false.

CAPTURE_FAILED.

REFUND_FAILED.

Dispute Events
REQUEST_FOR_INFORMATION.

31 / 67
API Manual

NOTIFICATION_OF_CHARGEBACK.

ADVICE_OF_DEBIT.

CHARGEBACK.

CHARGEBACK_REVERSED.
For more information about Disputes please refer to the Merchant Manual.
Please note that the success feld in a CHARGEBACK_REVERSED notifcation will always be set to true.

Other Events
REPORT_AVAILABLE.
For more information please refer to the Adyen Reporting Manual.
For specialised applications, such as recurring payments, other values are possible. Please note, Adyen may add new
codes at any time and, as such, your listening service should not be coded to expect a fxed set of values.

pspReference
The unique reference that Adyen assigned to the payment or modifcation.

originalReference
If this is a notifcation for a modifcation request this will be the pspReference that was originally assigned to the
authorisation, for a payment it will be blank.

merchantReference
This is the reference you assigned to the original payment.

merchantAccountCode
The merchant Account the payment or modifcation was processed with.

eventDate
The time the event was generated.

success
Whether or not the event succeeded (boolean true/false).

paymentMethod
The payment method used, this is only populated for an AUTHORISATION. e.g. visa, mc, ideal, elv, wallie, etc.

operations
This feld displays the modifcation operations supported by this payment as a list of strings, this is only
populated for AUTHORISATION notifcations. The operations will inform you whether you need to capture the
payment (if you don't have auto-capture set up), whether you can cancel the payment (before capture) or if you
can refund the payment (after it has been captured). Values include:

CAPTURE.

REFUND.

CANCEL.

For HTTP POST notifcations, the operations are sent as a single comma-separated string.

reason
Text feld with information depending on whether the result is successful or not. For AUTHORISATION events with
the success feld set to true and a payment method of visa, mc or amex this feld contains the authorisation
code, the last 4 digits of the card, and the expiry date in the following format:
6 digit Authorisation Code:Last 4 digits:Expiry Date. For example, 874574:1935:11/2012.
When the success feld is set to false it gives a reason as to why it was refused. For REPORT_AVAILABLE it contains
the URL where the report can be downloaded from.

amount
The amount, if applicable, associated with the payment or modifcation. This consists of a currencyCode and a
value which is the amount in minor units. For HTTP POST notifcations, you will receive the currency and value as
parameters.

32 / 67
API Manual

For SOAP notifcations a notifcation message is a container for an array of notifcation items, meaning that you may
receive multiple notifcations within a single message. Please refer to Appendix U for a sample SOAP notifcation and
response. Please refer to Appendix V for a sample REST notifcation and response.
Please note that the eventCode AUTHORISATION does not necessarily mean that the authorisation is successful. The
authorisation is successful if the success feld has the value true. In case of an error or a refusal, it will be false and the
reason feld should be consulted for the cause of the authorisation failure.

7.2. Accepting Notifcations


The Adyen notifcation system requires a response within 30 seconds of receipt of the notifcation, the server is expecting
a response of [accepted], including the brackets. When our systems receive this response all notifcations contained in the
message are marked as successfully sent. It is important that Adyen receives the [accepted] message within 30 seconds
and that this process is not interrupted by any errors in processing the notifcation. As such, we recommend that the
acceptance of notifcations is handled separately from the processing of the notifcations, and that an [accepted]
response is generated when a notifcation has been stored. Please refer to Appendix U for a SOAP notifcation and
response. Please refer to Appendix V for a sample REST notifcation and response.
The URL to send the SOAP notifcation messages to and the authentication are confgurable in the Adyen CA. There is also
a testing facility that you can use to verify that your server is able to correctly receive the notifcations coming from the
Adyen systems.
Please note that if you receive a notifcation which you cannot handle, either because the original transaction is not
recognised or because the eventCode is unknown, you should accept the message and store, or at least log, the item. Not
accepting the message may cause our system to halt sending notifcations.

33 / 67
API Manual

8. API Fault Codes


In the following situations the Adyen platform does not accept or store a submitted request:

If the request does not pass validation.

If the request violates a security constraint.

If the request confguration constraint.

Instead you will receive a SOAP Fault which will contain a description of the problem. Generally this will be handled as an
Exception in your SOAP toolkit. Payment requests which are rejected with a SOAP Fault will not be charged.
If the modifcation was rejected a faultstring is returned that adheres to the following syntax:
<faultstring> ::= <type> ' ' <message>
<type> ::= 'validation' | 'security' | 'confguration' | 'internal'
<message> ::= unicode
SOAP Example:
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>validation 101 Invalid card number</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>

REST Example:
HTTP/1.1 500 Internal Server Error
security 901 Invalid Merchant Account

The way to check the description this is to read the faultstring. If the payment was rejected by our platform the fault string
will start with one of validation, security, or confguration followed by a code and it's descriptive message.
Please refer to Appendix W for a list of the error codes and messages.

34 / 67
API Manual

Appendix A: TEST and LIVE URLs


TEST URLs

SOAP

REST

Payment Service

https://pal-test.adyen.com/pal/servlet/soap/Payment

Payment Service WSDL

https://pal-test.adyen.com/pal/Payment.wsdl

Payment Service WSDL with


Installments

https://pal-test.adyen.com/pal/servlet/Payment/v4?wsdl

HTTP Adapter (Browser)

https://pal-test.adyen.com/pal/adapter/httppost?Payment

Authorisation

https://pal-test.adyen.com/pal/adapter/httppost?Payment.authorise

Test Capture

https://pal-test.adyen.com/pal/adapter/httppost?Payment.capture

Test Refund

https://pal-test.adyen.com/pal/adapter/httppost?Payment.refund

Test Cancel

https://pal-test.adyen.com/pal/adapter/httppost?Payment.cancel

LIVE URLs

SOAP

REST

35 / 67
API Manual

Payment Service

https://pal-live.adyen.com/pal/servlet/soap/Payment

Payment Service WSDL

https://pal-live.adyen.com/pal/Payment.wsdl

Payment Service WSDL with


Installments

https://pal-live.adyen.com/pal/servlet/Payment/v4?wsdl

HTTP Adapter (Browser)

https://pal-live.adyen.com/pal/adapter/httppost?Payment

Authorisation

https://pal-live.adyen.com/pal/adapter/httppost?Payment.authorise

Test Capture

https://pal-live.adyen.com/pal/adapter/httppost?Payment.capture

Test Refund

https://pal-live.adyen.com/pal/adapter/httppost?Payment.refund

Test Cancel

https://pal-live.adyen.com/pal/adapter/httppost?Payment.cancel

Appendix B: SOAP API Payment Request and Response


SOAP Payment Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">2000</value>
</amount>
<card xmlns="http://payment.services.adyen.com">
<cvc>737</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>4111111111111111</number>
</card>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

SOAP Payment Response


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authoriseResponse xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentResult>
<authCode xmlns="http://payment.services.adyen.com">64158</authCode>
<dccAmount xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<dccSignature xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<fraudResult xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<issuerUrl xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<md xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<paRequest xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<pspReference xmlns="http://payment.services.adyen.com">8313547924770610</pspReference>
<refusalReason xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<resultCode xmlns="http://payment.services.adyen.com">Authorised</resultCode>
</ns1:paymentResult>
</ns1:authoriseResponse>
</soap:Body>
</soap:Envelope>

36 / 67
API Manual

Appendix C: REST API Payment Request and Response


REST Payment Request
action=Payment.authorise
&paymentRequest.merchantAccount=SupportAdyenTest&paymentRequest.amount.value=1234&action=Payment.a
uthorise&paymentRequest.card.expiryYear=2016&paymentRequest.amount.currency=EUR&paymentRequest.car
d.cvc=737&paymentRequest.card.number=5555444433331111&paymentRequest.card.holderName=Test
%2BTester&paymentRequest.card.expiryMonth=06&paymentRequest.reference=testReference1234

REST Payment Response


paymentResult.pspReference=8513939253477759&paymentResult.authCode=9693&paymentResult.resultCode=A
uthorised

37 / 67
API Manual

Appendix D: CSE Source Libraries Used


RSA and ECC in JavaScript
The jsbn library is a fast, portable implementation of large number math in pure JavaScript, enabling public-key crypto
and other applications on desktop and mobile browsers.
http://www-cs-students.stanford.edu/~tjw/jsbn/
Stanford Javascript Crypto Library (AES)
The Stanford Javascript Crypto Library is a project by the Stanford Computer Security Lab to build a secure, powerful, fast,
small, easy-to-use, cross-browser library for cryptography in Javascript.
http://crypto.stanford.edu/sjcl/ .

38 / 67
API Manual

Appendix E: CSE Sample Encrypted Form


<!DOCTYPE html>
<html lang="en">
<head>
<title>Example Payment Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="POST" action="#handler" id="adyen-encrypted-form">
<fieldset>
<legend>Card Details</legend>
<div class="field">
<label for="adyen-encrypted-form-number">Card Number
<input type="text" id="adyen-encrypted-form-number" value="5555444433331111" size="20"
autocomplete="off" data-encrypted-name="number" />
</label>
</div>
<div class="field">
<label for="adyen-encrypted-form-holder-name">Card Holder Name
<input type="text" id="adyen-encrypted-form-holder-name" value="John Doe" size="20"
autocomplete="off" data-encrypted-name="holderName" />
</label>
</div>
<div class="field">
<label for="adyen-encrypted-form-cvc">CVC
<input type="text" id="adyen-encrypted-form-cvc" value="737" size="4" autocomplete="off"
data-encrypted-name="cvc" />
</label>
</div>
<div class="field">
<label for="adyen-encrypted-form-expiry-month">Expiration Month (MM)
<input type="text" value="06" id="adyen-encrypted-form-expiry-month" size="2"
autocomplete="off" data-encrypted-name="expiryMonth" /> /
</label>
<label for="adyen-encrypted-form-expiry-year">Expiration Year (YYYY)
<input type="text" value="2016" id="adyen-encrypted-form-expiry-year" size="4"
autocomplete="off" data-encrypted-name="expiryYear" />
</label>
</div>
<div class="field">
<input type="hidden" id="adyen-encrypted-form-expiry-generationtime" value="generate-thisserver-side" data-encrypted-name="generationtime" />
<input type="submit" value="Submit" />
</div>
</fieldset>
</form>
<!-- How to use the Adyen encryption client-side JS library
<script src="../js/adyen.encrypt.min.js"></script>
<script>
// generate time client side for testing... Don't deploy on a real integration!!!
document.getElementById('adyen-encrypted-form-expiry-generationtime').value = new
Date().toISOString();

+
+
+
+
+
+
+

// the form element to encrypt


var form
= document.getElementById('adyen-encrypted-form');
// the public key Replace as explained in section 2.3.3
var key
= "10001|80C7821C961865FB4AD23F172E220F819A5CC7B9956BC3458E2788"
"F9D725B07536E297B89243081916AAF29E26B7624453FC84CB10FC7DF386"
"31B3FA0C2C01765D884B0DA90145FCE217335BCDCE4771E30E6E5630E797"
"EE289D3A712F93C676994D2746CBCD0BEDD6D29618AF45FA6230C1D41FE1"
"DB0193B8FA6613F1BD145EA339DAC449603096A40DC4BF8FACD84A5D2CA5"
"ECFC59B90B928F31715A7034E7B674E221F1EB1D696CC8B734DF7DE2E309"
"E6E8CF94156686558522629E8AF59620CBDE58327E9D84F29965E4CD0FAF"
"A38C632B244287EA1F7F70DAA445D81C216D3286B09205F6650262CAB415"

39 / 67
API Manual

+ "5F024B3294A933F4DC514DE0B5686F6C2A6A2D";
var options = {};
// the form will be encrypted before it is submitted
adyen.encrypt.createEncryptedForm( form, key, options);
</script>
</body>
</html>

40 / 67
API Manual

Appendix F: Integration Example CSE


A full integration example along with the javascript library can be found here:
https://github.com/adyenpayments/client-side-encryption/tree/master/html-js
Identify your form with an id attribute
<form method="POST" action="posthandler.action" id="adyen-encrypted-form">

Input felds for the card data should not have a name attribute
<input type="text" value="" size="20" autocomplete="off" data-encrypted-name="number">

Add a hidden generationtime feld with the current time on server


The format of this should be in the ISO 8601 standard format for XML as YYYY-MM-DDTHH:mm:ss.sssZ. For example,
2013-04-26T14:02:30.668Z.
It is important to not rely on the client's time, especially in the LIVE environment, which may be incorrect as the encrypted
data is only usable within a 24 hour period of this time.
<input type="hidden" value=GENERATE_ON_SERVER id="generationtime"
name=generationtime>

data-encrypted-

The JavaScript
Include the JavaScript:
<script src="js/adyen.encrypt.min.js"></script>
var form
var key

= document.getElementById('adyen-encrypted-form'); // the form element to encrypt


= "10001|80C7821C961865FB4AD23F172E220F819A5CC7B9956BC3458E2788"

+ "5F024B3294A933F4DC514DE0B5686F6C2A6A2D";
// the public key

adyen.encrypt.createEncryptedForm( form, key ); // the form will be encrypted before it is


submitted

Adjusting the default form post behaviour (e.g. A JAX)


You can change the behaviour of the library by adding options to the createEncryptedForm():
For example, change the name of the encrypted data, the default is adyen-encrypted-data and submit the form using
A JAX rather than the default:
var name

= 'fieldnameofyourchoosing';

adyen.encrypt.createEncryptedForm( form, key {


name : name,
onsubmit : function(e) {
Your AJAX Code Here
e.preventDefault();
}
});

41 / 67
API Manual

Appendix G: Integration Example Server Side (SOAP)


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<additionalData xmlns="http://payment.services.adyen.com">
<entry xmlns="http://payment.services.adyen.com">
<key xmlns="http://payment.services.adyen.com"
xsi:type="xsd:string">card.encrypted.json</key>
<value xmlns="http://payment.services.adyen.com" xsi:type="xsd:string">Your generated
key string from the JavaScript encryption...
adyenjs_0_1_1$eGcJxidHkg5LYQ...6LUio9RipqyTBu11MJIC+rlMYxituYCT7A9yDeF2Rlv2I56KOAap66tTm2uZkto4PKR
W4YCA8dZYQ==</value>
</entry>
</additionalData>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">2000</value>
</amount>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

42 / 67
API Manual

Appendix H: Integration Example Server Side (REST with


cURL)
Submit a charge
curl --user 'username:password' https://pal-test.adyen.com/pal/adapter/httppost \
--data-urlencode 'action=Payment.authorise' \
--data-urlencode 'paymentRequest.amount.currency=EUR' \
--data-urlencode 'paymentRequest.amount.value=1234' \
--data-urlencode 'paymentRequest.merchantAccount=SupportAdyenTest' \
--data-urlencode 'paymentRequest.reference=Example Order 1' \
--data-urlencode
'paymentRequest.additionalData.card.encrypted.json=adyenjs_0_1_1$eGcJxidHkg5LYQ...6LUio9RipqyTBu11
MJIC+rlMYxituYCT7A9yDeF2Rlv2I56KOAap66tTm2uZkto4PKRW4YCA8dZYQ=='

Submit initial charge and store customer


curl --user 'username:password' https://pal-test.adyen.com/pal/adapter/httppost \
--data-urlencode 'action=Payment.authorise' \
--data-urlencode 'paymentRequest.amount.currency=EUR' \
--data-urlencode 'paymentRequest.amount.value=1234' \
--data-urlencode 'paymentRequest.merchantAccount=SupportAdyenTest' \
--data-urlencode 'paymentRequest.reference=Example Order 1' \
--data-urlencode 'paymentRequest.recurring.contract=RECURRING' \
--data-urlencode 'paymentRequest.shopperReference=user123' \
--data-urlencode 'paymentRequest.shopperEmail=john.doe@example.com' \
--data-urlencode
'paymentRequest.additionalData.card.encrypted.json=adyenjs_0_1_1$kj7nlobE1rlC2...iaE/cY878H+Op'
------------Response ---paymentResult.authCode=98356
paymentResult.pspReference=9913642236790892
paymentResult.resultCode=Authorised
-------------------------

List recurring details/cards for customer


curl --user 'username:password' https://pal-test.adyen.com/pal/adapter/httppost \
--data-urlencode 'action=Recurring.listRecurringDetails' \
--data-urlencode 'recurringDetailsRequest.merchantAccount=SupportAdyenTest' \
--data-urlencode 'recurringDetailsRequest.recurring.contract=RECURRING'
--data-urlencode 'recurringDetailsRequest.shopperReference=user123' \
--data-urlencode 'recurringDetailsRequest.shopperEmail=john.doe@example.com' \
------------Response ---recurringDetailsResult.shopperReference=user123
recurringDetailsResult.creationDate=2013-03-25T13:23:14+01:00
recurringDetailsResult.lastKnownShopperEmail=john.doe@example.com
recurringDetailsResult.details.0.variant=mc
recurringDetailsResult.details.0.recurringDetailReference=9913642141960010
recurringDetailsResult.details.0.creationDate=2013-03-25T13:23:16+01:00
recurringDetailsResult.details.0.card.number=1111
recurringDetailsResult.details.0.card.expiryMonth=6
recurringDetailsResult.details.0.card.expiryYear=2016
recurringDetailsResult.details.0.card.holderName=John Doe
-------------------------

43 / 67
API Manual

Submit a recurring charge


curl --user 'username:password' https://pal-test.adyen.com/pal/adapter/httppost \
--data-urlencode 'action=Payment.authorise' \
--data-urlencode 'paymentRequest.amount.currency=EUR' \
--data-urlencode 'paymentRequest.amount.value=1234' \
--data-urlencode 'paymentRequest.merchantAccount=SupportAdyenTest' \
--data-urlencode 'paymentRequest.reference=Example Order 2' \
--data-urlencode 'paymentRequest.shopperReference=user123' \
--data-urlencode 'paymentRequest.shopperEmail=john.doe@example.com' \
--data-urlencode 'paymentRequest.shopperInteraction=ContAuth' \
--data-urlencode 'paymentRequest.recurring.contract=RECURRING' \
--data-urlencode 'paymentRequest.selectedRecurringDetailReference=9913642141960010'
------------Response ---paymentResult.authCode=75682
paymentResult.pspReference=9913642244711617
paymentResult.resultCode=Authorised
-------------------------

44 / 67
API Manual

Appendix I: Authorise3d Request


Authorise3d Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise3d xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest3d>
<browserInfo xmlns="http://payment.services.adyen.com">
<acceptHeader
xmlns="http://common.services.adyen.com">text/html,appli.../*;q=0.8</acceptHeader>
<userAgent xmlns="http://common.services.adyen.com">Mozilla/5.0 ...
Firefox/3.0</userAgent>
</browserInfo>
<md xmlns="http://payment.services.adyen.com">31h..........vOXek7w=</md>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<paResponse xmlns="http://payment.services.adyen.com">eNqtmF........wGVA4Ch</paResponse>
<shopperIP xmlns="http://payment.services.adyen.com">62.194.82.12</shopperIP>
</ns1:paymentRequest3d>
</ns1:authorise3d>
</soap:Body>
</soap:Envelope>

The response to this request is the same as a non-3-D Secure payment request and the resultCode will be one of
Authorised, Refused or Error.

45 / 67
API Manual

Appendix J: Zero-Auth Request and Response


SOAP Dynamic Zero-Auth
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">0</value>
</amount>
<card xmlns="http://payment.services.adyen.com">
<cvc>737</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>4111111111111111</number>
</card>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

SOAP Zero-Auth with additionalAmount

46 / 67
API Manual

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">0</value>
</amount>
<additionalAmount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">100</value>
</additionalAmount>
<card xmlns="http://payment.services.adyen.com">
<cvc>737</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>4111111111111111</number>
</card>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

47 / 67
API Manual

Appendix K: Payment Request with MasterCard Flagging


SOAP Payment Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<additionalData xmlns="http://payment.services.adyen.com">
<entry xmlns="http://payment.services.adyen.com">
<key xsi:type="xsd:string">mcAuthorisationType</key>
<value xsi:type="xsd:string">PreAuth</value>
</entry>
</additionalData>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">10000</value>
</amount>
<card xmlns="http://payment.services.adyen.com">
<cvc>737</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>5100290029002909</number>
</card>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

48 / 67
API Manual

Appendix L: Payment Request with Installments


SOAP Payment Request
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">BRL</currency>
<value xmlns="http://common.services.adyen.com">2000</value>
</amount>
<card xmlns="http://payment.services.adyen.com">
<cvc>737</cvc>
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>4111111111111111</number>
</card>
<installments xmlns="http://payment.services.adyen.com">
<value xmlns=4</value>
</installments>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap: Envelope>

REST Payment Request


action=Payment.authorise
&paymentRequest.amount.currency=BRL&paymentRequest.amount.value=2000&paymentRequest.card.cvc=737
&paymentRequest.card.expiryMonth=06&paymentRequest.card.expiryYear=2016
&paymentRequest.card.holderName=Adyen+Test&paymentRequest.card.number=4111111111111111&paymentRequ
est.merchantAccount=SupportAdyenTest
&paymentRequest.reference=test1234&paymentRequest.installments.value=2

49 / 67
API Manual

Appendix M: CVC/CVV and AVS Result Values


CVC/CVV Result Values
0

Unknown

Matches

Doesn't match

Not checked

No CVC/CVV provided, but was required

Issuer not certifed for CVC/CVV

No CVC/CVV provided

AVS Result

50 / 67
API Manual

Unknown

Address matches, postal code doesn't

Neither postal code nor address match

AVS unavailable

AVS not supported for this card type

No AVS data provided

Postal code matches, address doesn't match

Both postal code and address match

Address not checked, postal code unknown

Address matches, postal code unknown

10

Address doesn't match, postal code unknown

11

Postal code not checked, address unknown

12

Address matches, postal code not checked

13

Address doesn't match, postal code not checked

14

Postal code matches, address unknown

15

Postal code matches, address not checked

16

Postal code doesn't match, address unknown

17

Postal code doesn't match, address not checked

18

Neither postal code nor address were checked

19

Name and postal code matches

20

Name, address and postal code matches

21

Name and address matches

22

Name matches

23

Postal code matches, name doesn't match

24

Both postal code and address matches, name doesn't match

25

Address matches, name doesn't match

26

Neither postal code, address nor name matches

Appendix N: ACH Payment Request


SOAP Payment Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">USD</currency>
<value xmlns="http://common.services.adyen.com">200</value>
</amount>
<bankAccount xmlns="http://payment.services.adyen.com">
<bankAccountNumber>11111111111111111</bankAccountNumber>
<bankLocationId>011000028</bankLocationId>
<countryCode>US</countryCode>
<ownerName>Andrews</ownerName>
<bankAccountType>C</bankAccountType>
</bankAccount>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">111541</shopperReference>
<shopperInteraction
xmlns="http://payment.services.adyen.com">Ecommerce</shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

REST Payment Request


action=Payment.authorise&paymentRequest.amount.currency=USD&paymentRequest.amount.value=200&paymen
tRequest.merchantAccount=SupportAdyenTest&paymentRequest.reference=testReference1234&paymentReques
t.bankAccount.bankAccountNumber=11111111111111111&paymentRequest.bankAccount.bankLocationId=011000
028&paymentRequest.bankAccount.countryCode=US&paymentRequest.bankAccount.ownerName=Andrews&payment
Request.bankAccount.bankAccountType=C&paymentRequest.shopperIP=212.14.111.12&paymentRequest.shoppe
rReference=111541&paymentRequest.shopperInteraction=Ecommerce

51 / 67
API Manual

Appendix O: SEPA Direct Debit One-of Payment Request


and Response
One-Of Payment Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<ns1:amount>
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">1500</value>
</ns1:amount>
<ns1:bankAccount>
<ns1:bic>RABONL2U</ns1:bic>
<ns1:iban>NL48RABO0132394782</ns1:iban>
<ns1:ownerName>Klaas T. Jansen</ns1:ownerName>
<ns1:countryCode>NL</ns1:countryCode>
</ns1:bankAccount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>Your Reference Here</ns1:reference>
<ns1:shopperEmail>email@shopper.com</ns1:shopperEmail>
<ns1:shopperReference>TheShopperReference</ns1:shopperReference>
<ns1:shopperIP>10.10.100.200</ns1:shopperIP>
<ns1:shopperStatement>UW ORDER 122345677889</ns1:shopperStatement>
<ns1:selectedBrand>sepadirectdebit</ns1:selectedBrand>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

52 / 67
API Manual

One-Of Payment Response


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authoriseResponse xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentResult>
<additionalData xmlns="http://payment.services.adyen.com">
<entry>
<key xsi:type="xsd:string">sepadirectdebit.dateOfSignature</key>
<value xsi:type="xsd:string">2013-11-28</value>
</entry>
<entry>
<key xsi:type="xsd:string">sepadirectdebit.sequenceType</key>
<value xsi:type="xsd:string">First</value>
</entry>
<entry>
<key xsi:type="xsd:string">sepadirectdebit.mandateID</key>
<value xsi:type="xsd:string">9913856361050084</value>
</entry>
</additionalData>
<authCode xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<dccAmount xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<dccSignature xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<fraudResult xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<issuerUrl xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<md xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<paRequest xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<pspReference xmlns="http://payment.services.adyen.com">9913856361050084</pspReference>
<refusalReason xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<ns1:resultCode>Received</ns1:resultCode>
</ns1:paymentResult>
</ns1:authoriseResponse>
</soap:Body>
</soap:Envelope>

For the feld sepadirectdebit.sequenceType, if this is the frst payment the value will be First. If this is a subsequent
payment, the value will be 'Recurring'.

53 / 67
API Manual

Appendix P: SEPA Direct Debit Recurring Payment Request


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<ns1:amount>
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">2150</value>
</ns1:amount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>Your Reference Here</ns1:reference>
<ns1:shopperEmail>email@shopper.com</ns1:shopperEmail>
<ns1:shopperReference>TheShopperReference</ns1:shopperReference>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:selectedRecurringDetailRetail>LATEST</ns1:selectedRecurringDetailRetail>
<ns1:selectedBrand>sepadirectdebit</ns1:selectedBrand>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

54 / 67
API Manual

Appendix Q: Incasso Payment Request


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">2000</value>
</amount>
<bankAccount xmlns="http://payment.services.adyen.com">
<bankAccountNumber>123456789</bankAccountNumber>
<bankName>POSTBANK</bankName>
<countryCode>NL</countryCode>
<ownerName>Test</ownerName>
</bankAccount>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Your Reference Here</reference>
<shopperEmail xmlns="http://payment.services.adyen.com">s.hopper@test.com</shopperEmail>
<shopperIP xmlns="http://payment.services.adyen.com">61.294.12.12</shopperIP>
<shopperReference xmlns="http://payment.services.adyen.com">Simon
Hopper</shopperReference>
<shopperInteraction xmlns="http://payment.services.adyen.com">UW ORDER
122345677889</shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

55 / 67
API Manual

Appendix R: Boleto SOAP API Payment Request and


Response
SOAP Payment Request
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<authorise xmlns="http://payment.services.adyen.com">
<paymentRequest>
<amount>
<ns1:currency xmlns:ns1="http://common.services.adyen.com">BRL</ns1:currency>
<ns2:value xmlns:ns2="http://common.services.adyen.com">1000</ns2:value>
</amount>
<billingAddress>
<ns3:city xmlns:ns3="http://common.services.adyen.com">So Paulo</ns3:city>
<ns4:country xmlns:ns4="http://common.services.adyen.com">BR</ns4:country>
<ns5:houseNumberOrName
xmlns:ns5="http://common.services.adyen.com">999</ns5:houseNumberOrName>
<ns6:postalCode xmlns:ns6="http://common.services.adyen.com">04787910</ns6:postalCode>
<ns7:stateOrPrivince
xmlns:ns7="http://common.services.adyen.com">SP</ns7:stateOrPrivince>
<ns8:street xmlns:ns8="http://common.services.adyen.com">Roque Petroni Jr</ns8:street>
</card>
<deliveryDate xmlns="http://payment.services.adyen.com">2013-1029T23:00:00.000Z</deliveryDate>
<merchantAccount
xmlns="http://payment.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns="http://payment.services.adyen.com">Teste Boleto</reference>
<selectedBrand
xmlns="http://payment.services.adyen.com">boletobancario_santander</selectedBrand>
<shopperName xmlns="http://payment.services.adyen.com">
<ns9:firstName xmlns:ns9="http://common.services.adyen.com">Jos</ns9:firstName>
<ns10:lastName xmlns:ns10="http://common.services.adyen.com">Silva</ns10:lastName>
</shopperName>
<shopperStatement>Aceitar o pagamento at 15 dias aps o vencimento.&#xA;No cobrar juros.
No aceitar o pagamento com cheque.</shopperStatement>
<socialSecurityNumber>56861752509</socialSecurityNumber>
</paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>

56 / 67
API Manual

SOAP Payment Response


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:authoriseResponse xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentResult>
<additionaldata xmlns="http://payment.services.adyen.com">
<entry>
<key xsi:type="xsd:string">boletobancario.url</key>
<value xsi:type="xsd:string">https://test.adyen.com/hpp/generationBoleto.shtml?
data=AgABAQAk5QYbuNl9TiV63c5KeLTvXpB03Ml3krv%2FtwYj....2FFq3920vVWRd5HKHT96mCdVXyo4Gzq
%2BTkzNbmT2XcgFf%2FwhYkU4%3D</value>
</entry>
<entry>
<key xsi:type="xsd:string">boletobancario.data</key>
<value
xsi:type="xsd:string">AgABAQAk5QYbuNl9TiV63c5KeLTvXpB03Ml3krv/twYj....2FFq3920vVWRd5HKHT96mCdVXyo4
Gzq+TkzNbmT2XcgFf/whYkU4=</value>
</entry>
<entry>
<key xsi:type="xsd:string">boletobancario.expirationDate</key>
<value xsi:type="xsd:string">2013-08-19</value>
</entry>
<entry>
<key xsi:type="xsd:string">boletobancario.dueDate</key>
<value xsi:type="xsd:string">2013-08-12</value>
</entry>
</additionaldata>
<pspReference xmlns="http://payment.services.adyen.com">8813760397300101</authCode>
<resultCode xmlns="http://payment.services.adyen.com">Received</authCode>
</ns1:paymentResult>
</ns1:authoriseResponse>
</soap:Body>
</soap:Envelope>

57 / 67
API Manual

Appendix S: Boleto REST API Payment Request and


Response
REST Payment Request
action=Payment.authorise
&paymentRequest.amount.currency=BRL&paymentRequest.amount.value=1000&paymentRequest.billingAddress
.city=Sao+Paulo&paymentRequest.billingAddress.country=BR&paymentRequest.billingAddress.houseNumber
OrName=999&paymentRequest.billingAddress.postalCode=04787910&paymentRequest.billingAddress.stateOr
Province=SP&paymentRequest.billingAddress.street=Rua+Roque+Petroni+Jr&paymentRequest.deliveryDate=
2013-0815T02:00:00+02:00&paymentRequest.merchantAccount=SupportAdyenTest&paymentRequest.reference=Teste+B
oleto&paymentRequest.selectedBrand=boletobancario_santander&paymentRequest.shopperName.firstName=J
os&paymentRequest.shopperName.lastName=Silva&paymentRequest.shopperStatement=Aceitar+o+pagamento+
at+15+dias+aps+o+vencimento.%0A+No+cobrar+juros.
+No+aceitar+o+pagamento+com+cheque.&paymentRequest.socialSecurityNumber=65468766205

REST Payment Response


paymentResult.additionalData.boletobancario.url=https://test.adyen.com/hpp/generationBoleto.shtml?
data=AgABAQClZUyg1NqsD7nN5X1uqN4mabJ7A3FH5LgAUbqDnJ6EAQlnSAVL%2Bu7eWIXY%2Fo%2B7F0v04ZEnh6VR%2F
%2BIAUfJoMQba2uHb2%2BqezXU
%2FhgULKuFov7s2ZnwmszAuuHgE6JvahvWtAygC5lnpLEgw34pp7z8Vf2hAQYO9mvELei6ZR8S6DMxVTObYGE6r
%2FanhX1ucteKztIR79zv1wWWzV%2FbccQIqgOEp5b8AYU6mwOlbm0oP2lPZofq4CFAQfs
%2FROyBk0JBQlQDaZHQRmY8YP3236nD6eEr4cBEy6MpULl8w0iin39NxXGsi7OCmuQDe2w1Fy
%2F40Iv6AA2sar3JTo4Ap3eraC6PEN8s5%2BSoOB5MO
%2BfpFbRSfFeSHGh9L3%2FwzuxaXCHopNfwjjgx6aJEVv1FmaPzyVYm9kB7%2B
%2F1IpaxzBIp6nTh5VSMp8iJOyOccCoV4e7Qv6SKNDkvT5lc2KPXg6jUC4tQJWyFFbvgV55rlQojjRecQfLwCiQ51tONSyaw2Q
LewemJJys9Q2AyIXYemGUXdzYAORNlSLJkTQdkoQZKdMwuOx4LDPFkNQuzHLlg4Xg
%2BpWYhgSz0TEZJrS83voNSRTbrIwOPN3&paymentResult.pspReference=8513763283942198&paymentResult.additi
onalData.boletobancario.dueDate=2013-08-15&
paymentResult.additionalData.boletobancario.data=AgABAQClZUyg1NqsD7nN5X1uqN4mabJ7A3FH5LgAUbqDnJ6EA
QlnSAVL+u7eWIXY/o+7F0v04ZEnh6VR/
+IAUfJoMQba2uHb2+qezXU/hgULKuFov7s2ZnwmszAuuHgE6JvahvWtAygC5lnpLEgw34pp7z8Vf2hAQYO9mvELei6ZR8S6DMx
VTObYGE6r/anhX1ucteKztIR79zv1wWWzV/bccQIqgOEp5b8AYU6mwOlbm0oP2lPZofq4CFAQfs/ROyBk0JBQlQDaZHQRmY8YP
3236nD6eEr4cBEy6MpULl8w0iin39NxXGsi7OCmuQDe2w1Fy/40Iv6AA2sar3JTo4Ap3eraC6PEN8s5+SoOB5MO+fpFbRSfFeS
HGh9L3/wzuxaXCHopNfwjjgx6aJEVv1FmaPzyVYm9kB7+/1IpaxzBIp6nTh5VSMp8iJOyOccCoV4e7Qv6SKNDkvT5lc2KPXg6j
UC4tQJWyFFbvgV55rlQojjRecQfLwCiQ51tONSyaw2QLewemJJys9Q2AyIXYemGUXdzYAORNlSLJkTQdkoQZKdMwuOx4LDPFkN
QuzHLlg4Xg+pWYhgSz0TEZJrS83voNSRTbrIwOPN3&
paymentResult.additionalData.boletobancario.expirationDate=2013-0822&paymentResult.resultCode=Received

58 / 67
API Manual

Appendix T: Sample Boleto Forms


Default Form

59 / 67
API Manual

Custom Form

60 / 67
API Manual

Appendix U: SOAP Notifcation Request and Response


SOAP Notifcation Request
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<soap:Body>
<ns1:sendNotification xmlns:ns1="http://notification.services.adyen.com">
<ns1:Notification>
<live xmlns="http://notification.services.adyen.com">false</live>
<notificationItems xmlns="http://notification.services.adyen.com">
<NotificationRequestItem>
<additionalData xsi:ns1="true"/>
<amount>
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">1000</value>
</amount>
<eventCode>AUTHORISATION</eventCode>
<eventDate>2009-01-01T01:02:01.111+02:00</eventDate>
<merchantAccountCode>SupportAdyenTest</merchantAccountCode>
<merchantReference>YourMerchantReference1</merchantReference>
<operations>
<string>CANCEL</string>
<string>CAPTURE</string>
<string>REFUND</string>
</operations>
<originalReference xsi:ns1="true"/>
<paymentMethod>visa</paymentMethod>
<pspReference>8888777766665555</pspReference>
<reason>01234:1111:12/2012</reason>
<success>true</success>
</NotificationRequestItem>
<NotificationRequestItem>
<additionalData xsi:ns1="true"/>
<amount>
<currency xmlns="http://common.services.adyen.com">EUR</currency>
<value xmlns="http://common.services.adyen.com">995</value>
</amount>
<eventCode>AUTHORISATION</eventCode>
<eventDate>2009-01-01T01:01:01.111+02:00</eventDate>
<merchantAccountCode>YourMerchantAccount</merchantAccountCode>
<merchantReference>YourMerchantReference2</merchantReference>
<operations>
<string>CANCEL</string>
<string>CAPTURE</string>
<string>REFUND</string>
</operations>
<originalReference xsi:ns1="true"/>
<paymentMethod>mc</paymentMethod>
<pspReference>8888777766665556</pspReference>
<reason>56789:1111:12/2012</reason>
<success>true</success>
</NotificationRequestItem>
</ns1:Notification>
</ns1:sendNotification>
</soap:Body>
</soap:Envelope>

61 / 67
API Manual

SOAP Notifcation Response


<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:sendNotificationResponse xmlns:ns1="http://notification.services.adyen.com"
xmlns:ns2="http://common.services.adyen.com">
<notificationResponse>[accepted]</notificationResponse>
</ns1:sendNotificationResponse>
</soap:Body>
</soap:Envelope>

62 / 67
API Manual

Appendix V: REST Notifcation Request and Response


REST Notifcation Request
eventDate=2012-0925T13%3A41%3A33.81Z&reason=2120%3A1111%3A12%2F2012&originalReference=&merchantReference=reference_
415579&currency=EUR&pspReference=8613485804662747&merchantAccountCode=SupportAdyenTest&eventCode=A
UTHORISATION&value=24205&operations=CANCEL%2CCAPTURE
%2CREFUND&success=true&paymentMethod=mc&live=false

REST Notifcation Response


notificationResponse=&sBaccepted%5D

63 / 67
API Manual

Appendix W: Fault Codes


Error Code

Fault

000

Unknown

010

Not allowed

100

No amount specifed

101

Invalid card number

102

Unable to determine variant

103

CVC is not the right length

104

Billing address problem

105

Invalid paRes from issuer

106

This session was already used previously

107

Recurring is not enabled

108

Invalid bankaccount number

109

Invalid variant

110

BankDetails missing

111

Invalid BankCountryCode specifed

112

This bank country is not supported

113

No InvoiceLines provided

114

Received a incorrect InvoiceLine

115

Total amount is not the same as the sum of the lines

116

Invalid date of birth

117

Invalid billing address

118

Invalid delivery address

119

Invalid shopper name

120

ShopperEmail is missing

121

ShopperReference is missing

122

PhoneNumber is missing

123

The PhoneNumber should be mobile

124

Invalid PhoneNumber

125

Invalid recurring contract specifed

126

Bank Account or Bank Location Id not valid or missing

127

Account holder missing

128

Card Holder Missing

129

Expiry Date Invalid

130

Reference Missing

131

Billing address problem (City)

132

Billing address problem (Street)

64 / 67
API Manual

Error Code

Fault

133

Billing address problem (HouseNumberOrName)

134

Billing address problem (Country)

135

Billing address problem (StateOrProvince)

136

Failed to retrieve OpenInvoiceLines

137

Invalid amount specifed

138

Unsupported currency specifed

139

Recurring requires shopperEmail and shopperReference

140

Invalid expiryMonth[1..12] / expiryYear[>2000], or before now

141

Invalid expiryMonth[1..12] / expiryYear[>2000]

142

Bank Name or Bank Location not valid or missing

143

Submitted total iDeal merchantReturnUrl length is {0}, but max size is {1} for this request

144

Invalid startMonth[1..12] / startYear[>2000], or in the future

145

Invalid issuer countrycode

146

Invalid social security number

147

Delivery address problem (City)

148

Delivery address problem (Street)

149

Delivery address problem (HouseNumberOrName)

150

Delivery address problem (Country)

151

Delivery address problem (StateOrProvince)

152

Invalid number of installments

153

Invalid CVC

154

No additional data specifed

155

No acquirer specifed

156

No authorisation mid specifed

157

No felds specifed

158

Required feld {0} not specifed

159

Invalid number of requests

160

Not allowed to store Payout Details

161

Invalid iban

162

Inconsistent iban

163

Invalid bic

170

Generation Date required but missing

171

Unable to parse Generation Date

172

Encrypted data used outside of valid time period

173

Unable to load Private Key for decryption

174

Unable to decrypt data

175

Unable to parse JSON data

65 / 67
API Manual

Error Code

Fault

180

Invalid shopperReference

181

Invalid shopperEmail

182

Invalid selected brand

183

Invalid recurring contract

184

Invalid recurring detail name

185

Invalid additionalData

186

Missing additionalData feld

187

Invalid additionalData feld

188

Invalid pspEchoData

600

No InvoiceProject provided

601

No InvoiceBatch provided

602

No creditorAccount specifed

603

No projectCode specifed

604

No creditorAccount found

605

No project found

606

Unable to create InvoiceProject

607

InvoiceBatch already exists

608

Unable to create InvoiceBatch

609

InvoiceBatch validity period exceeded

690

Error while storing debtor

691

Error while storing invoice

692

Error while checking if invoice already exists for creditorAccount

693

Error while searching invoices

694

No Invoice Confguration confgured for creditAccount

695

Invalid Invoice Confguration confgured for creditAccount

800

Contract not found

801

Too many PaymentDetails defned

802

Invalid contract

803

PaymentDetail not found

804

Failed to disable

805

RecurringDetailReference not available for provided recurring-contract

806

No applicable contractTypes left for this payment-method

901

Invalid Merchant Account

902

Shouldn't have gotten here without a request!

903

Internal error

904

Unable To Process

905

Payment details are not supported

66 / 67
API Manual

Error Code

Fault

906

Invalid Request: Original pspReference is invalid for this environment!

950

Invalid AcquirerAccount

951

Confguration Error (acquirerIdentifcation)

952

Confguration Error (acquirerPassword)

953

Confguration Error (apiKey)

954

Confguration Error (redirectUrl)

955

Confguration Error (AcquirerAccountData)

956

Confguration Error (currencyCode)

957

Confguration Error (terminalId)

958

Confguration Error (serialNumber)

959

Confguration Error (password)

960

Confguration Error (projectId)

961

Confguration Error (merchantCategoryCode)

962

Confguration Error (merchantName)

67 / 67
API Manual

You might also like