Adyen Checkout gateway guide

Quick Start

New to integrating Adyen Checkout with Spreedly? Here's your setup guide:

  1. Retrieve your Adyen Checkout credentials:
    1. Create a Checkout API credential (api_key) and note your merchant_account in the Adyen Customer Area.
    2. Generate an HMAC key and configure Adyen webhooks to Spreedly. This is mandatory for capture, void, and refund transactions. See the webhook setup guide below.
    3. Contact Adyen to enable immediate capture, multi-capture, and multi-refund if needed. These features are disabled by default.
  2. Get familiar with the Spreedly API:
    1. Review Spreedly API basics.
    2. Review Gateways, Payment Methods, and Transactions.
  3. Add an Adyen Checkout gateway to Spreedly in sandbox mode.
📘

Review this documentation to understand more about how to test transactions.

Additional notes
  1. Adyen Checkout (adyen_checkout) is separate from the classic Adyen gateway (adyen): Adyen Checkout uses Checkout API v71 and an api_key, rather than PAL username/password credentials.
  2. Webhook setup is mandatory for capture, void, and refund transactions: These operations are asynchronous. Spreedly moves them to a final succeeded or failed state only after Adyen sends the corresponding CAPTURE, CANCELLATION, or REFUND webhook. Supply hmac_key when creating the gateway and configure the matching webhook and HMAC secret in the Adyen Customer Area. Without this setup, these transactions remain pending.
  3. Immediate capture, multi-capture, and multi-refund are disabled by default: Contact Adyen to enable them before using immediate capture, capturing an authorization more than once, or refunding a payment more than once.
  4. Capture behavior: Spreedly sends manual capture for authorize; purchase requests use immediate capture when enabled for the Adyen merchant account.
  5. 3DS flag requirement: Set attempt_3dsecure to true when using Adyen gateway-specific 3DS. Otherwise an unexpected 3DS response can fail because the request did not include a 3DS initiation flag.
  6. Store requests: A Store request requires a unique shopper_reference per cardholder. Set tokenize_only to true to tokenize without an authorization.

Adding an Adyen Checkout gateway

Required credentials

  • merchant_account: Your Adyen merchant account code.
  • api_key: Your Adyen Checkout API key. Spreedly sends it to Adyen in the X-API-Key header.
  • hmac_key: The hex-encoded HMAC key used to validate Adyen webhook notifications. It is required so capture, void, and refund transactions can reach a final state.
  • subdomain: Your Adyen live URL prefix. Enter only the {subdomain} portion of your live endpoint: https://{subdomain}-checkout-live.adyenpayments.com. It is required in live mode and can be omitted in sandbox mode.

Request

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'EnvironmentKey:AccessSecret' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>adyen_checkout</gateway_type>
        <merchant_account>YourMerchantAccount</merchant_account>
        <api_key>YourCheckoutApiKey</api_key>
        <hmac_key>YourWebhookHmacKey</hmac_key>
        <subdomain>some-domain</subdomain>
      </gateway>'

Response

