Adyen Integration Guide

The partnership between Braintree and Adyen enables merchants in any country that Adyen supports to use their existing Braintree integration to process transactions through the PayPal Orchestration platform.

FeaturesAnchorIcon

The following topics summarize the capabilities that this integration supports.

Core transaction lifecycleAnchorIcon

The following table describes support for the core transaction lifecycle operations with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by merchant configuration

CapabilitySupportNotes
Charge (single-step or orchestrated)Use Authorization and Capture instead.
Standalone authorizationMust be captured before expiration (the processor-defined expiry window).
Capture (full)Captures a previously authorized transaction. Asynchronously transitions from SETTLING to SETTLED or SETTLEMENT_DECLINED on the Adyen webhook.
Partial capture
Capture more than the authorized amount
Adjust the authorization API (incremental authorization or partial reversal)If you need this, contact your TAM.

Voids and refundsAnchorIcon

The following table describes support for voids and refusals with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by merchant configuration

CapabilitySupportNotes
Full void (authorization reversal)A full void cancels an authorized transaction prior to settlement.
Partial void
Void a settled transactionUse a refund instead.
Issue a full refundAsynchronously transitions from SETTLING to SETTLED or SETTLEMENT_DECLINED on the Adyen webhook.
Partial refundRefunds cannot exceed the settled amount.
Multiple refunds
Blind credits (refunds for transactions that were processed elsewhere)A refund must reference the original transaction.

Payment instruments and methodsAnchorIcon

The following table describes support for payment instruments and methods with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by merchant configuration

CapabilitySupportNotes
Credit cardsThis integration includes support for all cards that Adyen supports.
Debit cardsThis integration includes support for all debit cards that Adyen supports.
Prepaid cardsSupported where Adyen supports prepaid cards.
Apple PayNot currently supported through Custom Actions
Google PayNot currently supported through Custom Actions
Venmo or PayPal

Data, descriptors, and fraud signalsAnchorIcon

The following table describes support for data, descriptors, and fraud signals with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by merchant configuration

CapabilitySupportNotes
Address Verification System (AVS) or Card Verification Value (CVV) response handling⚠️Authorization returns a CVV response code. Not returned for Card Verification.
Dynamic descriptors⚠️Supported for Authorization. Not sent on Card Verification.
Network tokensBraintree-managed and Bring Your Own Network Token (BYONT) are both available. For more information, see Network token support.
Level 2 or Level 3 (L2/L3) data⚠️Supported on Authorization and Capture. Both purchaseOrderNumber and taxAmount must be present to include L2/L3 data on Capture.
3D Secure (3DS)⚠️Supported, but not required.

VerificationsAnchorIcon

The following table describes support for verifications with this integration.

Legend: ✅ Supported | ❌ Not supported | ⚠️ Conditional or varies by merchant configuration

CapabilitySupportNotes
$0 (zero) verificationAdyen receives amount: 0 with the verification amount as additionalAmount.
Non-zero verificationVerifications are synchronous and return VERIFIED or PROCESSOR_DECLINED.
Wallet verificationNot supported through Custom Actions in this integration

Before you beginAnchorIcon

To set up an Adyen integration, you configure both Braintree and Adyen:

  • On Braintree: Processing card transactions through Adyen requires currency-specific Braintree merchant accounts. Your Braintree account manager (AM) or technical account manager (TAM) can help.
  • On Adyen: Each merchant must have an Adyen account. When your Adyen account is set up, work with your AM or TAM to configure your processor connection to Adyen.

