Recurring payments manual Copyright (c) Adyen B.V. 2014

Recurring payments
manual
Version: 2.30
Copyright (c) Adyen B.V. 2014
1. Introduction ................................................................................................................................................ 6 2. What is a recurring contract? .................................................................................................................... 7 2.1. Recurring vs One-Click ................................................................................................................................................................................. 7 2.2. Standard workflow ....................................................................................................................................................................................... 7 3. Creating a recurring contract ................................................................................................................... 8 4. Retrieving the recurring contract details ................................................................................................ 9 4.1. listRecurringDetails request .......................................................................................................................................................................... 9 4.2. listRecurringDetails response ....................................................................................................................................................................... 9 4.3. tokenLookup service ................................................................................................................................................................................... 10 5. Submitting a recurring transaction ........................................................................................................ 11 5.1. Payment request ........................................................................................................................................................................................ 11 5.1.1. One-Click payments .................................................................................................................................................................................11 5.1.2. Recurring payments .................................................................................................................................................................................11 5.2. Payment response ..................................................................................................................................................................................... 12 6. Updating stored details ........................................................................................................................... 13 7. Disabling a recurring contract ................................................................................................................ 14 7.1. Disable request .......................................................................................................................................................................................... 14 7.2. Disable response ........................................................................................................................................................................................ 14 8. Supported payment methods ................................................................................................................. 15 8.1. card .............................................................................................................................................................................................................. 15 8.2. directdebit_NL – to be deprecated 1 August 2014 ............................................................................................................................... 15 st
8.3. elv – to be deprecated 1 August 2014 ................................................................................................................................................... 15 st
8.4. directEbanking ............................................................................................................................................................................................ 15 8.5. giropay ......................................................................................................................................................................................................... 15 8.6. iDEAL ............................................................................................................................................................................................................ 15 8.7. paypal .......................................................................................................................................................................................................... 16 8.8. SEPA Direct Debit ....................................................................................................................................................................................... 16 9. Account Updater ....................................................................................................................................... 17 9.1. Requesting updates on stored cards ....................................................................................................................................................... 17 9.2. Responses to update requests ................................................................................................................................................................. 18 9.3. Using the updated details ......................................................................................................................................................................... 19 10. FAQ ........................................................................................................................................................... 20 Appendix A: TEST and LIVE URLs ................................................................................................................. 21 Appendix B: Complete workflow example ................................................................................................ 22 Step 1: First initial recurring payment............................................................................................................................................................. 22 Step 2: listRecurringDetails for a shopper ........................................................................................................................................................ 22 Step 3: Subsequent payment ........................................................................................................................................................................... 23 Step 4: Storing a second recurring detail ....................................................................................................................................................... 24 Step 5: Second subsequent payment ............................................................................................................................................................. 25 Appendix C: REST example of a listRecurringDetails request and response ........................................... 27 Appendix D: REST example of a recurring payment request and response .......................................... 28 Appendix E: SOAP example for updating stored details .......................................................................... 29 Appendix F: REST example for updating stored details ........................................................................... 30 Appendix G: SOAP example of a disable recurring contract request and response ............................ 31 Appendix H: REST example of a disable recurring contract request and response ............................. 32 Appendix I: SOAP account updater request and response using card data .......................................... 33 Appendix J: SOAP account updater request and response using token data ....................................... 34 2
Recurring payments manual
Appendix K: Sample Account Updater batch file ...................................................................................... 35 Appendix L: SOAP tokenLookup request and response ........................................................................... 36 Appendix M: SOAP listRecurringDetails response with updated expiry date ......................................... 37 Appendix N: REST listRecurringDetails response with updated expiry date .......................................... 38 Appendix O: SOAP listRecurringDetails response with updated card information ............................... 39 Appendix P: REST listRecurringDetails response with updated card information ................................. 40 Appendix Q: SOAP payment request with updated expiry date ............................................................. 41 Appendix R: REST payment request with updated expiry date .............................................................. 42 Appendix S: SOAP payment request with new card details .................................................................... 43 Appendix T: REST payment request with new card details ..................................................................... 44 3
Recurring payments manual
Changelog
Version
Date
Changes
•
Updated document to conform to Adyen brand guidelines
•
Added account updater section and appendices
•
Updated One-Click definition
•
Updated supported payment methods
2012-10-03
•
Updated Chapter 5 to always use a selectedRecurringDetailReference
2.28
2012-05-08
•
Added information about PayPal with list recurring details calls
•
Expanded Example 3 (response details)
2.27
2012-01-10
•
Clarified where to send ONECLICK subsequent payments
2.26
2011-12-06
•
Removed tokenisation functionality
2.25
2011-11-22
•
Added information about PayPal recurring limits
2.24
2011-08-31
•
Added Appendix C with sample workflow code
2.23
2011-08-22
•
Clearer definition of ONECLICK functionality
•
Added new payment methods that can be recurring
2.22
2011-08-03
•
Added shopperStatement field
2.21
2011-06-14
•
Added deprecation notice for directDebit recurring requests
•
Moved text associated with deprecated code to new Appendix
2.20
2011-04-08
•
Corrected namespace for contract parameter in Example 5
•
Added disclaimer about SOAP examples
2.19
2010-10-27
•
Added recurringDetailReference field to storeToken method
•
Added information about validation to storeToken method
•
Corrected mistakes about recharge & recurring detail references
•
Added need for separate skin when tokenising via HPP
•
Added Changelog and Audience sections
•
Manual reviewed for English and layout consistency
2.30
2.29
2014-09-04
2.18
2010-09-17
2.17
2010-08-05
2.16
2010-07-13
•
Corrected names of SOAP elements to match WSDL
2.15
2010-05-18
•
Added storeToken using HPP
2.14
2010-04-19
•
Add storeToken examples
4
Recurring payments manual
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://www.adyen.com/home/support/manuals.html
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
Recurring payments manual
1. Introduction
The purpose of this manual is to enable you to create and submit recurring payments to the Adyen Payment System. Recurring
payments re-use payment details, previously stored by the shopper, to complete the payment.
In the following chapters we cover how you can:
Create a recurring contract using an initial payment
•
•
•
•
•
•
Retrieve the recurring contracts for a shopper
Submit a recurring transaction
Update stored details
Deactivate a recurring contract or detail
Submit Account Updater requests
Recurring payments are not enabled by default. Please contact the Adyen Support Team ([email protected]) if you would like to
start processing recurring payments.
This document is an addendum to the Adyen Merchant Integration Manual and will reference, without citation, concepts explained
there. The latest version of the Integration manual can be found here
https://www.adyen.com/home/support/manuals.html
Please note that API calls to Adyen may change, and are based on our WSDLs, listed in Appendix A.
To submit Recurring Payment requests you must supply authentication credentials. The username is
ws@Company.[YourCompanyAccount] and you set the password for this user in the Adyen Customer Area (CA) under “Settings” →
“Users”.
6
Recurring payments manual
2. What is a recurring contract?
A recurring contract is a set of one or more recurring payment details linked to a unique shopper on your merchant account. The
contract is identified using the shopperReference and merchantAccount fields which are specified as part of the payment session, for
Hosted Payment Pages (HPP) or the payment request for Direct API.
The recurring details each have a unique 16 digit reference number called the recurringDetailReference. A recurring detail reference
number can be used in place of the actual payment details to submit a payment to the system.
Please note, the default recurring behaviour is for recurring contracts to be established and used within a single merchant
account. However, your account can be configured to allow you to use stored details across all merchant accounts associated with
your company account. Please contact the Adyen Support Team ([email protected]) if you would like to have this feature
enabled on your account.
2.1. Recurring vs One-Click
One-Click functionality gives the shopper the option to store their payment details with the merchant, within the Adyen environment.
The shopper makes this choice during their first payment by checking a checkbox.
For card payments, One-Click differs from Recurring as follows:
•
•
The shopper chooses whether their card data can be stored or not.
For subsequent transactions, the shopper is always present and must supply their card's security code (CVC/CVV).
One-Click has the advantage of ensuring full card authorisation takes place for each payment, including card security code checks
and 3D secure, if applicable, with the potential disadvantage that the shopper must be present for all payments.
2.2. Standard workflow
The usual workflow is as follows:
1.
Create your recurring contract by performing an initial Payment with the additional fields defined in section 3, ensuring that
you store the shopperEmail, shopperReference, and the recurringContract fields in your system for later use.
If you receive a successful AUTHORISATION notification for the payment then you know the recurring contract has been
created. You do not receive the recurringDetailReference at this time and need do nothing more in our system.
2.
When you're ready to process a subsequent payment, set the value of the selectedRecurringDetailReference to either:
1.
The recurringDetailReference returned from the list of all stored recurring details based on the shopperReference
provided in step 1.
2.
The word “LATEST”, which uses the most recently stored recurring detail.
Set other fields as per section 5, taking into account the recurringContract value that was set in step 1.
If the subsequent payment is successful you will receive an AUTHORISATION notification with success=”true”.
Please refer to section 8 for the list of supported payment methods.
Please refer to Appendix B for sample requests & responses for an entire workflow.
7
Recurring payments manual
3. Creating a recurring contract
The payment session is set up like a regular payment. There are two previously optional fields that become compulsory and one new
field that needs to be provided in the payment session form.
•
shopperEmail (required)
The shopper's email address.
•
shopperReference (required)
An ID that uniquely identifies the shopper.
•
recurringContract (required)
The type of recurring contract to be used. One of:
o
ONECLICK
The shopper opts in to storing their card details for future use. The shopper is present for the subsequent
transaction, for cards the security code (CVC/CVV) is required.
o
RECURRING
Payment details are stored for future use. For cards, the security code (CVC/CVV) is not required for subsequent
payments.
o
ONECLICK, RECURRING
Payment details are stored for future use. This allows the use of the stored payment details regardless of whether
the shopper is on your site or not.
<input type="hidden" name="shopperEmail" value="[email protected]" />
<input type="hidden" name="shopperReference" value="grasshopper52" />
<input type="hidden" name="recurringContract" value="RECURRING" /> Please refer to Appendix C of the Adyen Integration Manual for details on how to include these values in the signature.
Please note:
•
The details will only be stored, and the recurringDetailReference created, if the payment is successful.
•
Shoppers are uniquely identified using the shopperReference parameter. It is very important that shoppers are securely
logged in on your site and that the shopperReference parameter cannot be modified by the shopper.
8
Recurring payments manual
4. Retrieving the recurring contract details
When you want to submit a recurring payment, you may choose to query the Adyen system to return any stored payment details.
This is done by submitting a request to the listRecurringDetails action.
4.1. listRecurringDetails request
The request has the following fields:
•
merchantAccount
Your merchant account.
•
shopperReference
Your unique ID for the shopper. This shopperReference must be the same as the shopperReference used in the initial
payment.
•
recurring
o
contract
This should be the same value that was submitted using recurringContract in the payment where the recurring
contract was created. However, if “ONECLICK,RECURRING” was specified initially, then this field should be either
“ONECLICK” or “RECURRING” depending on whether or not you want the shopper to enter their card's security
code. Please refer to section 3 for more information.
Please refer to Step 2 of Appendix B for a SOAP example of a listRecurringDetails request and response.
Please refer to Appendix C for a REST example of a listRecurringDetails request and response.
4.2. listRecurringDetails response
The response will be a result with a list of zero or more details containing:
•
recurringDetailReference
The unique reference the details are stored under.
•
variant
The payment method, such as “mc”, “visa”, “ideal”, “paypal”.
•
creationDate
The date when the recurring details were created.
The recurring contracts are stored in the same object types that were used to submit the initial payment. Depending upon the
payment method, one or more fields may be blank or incomplete, for example CVC for card. Only one of the details below will be
returned per detail block, the others will be nil. For wallets (Paypal, Moneybookers/Skrill, Neteller) there is not a detail block.
•
card
A container for credit card data. This contains the following items:
o
expiryMonth
The expiration date's month written as a 2-digit string, padded with 0 if required, for example 03 or 12.
o
expiryYear
The expiration date's year written in full, for example 2008.
o
holderName
The card holder's name as embossed on the card.
o
number
The card number. Only the last 4 digits of the card number are returned.
o
cvc
The card validation code. This is the CVC2 code (for MasterCard), CVV2 (for Visa) or CID (for American Express).
The value will always be empty because it is not stored.
•
st
Elv – deprecated 1 August 2014
A container for elv data with the following fields:
o
bankLocation
The city in which the bank (branch) is located.
o
bankName
The name of the bank.
9
Recurring payments manual
o
bankLocationId
The location ID (Bankleitzahl) of the bank.
o
accountHolderName
The name of the account holder.
o
bankAccountNumber
The account number (Kontonummer).
bank
•
A container for bankAccount data with the following fields:
o
bankAccountNumber
The account number.
o
bankLocationId
The location id of the bank. The field will be nil in most cases.
o
bankName
The name of the bank.
o
bic
The unique identification code for both financial and non-financial institutions. The field will be nil in most cases.
o
countryCode
The country of the bank details.
o
iban
The IBAN. The field will be nil in most cases.
o
ownerName
The account holder name.
Caching of the recurring details for a shopper is encouraged, however, please keep in mind that if the stored details are updated, the
recurringDetailReference for that detail will change and the cached entry should be invalidated.
Please refer to Step 2 of Appendix B for a SOAP example of a listRecurringDetails request and response.
Please refer to Appendix C for a REST example of a listRecurringDetails request and response.
4.3. tokenLookup service
In addition to the listRecurringDetails action, Adyen also offers the tokenLookup action which provides the ability to check the entered
card details to see if there is another stored token that has the same card details on file. This is currently only available via a SOAP
request.
Please refer to Appendix L for a SOAP tokenLookup API request and response.
10
Recurring payments manual
5. Submitting a recurring transaction
You can submit a recurring payment using a specific recurringDetails record or by using the last created recurringDetails record. The
request for the recurring payment is done using a paymentRequest.
5.1. Payment request
You can submit a recurring payment by calling the authorise action on the Payment service with a paymentRequest. However, a OneClick payment session is set up like a regular payment and these additional fields are not required. Please refer to section 3.1 for
more information on setting up the payment.
5.1.1. One-Click payments
The paymentRequest is set up like a regular payment with a couple of differences:
•
card
The container for card data. This should contain the following items:
o
expiryMonth
The field should be null.
o
expiryYear
The field should be null.
o
holderName
The field should be null.
o
number
The field should be null.
o
cvc
The card validation code. This is the CVC2 code (for MasterCard), CVV2 (for Visa) or CID (for American Express).
•
recurring
o
contract
If “ONECLICK,RECURRING” was specified initially, then this field should be “ONECLICK”. Please refer to section 3 for
more information.
•
shopperInteraction
Set to “Ecommerce”.
5.1.2. Recurring payments
The paymentRequest has the following fields:
•
selectedRecurringDetailReference
The recurringDetailReference you want to use for this payment. The value “LATEST” can be used to select the most recently
stored recurring detail.
•
recurring
o
contract
This should be the same value that was submitted using recurringContract in the payment where the recurring
contract was created. However, if “ONECLICK,RECURRING” was specified initially, then this field should be
“RECURRING”. Please refer to section 3 for more information.
•
merchantAccount
The merchant account for which you want to process the payment.
•
amount
The amount to authorise. This consists of a currencyCode and a paymentAmount. Please refer to section 2.2 of the Adyen
Merchant Integration Manual for more information.
•
shopperEmail
The shopper's email address. This does not have to match the email address supplied with the initial payment.
•
shopperReference
An ID that uniquely identifies the shopper. This shopperReference must be the same as the shopperReference used in the
initial payment.
•
shopperInteraction
Set to “ContAuth”.
11
Recurring payments manual
5.2. Payment response
If the recurring payment message passes validation, a risk analysis will be done and, depending on the outcome, an authorisation will
be attempted. This is not applicable to One-Click payments. You receive a payment response with the following fields:
•
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”.
•
authCode
An authorisation code if the payment was successful. Blank otherwise.
•
refusalReason
Adyen's mapped refusal reason, if the payment was refused.
Please refer to Step 3 of Appendix B for a SOAP example of a Recurring payment request and response.
Please refer to Appendix D for a REST example of a Recurring payment request and response.
12
Recurring payments manual
6. Updating stored details
The stored payment details may need to be updated, for example when the card expiry date changes. Submit the Recurring payment
and add the details that need to change to the payment method specific object. For a card this means that the expiryMonth and
expiryYear fields should contain the new values. You need to specify the exact selectedRecurringDetailReference of the card that you
want to update.
Please note:
•
•
•
Updating of stored details is only applicable to cards.
The details will only be updated If the payment is successful.
A new recurringDetailReference is created and the old one is no longer valid. As such the stored details must be retrieved
again for the next payment.
Please refer to Appendix E for a SOAP example of a Recurring Payment Request which overwrites the expiry date of the card.
Please refer to Appendix F for a REST example of a sRecurring Payment Request which overwrites the expiry date of the card.
13
Recurring payments manual
7. Disabling a recurring contract
You can disable a single recurringDetail or the whole recurring contract for a shopper.
7.1. Disable request
Disabling a recurring contract (detail) can be done by calling the disable action on the Recurring service.
The request has the following fields:
•
merchantAccount
Your merchant account.
•
shopperReference
The ID that uniquely identifies the shopper. This shopperReference must be the same as the shopperReference used in the
initial payment.
•
recurringDetailReference (optional)
The recurringDetailReference of the detail you wish to disable. If you do not supply this field all details for the shopper will be
disabled including the contract. This means that you cannot add new details.
7.2. Disable response
The response will be a result object with a single field response. If a single detail was disabled the value of this field will be [detailsuccessfully-disabled] or, if all the details were disabled, the value is [all-details-successfully-disabled].
Please refer to Appendix G for a SOAP example of a disable a recurring contract request and response.
Please refer to Appendix H for a REST example of a disable a recurring contract request and response.
14
Recurring payments manual
8. Supported payment methods
For most payment methods the recurring payment is processed using the same payment method as the initial payment. There are a
few exceptions that are outlined below.
Please note, it must be clear to your shoppers that their details are to be used for recurring payments. We recommend adding
verbiage to your website advising shoppers of this.
8.1. card
All credit and debit cards support recurring with the exception of maestro, these cards cannot be used for recurring payments.
st
8.2. directdebit_NL – to be deprecated 1 August 2014
With the introduction of SEPA Direct Debits (SDD), directdebit_NL will be deprecated and no longer supported.
st
8.3. elv – to be deprecated 1 August 2014
With the introduction of SEPA Direct Debits (SDD), elv will be deprecated and no longer supported.
8.4. directEbanking
directEbanking is a payment method that requires some form of shopper interaction, which is not possible for recurring payments.
As such, the initial payment is completed via directEbanking and the recurring payments are processed as elv and SEPA Direct Debit.
directEbanking, elv and SEPA Direct Debit must be enabled for your Merchant Account for processing recurring payments. If you do
not want to display elv or SEPA Direct Debit on your HPP, you will need to deactivate them in your skin.
In order to correctly process SEPA Direct Debit recurring payments, the recurring request must include the selectedBrand element
with a value of “sepadirectdebit”.
Please note, with the introduction of SEPA Direct Debits (SDD), elv will be deprecated and no longer supported. We recommend
implementing SDD as described in section 8.8.
8.5. giropay
Recurring is only supported when the shopper has used a German bank account.
giropay is a payment method that requires some form of shopper interaction, which is not possible for recurring payments. As such,
the initial payment is completed via giropay and the recurring payments are processed as elv.
giropay, elv, and SEPA Direct Debit must be enabled for your Merchant Account for processing recurring payments. If you do not
want to display elv on your HPP, you will need to deactivate it in your skin.
In order to correctly process SEPA Direct Debit recurring payments, the recurring request must include the selectedBrand element
with a value of “sepadirectdebit”.
Please note, with the introduction of SEPA Direct Debits (SDD), elv will be deprecated and no longer supported. We recommend
implementing SDD as described in section 8.8.
8.6. iDEAL
Recurring via iDEAL is not enabled by default. Please contact the Adyen Support Team ([email protected]) if you would like to have
this enabled.
iDEAL is a payment method that requires some form of shopper interaction, which is not possible for recurring payments. As such,
the initial payment is completed via iDEAL and the recurring payments are processed as SEPA Direct Debit.
Both iDEAL and SEPA Direct Debit must be enabled for your Merchant Account for processing recurring payments. If you do not want
to display directdebit_NL on your HPP, you will need to deactivate it in your skin.
15
Recurring payments manual
In order to correctly process SEPA Direct Debit recurring payments, the recurring request must include the selectedBrand element
with a value of “sepadirectdebit”.
Please note, with the introduction of SEPA Direct Debits (SDD), directdebit_NL will be deprecated and no longer supported. We
recommend implementing SDD as described in section 8.8.
8.7. paypal
The recurring functionality has to be approved by PayPal and they will need to add the merchantInitiatedBilling / Reference
Transactions permission to your PayPal account.
Please note, PayPal places a limit on the transaction amount of subsequent payments.
8.8. SEPA Direct Debit
In order to be correctly processed, the recurring payment request must include the selectedBrand element with a value of
“sepadirectdebit”.
8.9. Neteller
8.10. Moneybookers/Skrill
8.11. Direct Debit Brazil
16
Recurring payments manual
9. Account Updater
Visa and Mastercard offer merchants the ability to register for their Account Updater services; Adyen has developed additional
functionality to support this. The service allows you to receive updates on:
•
•
•
cards that have expired and a new expiry date is available.
cards that have been replaced by a new card.
cards that have been reported stolen or where the customer has informed their issuer that they no longer authorise a
merchant to automatically charge their card.
You will need to build the mechanism to request the updates that will be processed by Adyen.
9.1. Requesting updates on stored cards
There are two methods that you can use to submit a request to Adyen to initiate updates for specific card details:
1.
Single update via API request
The API update requests are submitted using the ScheduleAccountUpdater action.
Here is the process:
o
You will submit a SOAP call that includes either the recurringDetailReference for the stored card or the card object
with the card details populated.
o
Adyen will respond and confirm receipt of the request or a failure, the reason field will provide you with the
details of the failure. Such as, the card has already been submitted for an update during the past 7 days.
o
Adyen processes update requests once per day.
Please refer to Appendix I for a SOAP Account Updater API request and response using card data.
Please refer to Appendix J for a SOAP Account Updater API request and response using token data.
2.
Periodical update via a Batch file
Here is the process:
o
You will generate a CSV file that includes the recurringDetailReference for every stored card that needs to be
updated.
o
o
File is submitted via SFTP to Adyen.
Adyen will run validation checks on the file and will respond to confirm receipt and inform you if there were any
problems with the structure of the file.
o
Adyen processes update requests once per day.
Please refer to Appendix K for a sample Account Updater batch file.
On a daily basis Adyen submits the cards, for which an update has been requested, to the card schemes and typically receives
feedback, with the updated information, from the card schemes after two days.
For updates requested via the batch files, the result of the update is provided in a CSV response file. For API requests, the result of
the update is communicated via a notification with the eventCode “ACCOUNT_UPDATER_RESULT” and contains the relevant updated
details, the fields are as follows:
•
success
Whether or not the event succeeded (boolean true/false).
•
reason
For ACCOUNT_UPDATER_RESULT events with the success field set to true values include:
o
o
o
o
o
NoChange
CloseAccount
CloseAccountThisAccountOnly
CardChanged
CardExpiryChanged
When the success field is set to false it gives a reason as to why it failed.
17
Recurring payments manual
The additionalData fields will be populated with the updated details according to the reason value. For example, where the reason is
CardExpiryChanged, the additionalData will be only populated with the updated expiry data, and where the reason is CardChanged,
the additionalData will be populated with the new alias and expiry data.
<additionalData>
<entry>
<key xsi:type="xsd:string">newExpiryMonth</key>
<value xsi:type="xsd:string">2</value>
</entry>
<entry>
<key xsi:type="xsd:string">newExpiryYear</key>
<value xsi:type="xsd:string">2017</value>
</entry>
<entry>
<key xsi:type="xsd:string">newAlias</key>
<value xsi:type="xsd:string">G184393236666944</value>
</entry>
</additionalData>
You may also use the listRecurringDetails call as an alternative for determining if there have been any updates.
For more information regarding Adyen's Batch Processing files, please refer to the Adyen Batch Manual.
9.2. Responses to update requests
Adyen maintains a central list with card data where the “lifecycle” of a card will be registered, this list serves as a reference for the
card data that is stored for recurring payments for merchants.
Adyen will perform a specific action depending upon the response back from the card schemes. The following scenarios can occur:
•
No update on card
o
There have not been any changes to the card details, the central list is not updated; Adyen registers the date of
the latest update check.
•
Expiry date update on card
o
Adyen will maintain version control on any updates. The old card data remain registered on the central list under
version 1; the system will add the new expiry date to the stored card on the central list and will register the date
of the change, the updated details will be stored with an incrementing version number.
o
o
Adyen does not change the recurringDetailReference that is stored.
When you next retrieve the recurring details for a shopper, via the listRecurringDetails action, Adyen will provide
you with the updated details registered for this card in the additionalData section of the response.
Please refer to Appendix M for a SOAP example of a List Recurring Details response with an updated expiry date.
Please refer to Appendix N for a REST example of a List Recurring Details response with an updated expiry date.
o
Adyen will continue to process recurring transactions using the old card data until you provide the updated
details in an authorisation request.
o
Once a payment has been successfully processed using the new expiry date, Adyen will automatically update the
recurringDetailReference with the new expiry date.
•
New card number issued for card
It is possible that the customer's card number has been updated. In this scenario the following process is applicable:
o
o
Adyen will generate a new Alias for this card.
Adyen will provide you with the new Alias via the notification for API driven requests, and via the result file for
batch driven requests. This may also be retrieved by calling the listRecurringDetails action.
o
The old card remains stored under the original Alias and recurringDetailReference, you can continue to use the old
card until it is declined.
o
The listRecurringDetails call returns all the enabled recurringDetailReferences. The updated details will be returned
in the additionalData until a payment is initiated using the updated details. We suggest that you disable the old
recurringDetailReferences so that only the relevant details are returned.
18
Recurring payments manual
Please refer to Appendix O for a SOAP example of a List Recurring Details response with updated card information.
Please refer to Appendix P for a REST example of a List Recurring Details response with updated card information.
•
The detail is disabled
It is possible that the issuing bank requests that the stored details are invalidated, this may occur if the card has been
reported as stolen or if the customer called the bank and informed them that they no longer authorise transactions from a
specific merchant. In this scenario the following process is applicable:
o
o
Adyen will disable the recurringDetailReference.
Adyen will provide you with the update via the notification system for API driven requests, and via the result file
for batch driven requests. The detail will no longer be displayed when calling listRecurringDetails.
Please note, the contract is not disabled.
Please note, in order to receive the changed details back via the additionalData fields, you must use version 6 of the Adyen
Recurring service. Please refer to Appendix A for the URLs.
9.3. Using the updated details
Adyen will not automatically update your stored tokens to use the new details; you will need to submit an authorise request for the
update to occur.
•
Expiry date update on card
o
You will submit an authorise request as described in section 5; you will include the card container with all the
fields set to null except for the updated expiry date fields, except for One-Click payments for which you will also
provide the cvc value.
Please refer to Appendix Q for a SOAP example of a payment request using the updated expiry date.
Please refer to Appendix R for a REST example of a payment request using the updated expiry date.
•
New card number issued for card
o
You will submit an authorise request as described in section 5; you will include the card container with all the
fields populated with the updated values. The card field should be populated with the new card Alias; the
shopperInteraction should be set to 'ContAuth'.
Please refer to Appendix S for a SOAP example of a payment request using the updated card information.
Please refer to Appendix T for a REST example of a payment request using the updated card information.
19
Recurring payments manual
10. FAQ
1. What does response '107 – Recurring is not enabled' mean?
Recurring is not enabled by default. Please contact the Adyen Support Team ([email protected]) to have recurring activated for
your account. Please specify your Company Account in your request.
2. What does response '905 Payment details are not supported' mean?
You receive this error if you try to submit a recurring payment where the payment method or currency are not available. For
example, if you attempt a USD payment when only EUR is enabled on your merchant account. To check the payment methods for
your merchant account in the CA, navigate to “Settings” → “Payment Methods”.
3. What does response 'The server sent HTTP status code 401: Unauthorized' mean?
Your webservice was not able to login properly. Verify that you are using:
•
•
•
The correct Service URL (Payment or Recurring).
The correct username.
The configured password.
4. Is it possible to setup a recurring contract without a payment?
This is possible in one of three ways:
1.
Tokenisation. This method assumes your own systems have already stored authorised credit card details. Please discuss
this option further with your account manager.
2.
Dynamic Zero Value Auth. For card transactions, 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 verification
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 verification, 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.
3.
The following workaround:
a.
In the Adyen CA, ensure the Capture Delay is not set to "immediate" in “Settings” → “Merchant Settings”.
b.
Create an initial payment for a small amount, such as EUR1,00 and set the recurringContract field to "RECURRING"
or "ONECLICK,RECURRING".
c.
Check that the payment is authorised.
d.
Cancel the authorisation before the capture delay time period is met, if any.
The outcome is as follows:
•
•
•
Full authorisation takes place on the card, including CVC checks, 3D secure authentication, if applicable.
If cancellation occurs before the capture, the shopper is not charged.
The card details are stored/tokenised in Adyen.
The shopper should be warned that a small authorisation will take place on their card if using this workaround.
20
Recurring payments manual
Appendix A: TEST and LIVE URLs
Test URL’s
Hosted Payment Pages (Multiple):
https://test.adyen.com/hpp/select.shtml
Hosted Payment Pages (Single):
https://test.adyen.com/hpp/pay.shtml
SOAP Payment Service
https://pal-test.adyen.com/pal/servlet/soap/Payment
SOAP Payment Service WSDL
https://pal-test.adyen.com/pal/Payment.wsdl
HTTP Adapter (Browser)
https://pal-test.adyen.com/pal/adapter/httppost?Payment
SOAP Recurring Service v6
https://pal-test.adyen.com/pal/servlet/soap/Recurring/V6
REST Recurring Service v6
https://pal-test.adyen.com/pal/servlet/Recurring/listRecurringDetails/V6
Live URL’s
Hosted Payment Pages (Multiple):
https://live.adyen.com/hpp/select.shtml
Hosted Payment Pages (Single):
https://live.adyen.com/hpp/pay.shtml
SOAP Payment Service
https://pal-live.adyen.com/pal/servlet/soap/Payment
SOAP Payment Service WSDL
https://pal-live.adyen.com/pal/Payment.wsdl
HTTP Adapter (Browser)
https://pal-live.adyen.com/pal/adapter/httppost?Payment
SOAP Recurring Service v6
https://pal-live.adyen.com/pal/servlet/soap/Recurring/V6
REST Recurring Service v6
https://pal-live.adyen.com/pal/servlet/Recurring/listRecurringDetails/V6
21
Recurring payments manual
Appendix B: Complete workflow example
To help understand the principles outlined in this manual, we will walk through a scenario, from the initial payment through to
subsequent recurring payments.
The Merchant has two offerings – products and subscriptions. For products, the shopper selects a product, pays, and then has the
item delivered to them. The Merchant has decided that, for certain products, they will allow the shopper to choose from an existing
stored card, if it exists, or the option to add a new one.
For subscriptions, the shopper selects a service, pays upfront for the first month, with the option to select from existing stored cards
if they exist, and agrees to be automatically charged every month until they cancel. The Merchant has decided that, for subscriptions
only, they will always use the last stored card details for the shopper in subsequent months.
Step 1: First initial recurring payment
st
On the 1 of January 2014 a shopper signs up with the Merchant and is making their first purchase of a product.
The Merchant creates a Payment request including the required additional fields as follows:
•
•
•
shopperReference: grasshopper77
shopperEmail: [email protected]
recurringContract: RECURRING
The payment request might look as follows:
<input type="hidden" name="merchantReference" value="ProductOrder041-201" />
<input type="hidden" name="paymentAmount" value="5000" />
<input type="hidden" name="currencyCode" value="EUR" />
<input type="hidden" name="shipBeforeDate" value="2014-02-01" />
<input type="hidden" name="skinCode" value="4aD37dJA" />
<input type="hidden" name="merchantAccount" value="SupportAdyenDemo" />
<input type="hidden" name="shopperLocale" value="en_GB" />
<input type="hidden" name="orderData"
value="H4sIAAAAAAAAALMpsOPlCkssyswvLVZIz89PKVZIzEtRKE4tKstMTi3W4+Wy0S+wAwDOGUCXJgAAAA==" />
<input type="hidden" name="sessionValidity" value="2014-01-02T11:00:00Z" />
<input type="hidden" name="merchantSig" value="33syARtfsxD47jeXzOlEyZ0j3pg=" />
<input type="hidden" name="shopperEmail" value="[email protected]" />
<input type="hidden" name="shopperReference" value="grasshopper77" />
<input type="hidden" name="recurringContract" value="RECURRING" />
Once on the HPP, the shopper successfully uses a Visa card ending 1111, and the Merchant receives an AUTHORISATION notification
of successful payment. The merchant now knows the recurring detail has been stored, with a new recurring contract created. The
Merchant does not receive any information about the recurring details, as these are not needed at this point.
Step 2: listRecurringDetails for a shopper
th
A week later, on 8 January 2014, the same shopper returns to the website and purchases a subscription.
The Merchant decides to check to see if the shopper has any stored recurring details:
<?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/XMLSchema-instance">
<soap:Body>
<ns1:listRecurringDetails xmlns:ns1="http://recurring.services.adyen.com">
<ns1:request>
<ns1:recurring>
<contract xmlns="http://payment.services.adyen.com">RECURRING</value>
22
Recurring payments manual
</ns1:recurring>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
</ns1:request>
</ns1:listRecurringDetails>
</soap:Body>
</soap:Envelope>
The response comes back that there is one stored card for the shopper – the Visa from the first payment. Here we can see the
recurringDetailReference for the first time:
<?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/XMLSchema-instance">
<soap:Body>
<ns1:listRecurringDetailsResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<creationDate xmlns="http://recurring.services.adyen.com">2014-01-01T01:50:12.178+01:00</creationDate>
<details xmlns="http://recurring.services.adyen.com">
<RecurringDetail>
<bank xsi:nil="true"/>
<card>
<cvc xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<expiryMonth xmlns="http://payment.services.adyen.com">12</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2016</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">Grass Hopper</holderName>
<number xmlns="http://payment.services.adyen.com">1111</number>
</card>
<creationDate>2014-01-01T01:50:16.353+01:00</creationDate>
<elv xsi:nil="true"/>
<name xsi:nil="true"/>
<recurringDetailReference>8313147988756818</recurringDetailReference>
<variant>visa</variant>
</RecurringDetail>
</details>
<lastKnownShopperEmail
xmlns="http://recurring.services.adyen.com">[email protected]</lastKnownShopperEmail>
<shopperReference xmlns="http://recurring.services.adyen.com">grashopper77</shopperReference>
</ns1:result>
</ns1:listRecurringDetailsResponse>
</soap:Body>
</soap:Envelope>
Step 3: Subsequent payment
Based upon the results of step 2, the Merchant offers the shopper the choice of using the previously stored card ending with “1111”
or a new card. The shopper chooses to use the existing card ending with “1111”, so the Merchant can now submit a Payment without
the shopper needing to enter their card details again.
The merchant submits a Payment request with the following additional fields:
•
•
•
selectedRecurringDetailReference: In this case it is “8313147988756818”
recurring / contract: “RECURRING” since it was set this way in Step 1
shopperInteraction: “ContAuth” since the contract is RECURRING
The payment request, this time sent via SOAP, might look as follows:
<?xml version="1.0"?>
23
Recurring payments manual
<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/XMLSchema-instance">
<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</value>
<value xmlns="http://common.services.adyen.com">4000</value>
</amount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>SubscriptionOrder031-241</ns1:reference>
<ns1:shopperEmail>[email protected]</ns1:shopperEmail>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:selectedRecurringDetailReference>8313147988756818</ns1:selectedRecurringDetailReference>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
The response might look as follows:
<?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/XMLSchema-instance">
<soap:Body>
<ns1:authoriseResponse xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentResult>
<authCode xmlns="http://payment.services.adyen.com">64158</authCode>
<pspReference xmlns="http://payment.services.adyen.com">8613147994700690</pspReference>
<resultCode xmlns="http://payment.services.adyen.com">Authorised</resultCode>
</ns1:paymentResult>
</ns1:authoriseResponse>
</soap:Body>
</soap:Envelope>
Notifications are also sent, as was the case in Step 1.
Step 4: Storing a second recurring detail
On 17 January 2014, the shopper purchases another product from the Merchant.
As with Step 2, the Merchant retrieves a list of the stored recurring details and gets the same result as presented there. The
Merchant offers the shopper the choice of using the previously stored card ending with “1111” or a new card. This time the shopper
chooses to use a new card, so the Merchant must now submit a Payment where they will create another recurring detail on an
existing recurring contract.
The payment request might look as follows:
<input type="hidden" name="merchantReference" value="ProductOrder053-204" />
<input type="hidden" name="paymentAmount" value="3133" />
<input type="hidden" name="currencyCode" value="EUR" />
<input type="hidden" name="shipBeforeDate" value="2014-01-17" />
<input type="hidden" name="skinCode" value="4aD37dJA" />
<input type="hidden" name="merchantAccount" value="SupportAdyenTest" />
<input type="hidden" name="shopperLocale" value="en_GB" />
24
Recurring payments manual
<input type="hidden" name="orderData"
value="H4sIAAAAAAAAALMpsOPlCkssyswvLVZIz89PKVZIzEtRKE4tKstMTi3W4+Wy0S+wAwDOGUCXJgAAAA==" />
<input type="hidden" name="sessionValidity" value="2014-01-18T11:00:00Z" />
<input type="hidden" name="merchantSig" value="33syWRtfDxDwq3235zOlEyZ0j3pg=" />
<input type="hidden" name="shopperEmail" value="[email protected]" />
<input type="hidden" name="shopperReference" value="grasshopper77" />
<input type="hidden" name="recurringContract" value="RECURRING" />
Once on the HPP, the shopper successfully uses a Mastercard ending 4444, and the Merchant receives an AUTHORISATION
notification of successful payment. The merchant now knows the recurring detail has been stored against the existing recurring
contract. The Merchant does not receive any information about the recurring details, as these are not needed at this point.
There is now one recurring contract with two recurring details – the Visa card from the first purchase, and the Mastercard from this
purchase.
Step 5: Second subsequent payment
On 08 February 2014, a month has passed and the Merchant now needs to charge the shopper the next installment of their
subscription. Since the Merchant has chosen to use the latest stored details of the shopper they do not need to go through Step 2.
Instead they can immediately submit the Payment request with the following additional fields:
•
•
•
selectedRecurringDetailReference: “LATEST”
recurring / contract: “RECURRING” since it was set this way in Step 1
shopperInteraction: “ContAuth” since the contract is RECURRING
The payment request, this time sent via SOAP, might look as follows:
<?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/XMLSchema-instance">
<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">1000</value>
</amount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>SubscriptionOrder031-241</ns1:reference>
<ns1:shopperEmail>[email protected]</ns1:shopperEmail>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:selectedRecurringDetailReference>LATEST</ns1:selectedRecurringDetailReference>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
The response is similar to that of Step 3, except that the Mastercard from Step 4 is used for the Payment, and not the Visa card from
Steps 1 & 3, since it was the most recently used recurring detail for this shopper.
This can be verified by looking up the recurring details for the shopper and noting the creationDate in each RecurringDetail:
<?xml version="1.0"?>
25
Recurring payments manual
<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/XMLSchema-instance">
<soap:Body>
<ns1:listRecurringDetailsResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<creationDate xmlns="http://recurring.services.adyen.com">2014-01-01T01:50:12.178+01:00</creationDate>
<details xmlns="http://recurring.services.adyen.com">
<RecurringDetail>
<bank xsi:nil="true"/>
<card>
<cvc xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<expiryMonth xmlns="http://payment.services.adyen.com">12</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2016</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">Grass Hopper</holderName>
<number xmlns="http://payment.services.adyen.com">4444</number>
</card>
<creationDate>2014-01-17T08:31:07.583+01:00</creationDate>
<elv xsi:nil="true"/>
<name xsi:nil="true"/>
<recurringDetailReference>8313148012347491</recurringDetailReference>
<variant>mc</variant>
</RecurringDetail>
<RecurringDetail>
<bank xsi:nil="true"/>
<card>
<cvc xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<expiryMonth xmlns="http://payment.services.adyen.com">12</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2016</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">Grass Hopper</holderName>
<number xmlns="http://payment.services.adyen.com">1111</number>
</card>
<creationDate>2014-01-01T01:50:16.353+01:00</creationDate>
<elv xsi:nil="true"/>
<name xsi:nil="true"/>
<recurringDetailReference>8313147988756818</recurringDetailReference>
<variant>visa</variant>
</RecurringDetail>
</details>
<lastKnownShopperEmail
xmlns="http://recurring.services.adyen.com">[email protected]</lastKnownShopperEmail>
<shopperReference xmlns="http://recurring.services.adyen.com">grashopper77</shopperReference>
</ns1:result>
</ns1:listRecurringDetailsResponse>
</soap:Body>
</soap:Envelope>
The above listRecurringDetails Response has been truncated to remove some lines with nil results.
26
Recurring payments manual
Appendix C: REST example of a listRecurringDetails request and
response
Request
action=Recurring.listRecurringDetails
&recurringDetailsRequest.merchantAccount=SupportAdyenTest&recurringDetailsRequest.shopperReference=grasshopper&
recurringDetailsRequest.recurring.contract=RECURRING
Response
recurringDetailsResult.creationDate=2014-01-01T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.card.expiryMonth=6& recurringDetailsResult.details.0.card.expiryYear=2016&
recurringDetailsResult.details.0.card.holderName=test& recurringDetailsResult.details.0.card.number=1111&
recurringDetailsResult.details.0.creationDate=2014-01-22T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.recurringDetailReference=8413903993289958& recurringDetailsResult.details.0.variant=visa&
recurringDetailsResult.details.1.card.expiryMonth=6& recurringDetailsResult.details.1.card.expiryYear=2016&
recurringDetailsResult.details.1.card.holderName=Consumer& recurringDetailsResult.details.1.card.number=1111&
recurringDetailsResult.details.1.creationDate=2014-01-24T10%3A37%3A16%2B01%3A00&
recurringDetailsResult.details.1.recurringDetailReference=8313905562367504& recurringDetailsResult.details.1.variant=mc&
recurringDetailsResult.lastKnownShopperEmail=test%40shopper.nl& recurringDetailsResult.shopperReference=SHOPPER1
27
Recurring payments manual
Appendix D: REST example of a recurring payment request and
response
Request
action=Payment.authorise
&paymentRequest.amount.currency=EUR&paymentRequest.amount.value=1234&paymentRequest.merchantAccount=
SupportAdyenTest&paymentRequest.reference=test1234&paymentRequest.shopperReference=gras.shopper77&
[email protected]&paymentRequest.shopperIP=1.1.1.1&
paymentRequest.selectedRecurringDetailReference=RecurringDetailReference1&
paymentRequest.recurring.contract=RECURRING&shopperInteraction=ContAuth
Response
paymentResult.authCode=64158&paymentResult.pspReference=8613147994700690&paymentResult.resultCode=Authorised
28
Recurring payments manual
Appendix E: SOAP example for updating stored details
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/XMLSchema-instance">
<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</value>
<value xmlns="http://common.services.adyen.com">100</value>
</amount>
<ns1:card>
<ns1:expiryMonth>11</ns1:expiryMonth>
<ns1:expiryYear>2016</ns1:expiryYear>
</ns1:card>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>RecurringPayment-0001</ns1:reference>
<ns1:shopperIP>1.1.1.1</ns1:shopperIP>
<ns1:shopperEmail>[email protected]</ns1:shopperEmail>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:selectedRecurringDetailReference>RecurringDetailReference1</ns1:selectedRecurringDetailReference>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
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/XMLSchema-instance">
<soap:Body>
<ns1:authoriseResponse xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentResult>
<authCode xmlns="http://payment.services.adyen.com">79688</authCode>
<pspReference xmlns="http://payment.services.adyen.com">8613904894998224</pspReference>
<resultCode xmlns="http://payment.services.adyen.com">Authorised</resultCode>
</ns1:paymentResult>
</ns1:authoriseResponse>
</soap:Body>
</soap:Envelope>
Please note, the response to this request is a regular authorise payment response.
29
Recurring payments manual
Appendix F: REST example for updating stored details
Request
action=Payment.authorise
&paymentRequest.amount.currency=EUR&paymentRequest.amount.value=1234&
paymentRequest.card.expiryMonth=06&paymentRequest.card.expiryYear=2016&paymentRequest.merchantAccount=
SupportAdyenTest&paymentRequest.reference=test1234&paymentRequest.shopperReference=gras.shopper77&
[email protected]&paymentRequest.shopperIP=1.1.1.1&
paymentRequest.selectedRecurringDetailReference=RecurringDetailReference1&paymentRequest.recurring.contract=RECURRING
&paymentRequest.shopperInteraction=ContAuth
Response
paymentResult.authCode=79688&paymentResult.pspReference=8613904894998224&paymentResult.resultCode=Authorised
Please note, the response to this request is a regular authorise payment response.
30
Recurring payments manual
Appendix G: SOAP example of a disable recurring contract request and
response
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/XMLSchema-instance">
<soap:Body>
<ns1:disable xmlns:ns1="http://recurring.services.adyen.com">
<ns1:request>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:recurringDetailReference>8313147988756818</ns1:recurringDetailReference>
</ns1:request>
</ns1:disable>
</soap:Body>
</soap:Envelope>
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/XMLSchema-instance">
<soap:Body>
<ns1:disableResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<response xmlns="http://recurring.services.adyen.com">[detail-successfully-disabled]</response>
</ns1:result>
</ns1:disableResponse>
</soap:Body>
</soap:Envelope>
31
Recurring payments manual
Appendix H: REST example of a disable recurring contract request and
response
Request
action=Recurring.disable
&disableRequest.merchantAccount=SupportAdyenTest&disableRequest.shopperReference=grasshopper77&disableRequest.
recurringDetailReference=8313147988756818
Response
disableResult.response=%5Bdetail-successfully-disabled%5D
32
Recurring payments manual
Appendix I: SOAP account updater request and response using card
data
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/XMLSchema-instance">
<soap:Body>
<ns1:scheduleAccountUpdater xmlns:ns1="http://recurring.services.adyen.com">
<ns1:request>
<merchantAccount xmlns:ns1="http://recurring.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference>Your Reference Here</reference>
<card xmlns="http://payment.services.adyen.com">
<expiryMonth xmlns:ns1="http://payment.services.adyen.com">12</expiryMonth>
<expiryYear xmlns:ns1="http://payment.services.adyen.com">2012</expiryYear>
<holderName xmlns:ns1="http://payment.services.adyen.com">Adyen Test</holderName>
<number xmlns:ns1="http://payment.services.adyen.com">4111111111111111</number>
</card>
</ns1:request>
</ns1:scheduleAccountUpdater>
</soap:Body>
</soap:Envelope>
Response
<?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/XMLSchema-instance">
<soap:Body>
<ns1:scheduleAccountUpdaterResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<pspReference xmlns="http://recurring.services.adyen.com">8313547924770610</pspReference>
<result xmlns="http://recurring.services.adyen.com">Success</result>
</ns1:result>
</ns1:scheduleAccountUpdaterResponse>
</soap:Body>
</soap:Envelope>
33
Recurring payments manual
Appendix J: SOAP account updater request and response using token
data
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/XMLSchema-instance">
<soap:Body>
<ns1:scheduleAccountUpdater xmlns:ns1="http://recurring.services.adyen.com">
<ns1:request>
<merchantAccount xmlns:ns1="http://recurring.services.adyen.com">SupportAdyenTest</merchantAccount>
<reference xmlns:ns1="http://recurring.services.adyen.com">Your Reference Here</reference>
<shopperReference xmlns:ns1="http://recurring.services.adyen.com">The Shopper Reference</shopperReference>
<selectedRecurringDetailReference
xmlns:ns1="http://recurring.services.adyen.com">TheSelectedRecurringDetailReference</selectedRecurringDetailReference>
</ns1:request>
</ns1:scheduleAccountUpdater>
</soap:Body>
</soap:Envelope>
Response
<?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/XMLSchema-instance">
<soap:Body>
<ns1:scheduleAccountUpdaterResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<pspReference xmlns="http://recurring.services.adyen.com">8313547924770610</pspReference>
<result xmlns="http://recurring.services.adyen.com">Success</result>
</ns1:result>
</ns1:scheduleAccountUpdaterResponse>
</soap:Body>
</soap:Envelope>
34
Recurring payments manual
Appendix K: Sample Account Updater batch file
Request
FH,1.0,TEST,Company,SupportAdyen,Default,1,[email protected],AccountUpdater,FileHeaderEchoData
BH,1,BlockHeaderEchoData
L,1,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference,EchoData
SL,1,AccountUpdaterRecurring,ShopperRef012A,8104963078926481
L,2,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference1,EchoData1
SL,1,AccountUpdaterRecurring,ShopperRef345A,8193468172596018
L,3,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference2,EchoData2
SL,1,AccountUpdaterRecurring,ShopperRef678A,LATEST
L,4,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference3,EchoData3
SL,1,AccountUpdaterRecurring,ShopperRef901B,8192487112598013
L,5,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference4,EchoData5
SL,1,AccountUpdaterRecurring,ShopperRef234B,8169777420688239
L,6,MerchantAccount,SupportAdyenTest,AccountUpdater,MerchantReference5,EchoData5
SL,1,AccountUpdaterRecurring,ShopperRef567B,8105548933206577
BT,6
FT,1
Response
FH,1.0,TEST,Company,SupportAdyen,Default,1,[email protected],AccountUpdater,FileHeaderEchoData
BH,1,BlockHeaderEchoData
L,1,MerchantAccount,SupportAdyen,AccountUpdater,Success,9874560210158742,EchoData
SL,1,AccountUpdaterResult,9874560210158742,Submitted,NoChange,2013-11-13,,,
L,2,MerchantAccount,SupportAdyen,AccountUpdater,Success,9874560210158786,
SL,1,AccountUpdaterResult,9874560210158786,Submitted,CloseAccount,2013-11-13,,,
L,3,MerchantAccount,SupportAdyen,AccountUpdater,Success,9458762458135487,EchoData
SL,1,AccountUpdaterResult,9458762458135487,Submitted,PANChanged,2013-11-13,D123456789,07,2018
L,4,MerchantAccount,SupportAdyen,AccountUpdater,Success,9584215412154876,EchoData
SL,1,AccountUpdaterResult,9584215412154876,Submitted,CardExpiryChanged,2013-09-15,,03,2017
L,5,MerchantAccount,SupportAdyen,AccountUpdater,Success,9248414112548965,EchoData
SL,1,AccountUpdaterResult,9248414112548965,Submitted,Error,2013-09-15,,,
L,6,MerchantAccount,SupportAdyen,AccountUpdater,Success,9815487887958742,EchoData
SL,1,AccountUpdaterResult,9815487887958742,Not Submitted,,,,,,No registered account
BT,6
FT,1
35
Recurring payments manual
Appendix L: SOAP tokenLookup request and response
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/XMLSchema-instance">
<soap:Body>
<ns1:tokenLookup xmlns:ns1="http://recurring.services.adyen.com">
<ns1:request>
<merchantAccount xmlns="http://recurring.services.adyen.com">SupportAdyenTest</merchantAccount>
<card xmlns:ns1="http://recurring.services.adyen.com">
<expiryMonth xmlns="http://payment.services.adyen.com">06</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2016</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">T. Est</holderName>
<number xmlns="http://payment.services.adyen.com">4444333322221111</number>
</card>
</ns1:request>
</ns1:tokenLookup>
</soap:Body>
</soap:Envelope>
Response
<?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/XMLSchema-instance">
<soap:Body>
<ns1:tokenLookupResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<additionalData xmlns="http://recurring.services.adyen.com" xsi:nil="true"/>
<pspReference xmlns="http://recurring.services.adyen.com">9913848498374230</pspReference>
<tokens xmlns="http://recurring.services.adyen.com">
<tokenDetail>
<creationDate>2013-09-12T10:13:09+02:00</creationDate>
<lastKnownShopperEmail>[email protected]</lastKnownShopperEmail>
<shopperReference>shopperReference001</shopperReference>
</tokenDetail>
<tokenDetail>
<creationDate>2013-04-20T13:22:01+02:00</creationDate>
<lastKnownShopperEmail>[email protected]</lastKnownShopperEmail>
<shopperReference>shopperReference002</shopperReference>
</tokenDetail>
<tokenDetail>
<creationDate>2012-03-25T14:59:27+01:00</creationDate>
<lastKnownShopperEmail>[email protected]</lastKnownShopperEmail>
<shopperReference>shopperReference008</shopperReference>
</tokenDetail>
</tokens>
</ns1:result>
</ns1:tokenLookupResponse>
</soap:Body>
</soap:Envelope>
36
Recurring payments manual
Appendix M: SOAP listRecurringDetails response with updated expiry
date
<?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/XMLSchema-instance">
<soap:Body>
<ns1:listRecurringDetailsResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<creationDate xmlns="http://recurring.services.adyen.com">2012-12-03T17:43:42+01:00</creationDate>
<details xmlns="http://recurring.services.adyen.com">
<RecurringDetail>
<additionalData>
<entry>
<key xsi:type="xsd:string">cardBin</key>
<value xsi:type="xsd:string">555544</value>
</entry>
<entry>
<key xsi:type="xsd:string">newExpiryMonth</key>
<value xsi:type="xsd:string">9</value>
</entry>
<entry>
<key xsi:type="xsd:string">newExpiryYear</key>
<value xsi:type="xsd:string">2016</value>
</entry>
<entry>
<key xsi:type="xsd:string">lastAccountUpdaterCheck</key>
<value xsi:type="xsd:string">2014-03-22 10:01:11.883+01</value>
</entry>
</additionalData>
<alias>M104640077590143</alias>
<aliasType>Default</aliasType>
<bank xsi:nil="true"/>
<card>
<cvc xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<expiryMonth xmlns="http://payment.services.adyen.com">7</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2015</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">Grass Hopper</holderName>
<number xmlns="http://payment.services.adyen.com">4444</number>
</card>
<creationDate>2012-12-03T17:43:42+01:00</creationDate>
<elv xsi:nil="true"/>
<name xsi:nil="true"/>
<recurringDetailReference>8313148012347491</recurringDetailReference>
<variant>mc</variant>
<tokenDetails>
<tokenData xmlns="http://payment.services.adyen.com" xsi:nil="true" />
<tokenDataType xmlns="http://payment.services.adyen.com" xsi:nil="true" />
</tokenDetails>
</RecurringDetail>
</details>
<lastKnownShopperEmail
xmlns="http://recurring.services.adyen.com">[email protected]</lastKnownShopperEmail>
<shopperReference xmlns="http://recurring.services.adyen.com">grashopper77</shopperReference>
</ns1:result>
</ns1:listRecurringDetailsResponse>
</soap:Body>
</soap:Envelope>
37
Recurring payments manual
Appendix N: REST listRecurringDetails response with updated expiry
date
recurringDetailsResult.creationDate=2014-01-01T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.card.expiryMonth=6&
recurringDetailsResult.details.0.card.expiryYear=2016&
recurringDetailsResult.details.0.card.holderName=test&
recurringDetailsResult.details.0.card.number=1111&
recurringDetailsResult.details.0.creationDate=2014-01-22T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.recurringDetailReference=8413903993289958&
recurringDetailsResult.details.0.variant=visa&
recurringDetailsResult.details.1.card.expiryMonth=6&
recurringDetailsResult.details.1.card.expiryYear=2016&
recurringDetailsResult.details.1.card.holderName=Consumer&
recurringDetailsResult.details.1.card.number=1111&
recurringDetailsResult.details.1.creationDate=2014-01-24T10%3A37%3A16%2B01%3A00&
recurringDetailsResult.details.1.recurringDetailReference=8313905562367504&
recurringDetailsResult.details.1.variant=mc&
recurringDetailsResult.lastKnownShopperEmail=test%40shopper.nl&
recurringDetailsResult.shopperReference=SHOPPER1&
recurringDetailsResult.additionalData.newExpiryMonth=9&
recurringDetailsResult.additionalData.newExpiryYear=2016&
recurringDetailsResult.additionalData.lastAccountUpdaterCheck=2014-03-22 10:01:11.883+01
38
Recurring payments manual
Appendix O: SOAP listRecurringDetails response with updated card
information
<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/XMLSchema-instance">
<soap:Body>
<ns1:listRecurringDetailsResponse xmlns:ns1="http://recurring.services.adyen.com">
<ns1:result>
<creationDate>2012-12-03T17:43:42+01:00</creationDate>
<details xmlns="http://recurring.services.adyen.com">
<RecurringDetail>
<additionalData>
<entry>
<key xsi:type="xsd:string">newAlias</key>
<value xsi:type="xsd:string">M104640658147143</value>
</entry>
<entry>
<key xsi:type="xsd:string">newExpiryMonth</key>
<value xsi:type="xsd:string">9</value>
</entry>
<entry>
<key xsi:type="xsd:string">newExpiryYear</key>
<value xsi:type="xsd:string">2016</value>
</entry>
<entry>
<key xsi:type="xsd:string">lastAccountUpdaterCheck</key>
<value xsi:type="xsd:string">2014-03-22 10:01:11.883+01</value>
</entry>
<entry>
<key xsi:type="xsd:string">newCardBin</key>
<value xsi:type="xsd:string">555543</value>
</entry>
<entry>
<key xsi:type="xsd:string">newCardSummary</key>
<value xsi:type="xsd:string">1234</value>
</entry>
</additionalData>
<alias>M104640077590143</alias>
<aliasType>Default</aliasType>
<bank xsi:nil="true"/>
<card>
<cvc xmlns="http://payment.services.adyen.com" xsi:nil="true"/>
<expiryMonth xmlns="http://payment.services.adyen.com">7</expiryMonth>
<expiryYear xmlns="http://payment.services.adyen.com">2015</expiryYear>
<holderName xmlns="http://payment.services.adyen.com">Grass Hopper</holderName>
<number xmlns="http://payment.services.adyen.com">4444</number>
</card>
<creationDate>2012-12-03T17:43:42+01:00</creationDate>
<recurringDetailReference>8313148012347491</recurringDetailReference>
<variant>mc</variant>
<tokenDetails>
<tokenData xmlns="http://payment.services.adyen.com" xsi:nil="true" />
<tokenDataType xmlns="http://payment.services.adyen.com" xsi:nil="true" />
</tokenDetails>
</RecurringDetail>
</details>
<lastKnownShopperEmail>[email protected]</lastKnownShopperEmail>
<shopperReference>grashopper77</shopperReference>
</ns1:result>
</ns1:listRecurringDetailsResponse>
</soap:Body>
</soap:Envelope>
39
Recurring payments manual
Appendix P: REST listRecurringDetails response with updated card
information
recurringDetailsResult.creationDate=2014-01-01T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.card.expiryMonth=6&
recurringDetailsResult.details.0.card.expiryYear=2016&
recurringDetailsResult.details.0.card.holderName=test&
recurringDetailsResult.details.0.card.number=1111&
recurringDetailsResult.details.0.creationDate=2014-01-22T15%3A02%3A08%2B01%3A00&
recurringDetailsResult.details.0.recurringDetailReference=8413903993289958&
recurringDetailsResult.details.0.variant=visa&
recurringDetailsResult.details.1.card.expiryMonth=6&
recurringDetailsResult.details.1.card.expiryYear=2016&
recurringDetailsResult.details.1.card.holderName=Consumer&
recurringDetailsResult.details.1.card.number=1111&
recurringDetailsResult.details.1.creationDate=2014-01-24T10%3A37%3A16%2B01%3A00&
recurringDetailsResult.details.1.recurringDetailReference=8313905562367504&
recurringDetailsResult.details.1.variant=mc&
recurringDetailsResult.lastKnownShopperEmail=test%40shopper.nl&
recurringDetailsResult.shopperReference=SHOPPER1&
recurringDetailsResult.additionalData.newAlias=M104640658147143&
recurringDetailsResult.additionalData.newExpiryMonth=9&
recurringDetailsResult.additionalData.newExpiryYear=2016&
recurringDetailsResult.additionalData.lastAccountUpdaterCheck=2014-03-22 10:01:11.883+01&
recurringDetailsResult.additionalData.newCardBin=555543&
recurringDetailsResult.additionalData.newCardSummary=1234
40
Recurring payments manual
Appendix Q: SOAP payment request with updated expiry date
<?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/XMLSchema-instance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<card xmlns="http://payment.services.adyen.com">
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName></holderName>
<number></number>
<cvc></cvc>
</card>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</value>
<value xmlns="http://common.services.adyen.com">1000</value>
</amount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>SubscriptionOrder031-241</ns1:reference>
<ns1:shopperEmail>[email protected]</ns1:shopperEmail>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:selectedRecurringDetailReference>LATEST</ns1:selectedRecurringDetailReference>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
41
Recurring payments manual
Appendix R: REST payment request with updated expiry date
Request
action=Payment.authorise
&paymentRequest.amount.currency=EUR&paymentRequest.amount.value=1234&paymentRequest.card.cvc=&paymentRequest.
card.expiryMonth=06&paymentRequest.card.expiryYear=2016&paymentRequest.card.holderName=&paymentRequest.card.
number=&paymentRequest.merchantAccount=SupportAdyenTest&paymentRequest.reference=test1234&paymentRequest.
selectedRecurringDetailReference=LATEST&paymentRequest.recurring.contract=RECURRING&shopperInteraction=ContAuth
Response
paymentResult.authCode=64158&paymentResult.pspReference=8613147994700690&paymentResult.resultCode=Authorised
42
Recurring payments manual
Appendix S: SOAP payment request with new card details
<?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/XMLSchema-instance">
<soap:Body>
<ns1:authorise xmlns:ns1="http://payment.services.adyen.com">
<ns1:paymentRequest>
<card xmlns="http://payment.services.adyen.com">
<expiryMonth>06</expiryMonth>
<expiryYear>2016</expiryYear>
<holderName>Adyen Test</holderName>
<number>AliasHere</number>
<cvc></cvc>
</card>
<amount xmlns="http://payment.services.adyen.com">
<currency xmlns="http://common.services.adyen.com">EUR</value>
<value xmlns="http://common.services.adyen.com">1000</value>
</amount>
<ns1:merchantAccount>SupportAdyenTest</ns1:merchantAccount>
<ns1:reference>SubscriptionOrder031-241</ns1:reference>
<ns1:shopperEmail>[email protected]</ns1:shopperEmail>
<ns1:shopperReference>grasshopper77</ns1:shopperReference>
<ns1:selectedRecurringDetailReference>LATEST</ns1:selectedRecurringDetailReference>
<ns1:recurring>
<ns1:contract>RECURRING</ns1:contract>
</ns1:recurring>
<ns1:shopperInteraction>ContAuth</ns1:shopperInteraction>
</ns1:paymentRequest>
</ns1:authorise>
</soap:Body>
</soap:Envelope>
43
Recurring payments manual
Appendix T: REST payment request with new card details
Request
action=Payment.authorise
&paymentRequest.amount.currency=EUR&paymentRequest.amount.value=1234&paymentRequest.card.cvc=&paymentRequest.
card.expiryMonth=06&paymentRequest.card.expiryYear=2016&paymentRequest.card.holderName=Adyen+Test&
paymentRequest.card.number=AliasHere&paymentRequest.merchantAccount=SupportAdyenTest&paymentRequest.
reference=test1234&paymentRequest.selectedRecurringDetailReference=LATEST&paymentRequest.recurring.contract=
RECURRING&shopperInteraction=ContAuth
Response
paymentResult.authCode=64158&paymentResult.pspReference=8613147994700690&paymentResult.resultCode=Authorised
44
Recurring payments manual