<gateway>
    <token>4DYT7DJYX98DEVNFPNFMT0XIOOA</token>
    <gateway_type>adyen_checkout</gateway_type>
    <name>Adyen Checkout</name>
    <description nil="true"/>
    <merchant_profile_key nil="true"/>
    <sub_merchant_key nil="true"/>
    <merchant_account>Spreedly007</merchant_account>
    <characteristics>
        <supports_purchase type="boolean">true</supports_purchase>
        <supports_authorize type="boolean">true</supports_authorize>
        <supports_capture type="boolean">true</supports_capture>
        <supports_partial_capture type="boolean">true</supports_partial_capture>
        <supports_credit type="boolean">true</supports_credit>
        <supports_partial_credit type="boolean">true</supports_partial_credit>
        <supports_void type="boolean">true</supports_void>
        <supports_verify type="boolean">true</supports_verify>
        <supports_reference_purchase type="boolean">false</supports_reference_purchase>
        <supports_purchase_via_preauthorization type="boolean">false</supports_purchase_via_preauthorization>
        <supports_offsite_purchase type="boolean">false</supports_offsite_purchase>
        <supports_offsite_authorize type="boolean">false</supports_offsite_authorize>
        <supports_offsite_synchronous_purchase type="boolean">false</supports_offsite_synchronous_purchase>
        <supports_offsite_synchronous_authorize type="boolean">false</supports_offsite_synchronous_authorize>
        <supports_3dsecure_purchase type="boolean">true</supports_3dsecure_purchase>
        <supports_3dsecure_authorize type="boolean">true</supports_3dsecure_authorize>
        <supports_3dsecure_2_mpi_purchase type="boolean">true</supports_3dsecure_2_mpi_purchase>
        <supports_3dsecure_2_mpi_authorize type="boolean">true</supports_3dsecure_2_mpi_authorize>
        <supports_store type="boolean">true</supports_store>
        <supports_remove type="boolean">true</supports_remove>
        <supports_fraud_review type="boolean">false</supports_fraud_review>
        <supports_network_tokenization type="boolean">true</supports_network_tokenization>
        <supports_inquire_by_gateway_transaction_id type="boolean">false</supports_inquire_by_gateway_transaction_id>
        <supports_inquire_by_order_id type="boolean">false</supports_inquire_by_order_id>
        <supports_transaction_retry type="boolean">false</supports_transaction_retry>
        <supports_stored_stored_credentials type="boolean">false</supports_stored_stored_credentials>
        <supports_3dsecure_2_purchase type="boolean">true</supports_3dsecure_2_purchase>
        <supports_3dsecure_2_authorize type="boolean">true</supports_3dsecure_2_authorize>
        <supports_stored_credentials type="boolean">true</supports_stored_credentials>
        <supports_card_scheme_ntid type="boolean">true</supports_card_scheme_ntid>
        <supports_moto_exemption type="boolean">true</supports_moto_exemption>
        <supports_low_value_exemption type="boolean">true</supports_low_value_exemption>
    </characteristics>
    <credentials>
        <credential>
            <name>merchant_account</name>
            <value>Spreedly007</value>
        </credential>
    </credentials>
    <gateway_settings>
        <subdomain nil="true"/>
    </gateway_settings>
    <gateway_specific_fields>
        <gateway_specific_field>shopper_reference</gateway_specific_field>
        <gateway_specific_field>shopper_statement</gateway_specific_field>
        <gateway_specific_field>fraud_offset</gateway_specific_field>
        <gateway_specific_field>delivery_date</gateway_specific_field>
        <gateway_specific_field>merchant_order_reference</gateway_specific_field>
        <gateway_specific_field>shopper_email</gateway_specific_field>
        <gateway_specific_field>installments</gateway_specific_field>
        <gateway_specific_field>brand_override</gateway_specific_field>
        <gateway_specific_field>custom_routing_flag</gateway_specific_field>
        <gateway_specific_field>risk_data</gateway_specific_field>
        <gateway_specific_field>shopper_ip</gateway_specific_field>
        <gateway_specific_field>threed_dynamic</gateway_specific_field>
        <gateway_specific_field>origin</gateway_specific_field>
        <gateway_specific_field>user_agent</gateway_specific_field>
        <gateway_specific_field>accept_header</gateway_specific_field>
        <gateway_specific_field>device_fingerprint</gateway_specific_field>
        <gateway_specific_field>authorisation_type</gateway_specific_field>
        <gateway_specific_field>requested_test_acquirer_response_code</gateway_specific_field>
        <gateway_specific_field>industry_usage</gateway_specific_field>
        <gateway_specific_field>capture_delay_hours</gateway_specific_field>
        <gateway_specific_field>splits</gateway_specific_field>
        <gateway_specific_field>line_items</gateway_specific_field>
        <gateway_specific_field>recurring_detail_reference</gateway_specific_field>
        <gateway_specific_field>sub_merchant_id</gateway_specific_field>
        <gateway_specific_field>sub_merchant_name</gateway_specific_field>
        <gateway_specific_field>sub_merchant_street</gateway_specific_field>
        <gateway_specific_field>sub_merchant_city</gateway_specific_field>
        <gateway_specific_field>sub_merchant_state</gateway_specific_field>
        <gateway_specific_field>sub_merchant_postal_code</gateway_specific_field>
        <gateway_specific_field>sub_merchant_country</gateway_specific_field>
        <gateway_specific_field>sub_merchant_tax_id</gateway_specific_field>
        <gateway_specific_field>sub_merchant_data</gateway_specific_field>
        <gateway_specific_field>merchant_application</gateway_specific_field>
        <gateway_specific_field>level_2_data</gateway_specific_field>
        <gateway_specific_field>level_3_data</gateway_specific_field>
        <gateway_specific_field>additional_data_airline</gateway_specific_field>
        <gateway_specific_field>additional_data_lodging</gateway_specific_field>
        <gateway_specific_field>store</gateway_specific_field>
        <gateway_specific_field>date_of_birth</gateway_specific_field>
        <gateway_specific_field>fund_origin</gateway_specific_field>
        <gateway_specific_field>address_override</gateway_specific_field>
        <gateway_specific_field>metadata</gateway_specific_field>
        <gateway_specific_field>street</gateway_specific_field>
        <gateway_specific_field>house_number_or_name</gateway_specific_field>
        <gateway_specific_field>platform_chargeback_logic</gateway_specific_field>
        <gateway_specific_field>capture_psp_reference</gateway_specific_field>
        <gateway_specific_field>merchant_refund_reason</gateway_specific_field>
        <gateway_specific_field>recurring_processing_model</gateway_specific_field>
        <gateway_specific_field>tokenize_only</gateway_specific_field>
        <gateway_specific_field>shopper_interaction</gateway_specific_field>
        <gateway_specific_field>network_transaction_id</gateway_specific_field>
        <gateway_specific_field>verify_amount</gateway_specific_field>
        <gateway_specific_field>idempotency_key</gateway_specific_field>
    </gateway_specific_fields>
    <payment_methods>
        <payment_method>credit_card</payment_method>
        <payment_method>bank_account</payment_method>
        <payment_method>apple_pay</payment_method>
        <payment_method>google_pay</payment_method>
        <payment_method>third_party_token</payment_method>
        <payment_method>third_party_network_token</payment_method>
    </payment_methods>
    <state>retained</state>
    <redacted type="boolean">false</redacted>
    <sandbox type="boolean">true</sandbox>
    <mode>default</mode>
    <created_at type="dateTime">2026-08-19T08:40:26Z</created_at>
    <updated_at type="dateTime">2026-08-19T08:40:26Z</updated_at>