Also review the following Adyen-specific requirements to ensure that you are in compliance before processing transactions through Adyen:

  • CVV requirements: Recurring transactions (for example, subscriptions) or transactions that use a vaulted card might not include a CVV. This can affect approval rates with some card issuers. To adjust CVV handling, contact your TAM.
  • Billing address format: Braintree passes the billing address to Adyen with the house number separate from the street name. It sends leading digits in the street address as houseNumberOrName and the remainder as street. If your street addresses do not begin with a house number (for example, "Flat 3, 10 Baker Street"), you might see validation errors for billing address fields (Adyen error codes 131–133). If you encounter this type of error, contact your TAM.
  • Webhooks: Braintree subscribes to the following Adyen webhook event codes to drive transaction status updates: CAPTURE, CAPTURE_FAILED, REFUND, REFUND_FAILED, and CANCELLATION. Merchants are not required to implement their own webhooks, though they can do so for additional notifications.
  • L2/L3 data: For information about L2/L3 data, see L2/L3 enhanced data support.
  • Decimal places: Only currencies with 0 or 2 decimal places are supported (for example, USD, EUR, JPY). Currencies with 3 decimal places (for example, KWD, BHD) are not currently supported and will return an error.

TransactionsAnchorIcon

The following topics describe the requirements for this integration.

For general information about Braintree transactions, see:

Transaction creationAnchorIcon

When you create a transaction, include the required fields and any optional fields that are appropriate for your use case.

The following table lists the fields that Adyen transactions typically require.

FieldLocationHow to provideNotes
amountTransactionInclude in transactionTransaction amount in the smallest currency unit.
currencyIsoCodeTransactionInclude in transactionMust be a valid ISO currency code for a 0- or 2-decimal currency that Adyen supports.

Fields that Braintree passes to AdyenAnchorIcon

The following tables list the fields that Braintree passes to Adyen for each operation.

AuthorizeAnchorIcon

The following table lists the Braintree fields that Braintree passes to Adyen on authorization.

Braintree fieldAdyen fieldRequiredNotes
amountamount.valueConverted to smallest currency unit (cents for 2-decimal currencies)
currencyIsoCodeamount.currencyThree-letter ISO currency code, uppercase
creditCard.numberpaymentMethod.numberTest cards are remapped in sandbox.
creditCard.expirationMonthpaymentMethod.expiryMonthFormat: MM
creditCard.expirationYearpaymentMethod.expiryYearFormat: YYYY
creditCard.cardholderNamepaymentMethod.holderName
creditCard.cvvpaymentMethod.cvc
Omitted for recurring or merchant-initiated transactions (MIT)
billing.streetAddressbillingAddress.street + billingAddress.houseNumberOrName
Braintree sends the leading digits as houseNumberOrName and the remainder as street.
billing.localitybillingAddress.city
billing.regionbillingAddress.stateOrProvince
billing.postalCodebillingAddress.postalCode
billing.countryCodeAlpha2billingAddress.country
customer.emailshopperEmail
customer.firstNameshopperName.firstName
customer.lastNameshopperName.lastName
customer.phonetelephoneNumber
riskData.customerIpshopperIP
descriptor.nameshopperStatement
Descriptor that appears on the cardholder statement
threeDSecureData.cavvmpiData.cavv
3DS CAVV value
threeDSecureData.dsTransactionIdmpiData.dsTransID
3DS Directory Server Transaction ID
threeDSecureData.eciFlagmpiData.eci
3DS Electronic Commerce Indicator
threeDSecureData.versionmpiData.threeDSVersion
For example, "2.1.0"
threeDSecureData.xIdmpiData.xid
3DS XID value
networkTransactionIdentifiernetworkTxReference
Included for merchant-initiated transactions

CaptureAnchorIcon

The following table lists the Braintree fields that pass to Adyen on capture.

Braintree fieldAdyen fieldRequiredNotes
amountamount.valueCapture amount in smallest currency unit. Partial capture is supported.
currencyIsoCodeamount.currency
purchaseOrderNumber + taxAmountadditionalData (L2/L3 fields)
Both purchaseOrderNumber and taxAmount must be present to include L2/L3 data on capture. For more information, see L2/L3 enhanced data support.

Card verificationAnchorIcon

Card verification uses the same request structure as authorization, except for the following differences:

  • amount.value is always 0.
  • additionalAmount.value and additionalAmount.currency carry the actual verification amount that the merchant passed. Adyen handles the hold internally.

