API Manual Contact details

Transcription

API Manual Contact details
API Manual
Version: 2.14
Contact details
Simon Carmiggeltstraat 6-50
1011 DJ Amsterdam
P.O. Box 10095
1001 EB Amsterdam
The Netherlands
T +31 20 240 1240
E [email protected]
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. Security (Authentication).........................................................................................................................................................................................................................................................................................
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. Test CVC/CVV Results.....................................................................................................................................................................................................................................................................16
2.7. Card Verifcation/Dynamic Zero Value Auth................................................................................................................................................................................................................................................16
2.8. Installments..................................................................................................................................................................................................................................................................................................................17
2.9. Additional Payment Response Data...............................................................................................................................................................................................................................................................
17
3. Idempotency In The Adyen API...................................................................................................................................................................................................................................................................................................
18
3.1. Idempotency Implementation...........................................................................................................................................................................................................................................................................
18
3.2. Retrying transactions and Idempotency......................................................................................................................................................................................................................................................19
3.2.1. Refused Transactions.....................................................................................................................................................................................................................................................................19
3.2.2. Transient Errors.................................................................................................................................................................................................................................................................................19
4. One-Click Payments...........................................................................................................................................................................................................................................................................................................................20
4.1. The Initial Payment..................................................................................................................................................................................................................................................................................................20
4.2. Submitting A One-Click Payment.....................................................................................................................................................................................................................................................................20
5. Card Deposit (CFT).............................................................................................................................................................................................................................................................................................................................21
5.1. Card Deposit Using An Existing Transaction.............................................................................................................................................................................................................................................
21
5.2. Directly Depositing Funds On A Card............................................................................................................................................................................................................................................................
21
5.3. CFT Notifcations.......................................................................................................................................................................................................................................................................................................
22
6. Direct Debit Payments.....................................................................................................................................................................................................................................................................................................................23
6.1. US ACH Payments......................................................................................................................................................................................................................................................................................................
23
6.1.1. ACH Transaction Types..................................................................................................................................................................................................................................................................
23
6.1.2. ACH Response....................................................................................................................................................................................................................................................................................23
6.1.3. ACH Chargebacks.............................................................................................................................................................................................................................................................................23
6.2. SEPA Direct Debits....................................................................................................................................................................................................................................................................................................
24
6.2.1. One-off SDD Payment Requests.............................................................................................................................................................................................................................................24
6.2.2. Recurring SDD Payment Requests.........................................................................................................................................................................................................................................24
6.2.3. SDD Notifcations............................................................................................................................................................................................................................................................................
25
2 / 68
API Manual
6.2.4. SDD Settlement Timeline...........................................................................................................................................................................................................................................................
26
6.2.5. SDD Chargebacks.............................................................................................................................................................................................................................................................................27
6.3. ELV Payments – deprecated 1st August 2014..........................................................................................................................................................................................................................................
27
6.4. Dutch Incasso Payments – deprecated 1st August 2014..................................................................................................................................................................................................................28
6.4.1. Incasso Response.............................................................................................................................................................................................................................................................................
28
6.4.2. Incasso Chargebacks......................................................................................................................................................................................................................................................................28
6.4.3. Incasso Statement Text................................................................................................................................................................................................................................................................29
6.4.4. Incasso Legal Requirements......................................................................................................................................................................................................................................................29
7. Boleto Bancário....................................................................................................................................................................................................................................................................................................................................30
7.1. Boleto Notifcations..................................................................................................................................................................................................................................................................................................
30
7.2. Important Information Regarding Storage Of The Boleto PDF......................................................................................................................................................................................................
31
8. Notifcations...........................................................................................................................................................................................................................................................................................................................................32
8.1. Notifcation Message Fields................................................................................................................................................................................................................................................................................32
8.2. Accepting Notifcations..........................................................................................................................................................................................................................................................................................34
9. API Fault Codes....................................................................................................................................................................................................................................................................................................................................35
Appendix A: TEST and LIVE URLs...................................................................................................................................................................................................................................................................................................
36
Appendix B: SOAP API Payment Request and Response...................................................................................................................................................................................................................................................37
Appendix C: REST API Payment Request and Response...................................................................................................................................................................................................................................................
38
Appendix D: CSE Source Libraries Used.....................................................................................................................................................................................................................................................................................
39
Appendix F: Integration Example – CSE....................................................................................................................................................................................................................................................................................42
Appendix G: Integration Example – Server Side (SOAP)..................................................................................................................................................................................................................................................
43
Appendix H: Integration Example – Server Side (REST with cURL)..........................................................................................................................................................................................................................44
Appendix I: Authorise3d Request...................................................................................................................................................................................................................................................................................................
46
Appendix J: Payment Request with Installments..................................................................................................................................................................................................................................................................
47
Appendix K: CVC/CVV and AVS Result Values..........................................................................................................................................................................................................................................................................
48
Appendix L: ACH Payment Request...............................................................................................................................................................................................................................................................................................49
Appendix M: SEPA Direct Debit One-off Payment Request and Response............................................................................................................................................................................................................50
Appendix N: SEPA Direct Debit Recurring Payment Request.........................................................................................................................................................................................................................................52
Appendix O: Incasso Payment Request.......................................................................................................................................................................................................................................................................................53
Appendix P: Boleto SOAP API Payment Request and Response...................................................................................................................................................................................................................................54
Appendix Q: Boleto REST API Payment Request and Response...................................................................................................................................................................................................................................56
Appendix R: Sample Boleto Forms................................................................................................................................................................................................................................................................................................57
Appendix S: SOAP Notifcation Request and Response.....................................................................................................................................................................................................................................................
59
Appendix T: REST Notifcation Request and Response......................................................................................................................................................................................................................................................61
Appendix U: Fault Codes.....................................................................................................................................................................................................................................................................................................................
62
3 / 68
API Manual
ADYEN CONFIDENTIAL INFORMATION
Copyright (c) Adyen B.V. 2014
Changelog
Version
Date
Changes
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 / 68
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:
[email protected]
We appreciate your comments.
5 / 68
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 ([email protected]) 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 / 68
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 8 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 / 68
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.
Security (Authentication)
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
8 / 68
API Manual
(CA) under “Settings” → “Users”.
9 / 68
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.
2
3
•
fraudOfset (optional)
An integer that is added to the normal fraud score. The value can be either positive or negative.
•
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.
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.
10 / 68
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 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.
11 / 68
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 ([email protected]). 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.
12 / 68
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
1.3. If a key has not previously been generated, you will see an option to “Generate” the key. The generated key is preformatted 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.
13 / 68
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 ([email protected]).
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.
14 / 68
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.
15 / 68
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 ([email protected]) 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 K 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>
16 / 68
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 K 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
17 / 68
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 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.
18 / 68
API Manual
2.8. Installments
Some Acquirers, most notably in South America, support installments whereby the shopper is not charged the full
payment amount in one charge, but is split at specifed intervals over a fxed period. Please contact the Adyen Support
Team ([email protected]) 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 J 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.9. 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 ([email protected]) 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 K for the list of possible values that my be returned.
•
avsResult
The AVS result of the payment; please refer to Appendix K 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 ([email protected]). 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.
19 / 68
API Manual
3. Idempotency In The Adyen API
When interfacing with an API, dealing with failures and retries can be challenging. Adyen's API attempts to limit the impact
of such a problem:
•
Asynchronous server-to-server notifcations inform you of the result of a request to the API. This is particularly
useful in the eventuality that an authorisation response is missed, this may occur due to a timeout; please refer
to section 8 for information regarding notifcations.
•
Capture and refunds requests are validated against balances in the accounting system.
◦
It is not possible to capture more than the initial authorisation amount.
◦
By default the system does not allow you to refund more than the original captured amount, but this may
be enabled.
While this is usually sufcient to deal with most exceptions, you may also choose to use the Adyen API in idempotent
mode. Idempotency is an API feature where repeatedly submitting the same message to the API always produces the
same response message but the action requested by the message is only executed once. This allows your system to safely
retry an API call in the case of failure without worrying about the payment being duplicated.
3.1. Idempotency Implementation
To trigger idempotency, you simply need to set the relevant HTTP headers. Messages will be uniquely identifed using a
message key which is a combination of the Merchant Account and Merchant Reference. As such, you will need to ensure
that you are always using a unique Merchant Reference for each payment request. You must also provide a unique
Merchant Reference for each modifcation message (capture/refund/cancel).
A set of standard HTTP request/response headers will trigger the idempotent behaviour and report back the status.
Please refer to http://www.w3.org/Protocols/rfc2616/rfc2616.html for more details.
Idempotent behaviour is triggered using the Pragma directive.
Pragma= "Pragma" ":" 1#pragma-directive
pragma-directive
= "process-idempotent" | "process-idempotent-initial"
When to use "process-idempotent" or "process-idempotent-initial"?
•
"process-idempotent" can be used if your system requires a "Strict Consistency" model to ensure idempotency,
meaning that a “system unavailable” error response may be generated if the idempotency service is not fully
available at the time of processing the request.
•
If your system is issuing an initial payment request, not a retry, the directive "process-idempotent-initial" can be
used and the request will be processed as above. The diference is that, if the idempotency service is unavailable,
the request will still be processed. In this case the response will be added later to the idempotency store in an
"Eventual Consistency" model. To avoid double-processing, this mode should NOT be used when retrying a
request or if your system is unsure if the request is an initial request.
When idempotent behaviour is requested a message generation date header is mandatory.
Date = "Date" ":" HTTP-date
Retries of the original request are, by default, required to pass the same value in the date header. A mismatch between
the value of the date header and the message key will result in a validation error response from the API: “Message request
date does not match original request date”. Values are compared by parsing the value to a GMT timestamp value with
"second" precision.
20 / 68
API Manual
It is possible to bypass this check, by adding “idempotent-no-check-date” to the Pragma directive. Please note, the values in
the Pragma directive are comma-separated.
When processing a request idempotently, the response will contain a Last-Modifed header containing the date the
original response was generated.
Last-Modified = "Last-Modified" ":" HTTP-date
Please note, HTTP-date is required as part of the HTTP standard and should conform to the RFC 1123 format; this difers
from the ISO date format (ISO 8601) that Adyen uses in the APIs.
3.2. Retrying transactions and Idempotency
There may be some scenarios in which you may want to retry a transaction.
3.2.1.
Refused Transactions
If, for example, a transaction is Refused and you want to ofer the customer the ability to enter new payment details, you
would send a new merchantReference, which may be as simple as applying a sufx, such as 12345-2. To avoid any issues
with (mis)identifying duplicates, the Adyen platform does not perform a full message analysis, it only checks the key, and
optionally the date header. We consider a resultCode of Authorised/Refused to be a valid fnal response. With
idempotency re-sending the same key will reproduce this fnal message.
3.2.2.
Transient Errors
If a request fails due to a timeout or a communication error, and we have the expectation that a retry is likely to succeed,
we will mark the response as a transient error. A transient error response will have the Pragma directive set with value
“transient-error”. Transactions marked as transient errors are not considered to be in a fnal state and, if resubmitted, will
be reprocessed. When reprocessing, we will return a new response, which may again be a transient error.
Pragma= "Pragma" ":" 1#pragma-directive
pragma-directive
= "transient-error"
21 / 68
API Manual
4. 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.
4.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.
4.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.
22 / 68
API Manual
5. 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 ([email protected]) if you would like to
submit card deposits.
5.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 5.3 for details.
5.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.
4
Please refer to “Explanation of the Session Fields” section in the Adyen Merchant Integration Manual.
23 / 68
API Manual
5.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.
24 / 68
API Manual
6. 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).
6.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.
6.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 L for a sample SOAP & REST ACH Payment request.
6.1.2.
ACH Response
The response for ACH payments is similar to card payments, however an authorisation code is not generated or returned.
6.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.
25 / 68
API Manual
6.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.
6.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 M for an example of a sepadirectdebit one-of API payment request.
6.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 N for an example of a sepadirectdebit recurring API payment request.
26 / 68
API Manual
6.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 ([email protected]) 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>
27 / 68
API Manual
Extended Authorisation Notifcation
The extended notifcation is not enabled by default. Please contact Adyen support ([email protected]) 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>
6.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
T
T
Reconciliation by Adyen PSP
T+1
T+1
28 / 68
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
T
T
Reconciliation by Adyen PSP
T+1
T+1
6.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.
6.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>
29 / 68
API Manual
6.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 O for a sample SOAP Incasso Payment request.
6.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.
6.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
Please refer to the following site for more details: http://nl.wikipedia.org/wiki/Elfproef
30 / 68
API Manual
6.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
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.
6.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.
31 / 68
API Manual
7. Boleto Bancário
Boleto Bancário, 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:
Não receber após o vencimento.
Não 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 Físicas (CPF) number.
•
frstName and lastName (mandatory)
Shopper's full name.
Please refer to Appendix P and Appendix Q 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 R for sample Boleto forms.
7.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.
32 / 68
API Manual
33 / 68
API Manual
7.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.
34 / 68
API Manual
8. 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 8.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.
8.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.
◦
35 / 68
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.
36 / 68
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 S for a sample SOAP notifcation and
response. Please refer to Appendix T 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.
8.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 S for a SOAP notifcation and
response. Please refer to Appendix T 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.
37 / 68
API Manual
9. 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 U for a list of the error codes and messages.
38 / 68
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
39 / 68
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">[email protected]</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>
40 / 68
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
41 / 68
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/ .
42 / 68
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"
43 / 68
API Manual
+ "5F024B3294A933F4DC514DE0B5686F6C2A6A2D";
var options = {};
// the form will be encrypted before it is submitted
adyen.encrypt.createEncryptedForm( form, key, options);
</script>
</body>
</html>
44 / 68
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();
}
});
45 / 68
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">[email protected]</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>
46 / 68
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 '[email protected]' \
--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 '[email protected]' \
------------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
-------------------------
47 / 68
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 '[email protected]' \
--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
-------------------------
48 / 68
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.
49 / 68
API Manual
Appendix J: 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">[email protected]</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
50 / 68
API Manual
Appendix K: CVC/CVV and AVS Result Values
CVC/CVV Result Values
0
Unknown
1
Matches
2
Doesn't match
3
Not checked
4
No CVC/CVV provided, but was required
5
Issuer not certifed for CVC/CVV
6
No CVC/CVV provided
AVS Result
51 / 68
API Manual
0
Unknown
1
Address matches, postal code doesn't
2
Neither postal code nor address match
3
AVS unavailable
4
AVS not supported for this card type
5
No AVS data provided
6
Postal code matches, address doesn't match
7
Both postal code and address match
8
Address not checked, postal code unknown
9
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 L: 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
52 / 68
API Manual
Appendix M: 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 protected]</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>
53 / 68
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'.
54 / 68
API Manual
Appendix N: 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 protected]</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>
55 / 68
API Manual
Appendix O: 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">[email protected]</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>
56 / 68
API Manual
Appendix P: 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">São 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 após o vencimento.&#xA;Não cobrar juros.
Não aceitar o pagamento com cheque.</shopperStatement>
<socialSecurityNumber>56861752509</socialSecurityNumber>
</paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
57 / 68
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>
58 / 68
API Manual
Appendix Q: 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+após+o+vencimento.%0A+Não+cobrar+juros.
+Não+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
59 / 68
API Manual
Appendix R: Sample Boleto Forms
Default Form
60 / 68
API Manual
Custom Form
61 / 68
API Manual
Appendix S: 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>
62 / 68
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>
63 / 68
API Manual
Appendix T: 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
64 / 68
API Manual
Appendix U: 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)
65 / 68
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
66 / 68
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
67 / 68
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)
68 / 68
API Manual