</gateway>

Specifying a merchant subdomain

Create a live URL prefix in the Adyen Customer Area and pass it as the subdomain gateway setting. Live requests use:

https://{subdomain}-checkout-live.adyenpayments.com/

Sandbox requests use https://checkout-test.adyen.com/ and do not require a subdomain.

Purchase (Auth and Capture)

curl https://core.spreedly.com/v1/gateways/[gateway_token]/purchase.json \
  -u 'EnvironmentKey:AccessSecret' \
  -H 'Content-Type: application/json' \
  -d '{
    "transaction": {
      "payment_method_token": "payment_method_token",
      "amount": 1000,
      "currency_code": "USD",
      "email": "[email protected]",
      "order_id": "some-order-id",
      "billing_address": {
        "name": "Jane Shopper",
        "address1": "123 Main St",
        "city": "New York",
        "state": "NY",
        "zip": "10001",
        "country": "US"
      },
      "gateway_specific_fields": {
        "adyen_checkout": {
          "shopper_reference": "shopper-12345",
          "idempotency_key": "550e8400-e29b-41d4-a716-446655440000"
        }
      }
    }
  }'

Advanced features

Capture and refund capabilities

Immediate capture, multi-capture, and multi-refund are disabled by default in Adyen. Contact Adyen to enable the capabilities required by your integration:

  • Immediate capture: allows a Purchase to authorize and capture immediately.
  • Multi-capture: allows multiple Capture requests against one authorization.
  • Multi-refund: allows multiple Refund requests against one payment.

ACH / Bank Account Transactions

ACH payments must be enabled for the Adyen merchant account. Contact your Adyen account manager or Adyen Support if needed.