Customer creationAnchorIcon

Creating a customer is optional for the Adyen integration. To create a customer, you can use either the Braintree SDKs or the GraphQL API. For more information, see the customer creation guide (SDK) or the customer creation guide (GraphQL).

TokenizationAnchorIcon

Tokenization returns a single-use token (nonce) that represents the payment method. When you use the SDK, use a client-generated payment nonce for the transaction. For details, see receiving a payment method nonce from your client. See also the tokenization documentation for the SDK or GraphQL.

Vaulted payment methodsAnchorIcon

Vaulting a tokenized payment method creates an entity that can be authorized or charged multiple times. A tokenized payment method also can be vaulted during authorization. For more information, see the vault guide (SDK) or the vault guide (GraphQL).

Transaction object supportAnchorIcon

The following topics describe support for transaction operations and CVV handling with this integration.

Supported transaction operationsAnchorIcon

The following table lists the transaction operations that the Adyen integration supports.

Legend: ✅ Supported | ❌ Not supported |

OperationSupported
Sale
Find
Void
Refund
Submit for Settlement
Clone
Search
Adjust Authorization
Hold in Escrow
Release from Escrow
Submit for Partial Settlement
Cancel Release

CVV handlingAnchorIcon

For recurring transactions or when using a vaulted card, the CVV might not be present, which can affect approval rates.

L2/L3 enhanced data supportAnchorIcon

The Adyen integration supports L2/L3 data, enabling merchants to include detailed transaction attributes (such as line items, tax amounts, and shipping information) within payment requests. Providing this enhanced data helps merchants qualify for lower interchange rates on eligible commercial and corporate card transactions.

For more information about processing L2/L3 data fields, see the core documentation for processing L2/L3 data fields.

Transaction statusesAnchorIcon

The following table maps Adyen responses to Braintree transaction statuses. For general information about Braintree result objects, see result objects.

OperationAdyen responseBraintree transaction statusAdditional information
AuthorizeAuthorised or SuccessAUTHORIZEDSynchronous
AuthorizePSP refusal (any non-Authorised result code)PROCESSOR_DECLINEDHard decline from Adyen
AuthorizeAuthorised but PSP reference missingFAILEDAdyen returned success with no reference.

For more information, see FAILED status.
AuthorizeAdyen API error (HTTP 4xx/5xx)FAILEDNetwork or configuration issue

For more information, see FAILED status.
CaptureCapture call succeedsSETTLINGAsync (awaiting Adyen CAPTURE webhook)
CaptureCAPTURE webhook received (success)SETTLED
CaptureCAPTURE webhook (failure) or CAPTURE_FAILED eventSETTLEMENT_DECLINEDTriggers Sentry alert and Datadog metric
CaptureAdyen API error on Capture callSETTLEMENT_DECLINEDImmediate (no webhook needed)
RefundRefund call succeeds (Received status)SETTLINGAsync (awaiting Adyen REFUND webhook)

For more information, see SETTLING status.
RefundREFUND webhook received (success)SETTLED
RefundREFUND webhook (failure) or REFUND_FAILED eventSETTLEMENT_DECLINEDTriggers Sentry alerts and Datadog metrics
VerifyCardAuthorisedVERIFIEDSynchronous
VerifyCardPSP refusalPROCESSOR_DECLINED
VerifyCardAdyen API errorFAILED
VoidCancellation acceptedVOIDED

SETTLING statusAnchorIcon

When you capture or refund a transaction through Adyen, the initial status is SETTLING. Adyen processes these operations asynchronously and notifies Braintree of the outcome through a webhook.

Do not ship goods or provide services until the transaction status transitions to SETTLED. While a transition from SETTLING to SETTLEMENT_DECLINED is rare, it can occur. Braintree does not control when Adyen sends the webhook. For more information, see Adyen's webhook delay documentation.

FAILED statusAnchorIcon

A FAILED status occurs for system-level errors on authorization, void, and card verification when network issues or API errors prevent Braintree from receiving a valid response from Adyen.

RetriesAnchorIcon

Do not build a duplicate capture or refund retry loop when you see success: true with the SETTLING status. The transaction is pending while it waits for an asynchronous webhook from Adyen.

Always rely on transaction status to determine when to ship goods. If your request times out or you are unsure whether a transaction was created, query the transaction using Find or Search with your internal transaction reference (transactionId) before attempting a second create.

Network token supportAnchorIcon

Adyen supports network tokens. With this integration, you can choose either of these options:

To enable Braintree-managed network tokens for your account, contact your AM or an integration engineer. For more information, see the Getting started with network tokens guide.

Response codesAnchorIcon

Braintree can only display a limited number of response codes, because Adyen controls transaction results. When Braintree cannot map Adyen decline codes to equivalent Braintree decline codes, Braintree returns code 2000 with the message Do Not Honor.

To query for the Adyen response message, use:

  • SDK:additional_processor_response. For more information, see additional processor response.
  • GraphQL:PaymentStatusEvent.processorResponse.additionalInformation. For more information, see the documentation for the PaymentStatusEvent interface.

Processor response pass-through and debuggingAnchorIcon

Because Adyen controls approval and decline outcomes, Braintree surfaces a standardized set of result codes. To find processor response details, use:

  • SDK:additional_processor_response
  • GraphQL:TransactionSettlementProcessorResponse or TransactionAuthorizationProcessorResponse (includes AVS and CVV response mapping)

CVV codesAnchorIcon

Adyen CVV codes are the same as the CVV response codes that Braintree uses. Only authorization responses include the CVV response code. Card verification responses do not incude a CVV response code.

The following table describes the CVV codes.

CVV codeDescription
MMatch
NNo match
UUnable to process
IIssuer unable to process
SService not available
ANot applicable
BNot provided

Error response code mappingAnchorIcon

Error response codes from Adyen are validation errors that return before the transaction is submitted to the payment network. The following table maps Adyen API error codes to their Braintree equivalents.

Braintree error codeBraintree error messageAdyen API error codeAdyen message
2000Do Not Honor010Not allowed
2048Invalid Amount100Required object 'amount' is not provided
2005Invalid Credit Card Number101Invalid card number
2010Card Issuer Declined CVV103CVC is not the right length
2059Address Verification Failed104Billing address problem
2000Do Not Honor105Invalid paRes from issuer
2000Do Not Honor106This session was already used previously
2000Do Not Honor107Recurring is not enabled
2059Address Verification Failed117Invalid billing address
2060Address Verification and Card Security Code Failed118Invalid delivery address
2000Do Not Honor119Invalid shopper name
2000Do Not Honor120Required field 'shopperEmail' is not provided
2000Do Not Honor122Required field 'telephoneNumber' is not provided
2000Do Not Honor124Invalid PhoneNumber
2000Do Not Honor128Required field 'card.holderName' is not provided
2006Invalid Expiration Date129Expiry Date Invalid
2000Do Not Honor130Reference Missing
2059Address Verification Failed131Required field 'billingAddress.city' is not provided
2059Address Verification Failed132Required field 'billingAddress.street' is not provided
2059Address Verification Failed133Required field 'billingAddress.houseNumberOrName' is not provided
2059Address Verification Failed134Billing address problem (Country)
2059Address Verification Failed135Required field 'billingAddress.stateOrProvince' is not provided
2048Invalid Amount137Field 'amount' is not valid
2064Invalid Currency Code138Field 'currency' is not valid
2000Do Not Honor139Recurring requires 'shopperEmail' and 'shopperReference'
2006Invalid Expiration Date140Invalid expiryMonth[1..12] / expiryYear[>2000], or before now
2006Invalid Expiration Date141Invalid expiryMonth[1..12] / expiryYear[>2000]
2006Invalid Expiration Date144Invalid startMonth[1..12] / startYear[>2000], or in the future
2000Do Not Honor145Invalid issuer countryCode
2000Do Not Honor146Invalid social security number
2059Address Verification Failed147Required field 'deliveryAddress.city' is not provided
2059Address Verification Failed148Required field 'deliveryAddress.street' is not provided
2059Address Verification Failed149Required field 'deliveryAddress.houseNumberOrName' is not provided
2059Address Verification Failed150Delivery address problem (Country)
2000Do Not Honor151Required field 'deliveryAddress.stateOrProvince' is not provided
2010Card Issuer Declined CVV153Invalid CVC