Spreedly fieldAdyen field
routing_numberbankLocationId
account_numberbankAccountNumber
nameownerName
countryBilling/account country

Store and remove

For Store:

  • Pass a unique shopper_reference for each cardholder; do not use personally identifiable information.
  • Pass GSF tokenize_only: true to use Adyen's /storedPaymentMethods endpoint without authorizing an amount.
  • Set recurring_processing_model to CardOnFile, Subscription, or UnscheduledCardOnFile when required.

When removing a stored payment method with remove_from_gateway.

Stored Credentials

Adyen Checkout supports Spreedly's first-class stored-credential API. For any Authorize or Purchase request, send the stored-credential fields below so that Spreedly can populate the correct shopperInteraction, recurringProcessingModel, and additionalData.networkTxReference values in the Adyen Checkout payload.

Learn more about how Spreedly enables use of stored credentials by reviewing our Stored Credentials guide.

First / credential-on-file setup (CIT and MIT initial)

Send stored_credential_initial_transaction: true. Do not send stored_credential_network_transaction_id because the network returns it in the response to this transaction.

reason_typeinitiatorshopperInteractionrecurringProcessingModelnetworkTxReference
installmentcardholderEcommercenot sentnot sent
recurringcardholderEcommerceSubscriptionnot sent
unscheduledcardholderEcommerceCardOnFilenot sent

Subsequent use

Send stored_credential_initial_transaction: false together with the stored_credential_network_transaction_id returned by Adyen on the initial transaction. Spreedly passes that value through as additionalData.networkTxReference.

reason_typeinitiatorshopperInteractionrecurringProcessingModelnetworkTxReference
installmentmerchantContAuthnot sentsent
installmentcardholderEcommercenot sentsent
recurringmerchantContAuthSubscriptionsent
recurringcardholderEcommerceSubscriptionsent
unscheduledmerchantContAuthUnscheduledCardOnFilesent
unscheduledcardholderContAuthCardOnFilesent
  • Adyen does not define a recurring model for installment payments, so recurringProcessingModel is omitted for reason_type: installment unless you send the recurring_processing_model gateway-specific field.
  • For reason_type: unscheduled, the initiator is evaluated together with the initial transaction flag. A cardholder-initiated unscheduled transaction is Ecommerce only on the initial transaction; subsequent unscheduled transactions are sent as ContAuth.
  • The shopper_interaction and recurring_processing_model gateway-specific fields override the values above. When no stored-credential fields are sent, Spreedly defaults to Ecommerce for a live payment method and ContAuth for a vaulted token.
  • On an initial transaction where the initiator is merchant and the payment method includes a CVV, Spreedly sends Ecommerce.

Third-party 3DS2 auth data

Spreedly maps third-party 3DS2 data to Adyen Checkout mpiData:

Spreedly fieldAdyen field
three_ds_versionthreeDSVersion
ecommerce_indicatoreci
authentication_valuecavv
directory_server_transaction_iddsTransID
directory_response_statusdirectoryResponse
authentication_response_statusauthenticationResponse

See the 3DS2 Third-party Authentication guide. For gateway-specific 3DS, set attempt_3dsecure: true. Set threed_dynamic: true to let Adyen Dynamic 3DS rules decide whether authentication is required. Web 3DS2 can also require origin, user_agent, and accept_header.

Idempotent Requests

Pass idempotency_key to send Adyen's Idempotency-Key header and safely retry a request. See Adyen API idempotency.

Gateway Specific Fields

Gateway-specific fields must be nested under adyen_checkout:

<gateway_specific_fields>
  <adyen_checkout>
    <shopper_reference>shopper-12345</shopper_reference>
    <shopper_statement>ACME*ORDER123</shopper_statement>
    <origin>https://your-shop.example.com</origin>
    <recurring_processing_model>CardOnFile</recurring_processing_model>
    <shopper_interaction>Ecommerce</shopper_interaction>
    <idempotency_key>550e8400-e29b-41d4-a716-446655440000</idempotency_key>
  </adyen_checkout>
</gateway_specific_fields>
Field NameTypeRequiredUse Case (Description)Example Value
shopper_referenceStringNoUnique shopper ID for recurring/tokenization. Required for Store and recurring payments; do not send PII.shopper-12345
shopper_statementStringNoText shown on the shopper's bank statement (keep under approximately 22 characters).ACME*ORDER123
fraud_offsetIntegerNoValue added to the Adyen risk score.5
delivery_dateStringNoISO 8601 delivery date/time, sent as deliverAt.2026-07-02T12:00:00.000Z
merchant_order_referenceStringNoOrder reference linking related attempts and retries.order-abc-123
shopper_emailStringNoShopper email used for fraud checks and some 3DS flows.[email protected]
installmentsIntegerNoNumber of card installments.3
brand_overrideBoolean/StringNoForces Adyen overwriteBrand for co-branded cards.false
custom_routing_flagStringNoMerchant-defined flag used by Adyen custom routing rules.route-eu
risk_dataObjectNoCustom inputs sent as additionalData.riskdata.*.{"operatingSystem":"iOS"}
shopper_ipStringNoShopper IP used for risk and 3DS.77.110.174.153
threed_dynamicBoolean/StringNoLets Adyen Dynamic 3DS decide authentication.true
originStringNoBrowser origin for web 3DS2, without a path or trailing slash.https://your-shop.example.com
user_agentStringNoShopper browser user agent used in 3DS browser information.Mozilla/5.0
accept_headerStringNoShopper browser Accept header used in 3DS browser information.text/html
device_fingerprintStringNoAdyen device fingerprint for risk evaluation.m7Cmrf++0cW4P6XfF7m/rA
authorisation_typeStringNoAuthorization type sent in additionalData.PreAuth
requested_test_acquirer_response_codeStringNoTest-only response code used to simulate issuer outcomes.2
industry_usageStringNoIndustry reason such as delayedCharge, noShow, or installment.delayedCharge
capture_delay_hoursIntegerNoDelay before automatic capture, up to 672 hours.12
splitsArrayNoMarketplace/platform split configuration for payment, capture, or refund.See example below
line_itemsArrayNoBasket item details, often needed for BNPL and partial refunds.See example below
recurring_detail_referenceStringNoLegacy Classic stored-detail reference. Not mapped on Checkout; use the stored payment method token flow.8416038790273850
sub_merchant_idStringNoSub-merchant ID sent in additionalData.123451234512345
sub_merchant_nameStringNoSub-merchant display name.Wildsea
sub_merchant_streetStringNoSub-merchant street address.1234 Street St
sub_merchant_cityStringNoSub-merchant city.Night City
sub_merchant_stateStringNoSub-merchant state/province.CA
sub_merchant_postal_codeStringNoSub-merchant postal code.112233
sub_merchant_countryStringNoSub-merchant country code.US
sub_merchant_tax_idStringNoSub-merchant tax identifier.12345abcde67
sub_merchant_dataObjectNoAdditional sub-merchant keys merged into additionalData.{"subMerchantMCC":"7999"}
merchant_applicationObjectNoApplication name/version sent in applicationInfo.merchantApplication.{"name":"MyApp","version":"1.0.0"}
level_2_dataObjectNoLevel 2 tax and customer reference data.See example below
level_3_dataObjectNoLevel 3 enhanced scheme data and item details.See example below
additional_data_airlineObjectNoAirline passenger, leg, and ticket data.See example below
additional_data_lodgingObjectNoLodging check-in/out, folio, rate, and tax data.See example below
storeStringNoAdyen store reference. Use the exact name issued by Adyen.ST322LJN223
date_of_birthStringNoShopper date of birth in YYYY-MM-DD format.1990-01-01
fund_originObjectNoDetails of the person or entity funding the money.See example below
fund_recipientObjectNoDetails of the person or entity receiving the money.See example below
address_overrideBoolean/StringNoUses the street and house number overrides when true.true
metadataObjectNoMetadata returned in Adyen reports, up to 20 pairs.{"order_id":"A1","channel":"web"}
streetStringNoBilling street override.Infinite Loop
house_number_or_nameStringNoBilling house number/name override.1
platform_chargeback_logicObjectNoDefines how platform chargebacks are booked.See example below
capture_psp_referenceStringNoCapture pspReference to refund; used for capture-scoped refunds.8825408195409505
merchant_refund_reasonStringNoRefund reason: FRAUD, CUSTOMER REQUEST, RETURN, DUPLICATE, or OTHER.CUSTOMER REQUEST
recurring_processing_modelStringNoSubscription, CardOnFile, or UnscheduledCardOnFile. Required for tokenize/store flows.CardOnFile
tokenize_onlyBooleanNoOn Store, tokenizes through /storedPaymentMethods without authorization.true
shopper_interactionStringNoSales channel: Ecommerce, ContAuth, Moto, or POS.Ecommerce
network_transaction_idStringNoScheme network transaction ID sent as networkTxReference.MCC123ABC
verify_amountIntegerNoMinor-unit amount used by Verify; defaults to zero.100
idempotency_keyStringNoValue sent in the Idempotency-Key header.550e8400-e29b-41d4-a716-446655440000

Nested object examples

{
  "level_2_data": {
    "total_tax_amount": "160",
    "customer_reference": "101"
  },
  "level_3_data": {
    "freight_amount": "300",
    "destination_state_province_code": "CA",
    "ship_from_postal_code": "94102",
    "order_date": "260702",
    "destination_postal_code": "95014",
    "destination_country_code": "US",
    "duty_amount": "500",
    "items": [
      {
        "description": "Test product",
        "product_code": "TEST120",
        "commodity_code": "COMMCODE1",
        "quantity": "1",
        "unit_of_measure": "ea",
        "unit_price": "100",
        "discount_amount": "0",
        "total_amount": "100"
      }
    ]
  },
  "splits": [
    {
      "amount": { "value": 500, "currency": "USD" },
      "type": "BalanceAccount",
      "account": "BA123",
      "reference": "split-1"
    }
  ],
  "line_items": [
    {
      "description": "Item",
      "quantity": 1,
      "amount_including_tax": 500,
      "amount_excluding_tax": 450,
      "tax_amount": 50,
      "id": "item-1",
      "sku": "SKU123"
    }
  ],
  "merchant_application": {
    "name": "MyApp",
    "version": "1.0.0"
  },
  "fund_origin": {
    "first_name": "Payer",
    "last_name": "Name",
    "shopper_email": "[email protected]",
    "wallet_identifier": "some identifier",
    "billing_address": {
      "address1": "123 Main St",
      "city": "New York",
      "state": "NY",
      "zip": "10001",
      "country": "US"
    }
  },
  "fund_recipient": {
    "wallet_identifier": "some identifier",
    "wallet_owner_tax_id": "some tax id",
    "wallet_purpose": "some purpose",
    "shopper_reference": "some reference",
    "shopper_email": "[email protected]",
    "telephone_number": "+916354170255"
  },
  "platform_chargeback_logic": {
    "behavior": "deductFromOneBalanceAccount",
    "cost_allocation_account": "BA_COST",
    "target_account": "BA_TARGET"
  },
  "metadata": {
    "order_id": "A1",
    "channel": "web"
  },
  "risk_data": {
    "operatingSystem": "iOS"
  }
}

additional_data_airline supports ticket and agency fields, a legs array (for example carrier_code, class_of_travel, date_of_travel, depart_airport, destination_code, and flight_number), and a passenger object.

{
  "additional_data_airline": {
    "airline_code": "123",
    "ticket_number": "ABCASDF",
    "passenger_name": "JOE DOE",
    "legs": [
      {
        "carrier_code": "KL",
        "class_of_travel": "F",
        "date_of_travel": "2026-07-02",
        "depart_airport": "SFO",
        "destination_code": "AMS",
        "flight_number": "1234"
      }
    ],
    "passenger": {
      "first_name": "Joe",
      "last_name": "Doe",
      "telephone_number": "432211111"
    }
  }
}

additional_data_lodging supports fields including check_in_date, check_out_date, folio_number, number_of_nights, rate, total_room_tax, total_tax, duration, and market.

{
  "additional_data_lodging": {
    "check_in_date": "20260702",
    "check_out_date": "20260710",
    "folio_number": "32343",
    "number_of_nights": "5",
    "rate": "100",
    "total_room_tax": "1000",
    "total_tax": "100",
    "duration": "2",
    "market": "H"
  }
}

Spreedly's generic shipping_address maps to Adyen deliveryAddress. To override billing address formatting, set address_override: true and pass street and house_number_or_name.

Gateway Specific Response Fields

<gateway_specific_response_fields>
  <adyen_checkout>
    <authorization_reference>1234567890</authorization_reference>
    <auth_code>123456</auth_code>
    <avs_result>4 AVS not supported</avs_result>
    <cvc_result>1 Matches</cvc_result>
    <stored_payment_method_id>M5N3TQ4GV5PFWR50</stored_payment_method_id>
    <card_payment_method>VISA</card_payment_method>
    <funding_source>CREDIT</funding_source>
    <network_transaction_id>MCC123ABC</network_transaction_id>
  </adyen_checkout>
</gateway_specific_response_fields>
Field NameTypeDescription
authorization_referenceStringAdyen pspReference for the payment authorization.
adjust_authorisation_dataStringToken from additionalData used for subsequent amount adjustments.
auth_codeStringIssuer authorization code.
avs_resultStringAddress Verification Service result.
cvc_resultStringCVC/CVV check result.
stored_payment_method_idStringStored payment method ID created during tokenization.
card_payment_methodStringCard payment method or brand variant.
funding_sourceStringCard funding source, such as CREDIT or DEBIT.
recurring_detail_referenceStringStored recurring detail reference returned after tokenization.
acquirer_referenceStringAcquirer reference for the transaction.
threed_offeredStringWhether 3DS was offered.
threed_authenticatedString3DS authentication outcome.
merchant_advice_codeStringScheme merchant advice code for a decline or soft decline.
acquirer_codeStringAcquirer code for the payment.
payment_method_brandStringPayment method brand.
payment_method_variantStringMore specific payment method variant.
acquirerStringAcquirer used during a retry attempt.
acquirer_accountStringAcquirer account used during a retry attempt.
first_retry_response_codeStringResponse code from retry attempt 1.
second_retry_response_codeStringResponse code from retry attempt 2.
first_retry_raw_responseStringRaw issuer/acquirer response from retry attempt 1.
second_retry_raw_responseStringRaw issuer/acquirer response from retry attempt 2.
first_retry_network_token_offeredStringWhether a network token was offered on retry attempt 1.
second_retry_network_token_offeredStringWhether a network token was offered on retry attempt 2.
fraud_result_typeStringAdyen fraud result classification.
fraud_manual_reviewStringWhether Adyen flagged the payment for manual fraud review.
fraud_resultObjectFull Adyen fraudResult object.
issuer_countryStringCard issuer country.
refusal_reason_rawStringRaw issuer refusal reason.
shopper_interactionStringShopper interaction returned for a retry attempt.
network_transaction_idStringScheme network transaction ID for subsequent MIT requests.

Some fraud and retry response fields appear only when they are enabled in the Adyen Customer Area under Additional Data settings.

Adyen webhook setup guide

Webhook setup is mandatory for capture, void, and refund transactions.

These operations initially return a processing or received state. Their final outcome is delivered asynchronously:

Spreedly transactionAdyen event code
CaptureCAPTURE
VoidCANCELLATION
Refund (credit)REFUND

If the webhook is absent or HMAC validation fails, Spreedly ignores the callback and the transaction remains pending.

Additional resources

If you need support with this gateway please contact Support at [email protected].

Adyen Checkout API: https://docs.adyen.com/api-explorer/Checkout/latest/overview

Adyen webhook HMAC verification: https://docs.adyen.com/development-resources/webhooks/verify-hmac-signatures/

Adyen Transfers API: https://docs.adyen.com/api-explorer/transfers/latest/overview

API Endpoint: https://{subdomain}-checkout-live.adyenpayments.com/ (v71)

Test Endpoint: https://checkout-test.adyen.com/ (v71) (Sandbox)


Did this page help you?