Refusal response code mappingAnchorIcon

Refusal response codes from Adyen are declines from the payment network after the transaction was processed. The following table maps Adyen API refusal codes to their Braintree equivalents.

Braintree error codeBraintree error messageAdyen refusal reason codeAdyen message
2000Do Not Honor2Refused
2025Set Up Error – Merchant3Referral
3001Error4Acquirer Error
2057Issuer or Cardholder has put a restriction on the card5Blocked Card
2004Expired Card6Expired Card
2048Invalid Amount7Invalid Amount
2005Invalid Credit Card Number8Invalid Card Number
2104Offline Issuer Declined9Issuer Unavailable
2000Do Not Honor10Not supported
2000Do Not Honor113D Not Authenticated
2001Insufficient Funds12Not enough balance
2014Processor Declined – Fraud Suspected14Acquirer Fraud
2000Do Not Honor15Cancelled
2000Do Not Honor16Shopper Cancelled
2102Incorrect PIN17Invalid Pin
2103PIN try exceeded18Pin tries exceeded
2102Incorrect PIN19Pin validation not possible
2014Processor Declined – Fraud Suspected20Fraud
3000Processor Network Unavailable – Try Again21Not Submitted
2014Processor Declined – Fraud Suspected22Fraud-Cancelled
2000Do Not Honor23Transaction Not Permitted
2010Card Issuer Declined CVV24CVC Declined
2000Do Not Honor25Restricted Card
2067Authorization Expired26Revocation Of Auth
2000Do Not Honor27Declined Non Generic
4006Capture Amount Exceeded Allowable Limit28Withdrawal amount exceeded
4006Capture Amount Exceeded Allowable Limit29Withdrawal count exceeded
2014Processor Declined – Fraud Suspected31Issuer Suspected Fraud
2000Do Not Honor32AVS Declined
2000Do Not Honor33Card requires online pin
2000Do Not Honor34No checking account available on card
2000Do Not Honor35No savings account available on card
2000Do Not Honor36Mobile pin required
2000Do Not Honor37Contactless fallback
2099Cardholder Authentication Required38Authentication required
2000Do Not Honor39RReq not received from DS
2000Do Not Honor40Current AID is in Penalty Box
2000Do Not Honor41CVM Required Restart Payment
2000Do Not Honor423DS Authentication Error
2000Do Not Honor46Transaction blocked by Adyen to prevent excessive retry fees

Test cardsAnchorIcon

Braintree provides a set of test card numbers for sandbox testing. The Adyen integration automatially maps some Braintree test card numbers to Adyen test card numbers.

Test cards: SuccessAnchorIcon

The following test cards trigger successful transactions in the sandbox environment.

Card typeBraintree test numberAdyen test numberAutomatically mapped?CVV
Mastercard55555555555544445555341244441115737
Visa40128888888818814000620000000007737
American Express370000000000002370000000000002Passthrough7373
Maestro63049580000000096759649826438453737
Discover60116011601166116011601160116611Passthrough737

Test cards: FailureAnchorIcon

Use the following card and CVV combinations to simulate failure scenarios in the sandbox environment.

  • Expired card refusal: Use a date in the past (for example, 01/2020).
  • General refusal: Use CVVs other than 737.

For additional failure scenarios, see the Adyen test documentation.

Supported countriesAnchorIcon

This integration supports all countries that Adyen supports.

Next stepsAnchorIcon

For information about testing this integration, see the Braintree testing guide.

The following resources provide additional information about the Adyen integration and Braintree platform: