POST /refund

Refunds a payment that has previously been captured, returning a unique reference for this request. Refunding can be done on the full captured amount or a partial amount. Multiple (partial) refunds will be accepted as long as their sum doesn't exceed the captured amount. Payments which have been authorised, but not captured, cannot be refunded, use the /cancel method instead.

Some payment methods/gateways do not support partial/multiple refunds. A margin above the captured limit can be configured to cover shipping/handling costs.

For more information, refer to Refund.

This endpoint is part of our classic API integration. If using a newer integration, use the /payments/{paymentPspReference}/refunds endpoint under Checkout API instead.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
splits[] Array No

An array of objects specifying how the amount should be split between accounts when using Adyen for Platforms. For more information, see how to split payments for platforms.

splits[].account String No

The unique identifier of the account to which the split amount is booked. Required if type is MarketPlace or BalanceAccount.

  • Classic Platforms integration: The accountCode of the account to which the split amount is booked.
  • Balance Platform: The balanceAccountId of the account to which the split amount is booked.
splits[].description String No

Your description for the split item.

splits[].amount Object No

The amount of the split item.

  • Required for all split types in the Classic Platforms integration.
  • Required if type is BalanceAccount, Commission, Default, or VAT in your Balance Platform integration.
splits[].amount.value Integer Yes

The value of the split amount, in minor units.

splits[].amount.currency String No

The three-character ISO currency code. By default, this is the original payment currency.

splits[].type String Yes

The part of the payment you want to book to the specified account.

Possible values for the Balance Platform:

  • BalanceAccount: books part of the payment (specified in amount) to the specified account.
  • Transaction fees types that you can book to the specified account:
    • AcquiringFees: the aggregated amount of the interchange and scheme fees.
    • PaymentFee: the aggregated amount of all transaction fees.
    • AdyenFees: the aggregated amount of Adyen's commission and markup fees.
    • AdyenCommission: the transaction fees due to Adyen under blended rates.
    • AdyenMarkup: the transaction fees due to Adyen under Interchange ++ pricing.
    • Interchange: the fees paid to the issuer for each payment made with the card network.
    • SchemeFee: the fees paid to the card scheme for using their network.
  • Commission: your platform's commission on the payment (specified in amount), booked to your liable balance account.
  • Remainder: the amount left over after a currency conversion, booked to the specified account.
  • TopUp: allows you and your users to top up balance accounts using direct debit, card payments, or other payment methods.
  • VAT: the value-added tax charged on the payment, booked to your platforms liable balance account.
  • Commission: your platform's commission (specified in amount) on the payment, booked to your liable balance account.
  • Default: in very specific use cases, allows you to book the specified amount to the specified account. For more information, contact Adyen support.

Possible values for the Classic Platforms integration: Commission, Default, MarketPlace, PaymentFee, VAT.

Possible values:

  • "MarketPlace"
  • "SchemeFee"
  • "Surcharge"
  • "Commission"
  • "PaymentFee"
  • "AdyenCommission"
  • "Tip"
  • "AdyenMarkup"
  • "Remainder"
  • "Interchange"
  • "AcquiringFees"
  • "AdyenFees"
  • "BalanceAccount"
  • "Default"
  • "VAT"
splits[].reference String No

Your unique reference for the part of the payment booked to the specified account.

This is required if type is MarketPlace (Classic Platforms integration) or BalanceAccount (Balance Platform).

For the other types, we also recommend providing a unique reference so you can reconcile the split and the associated payment in the transaction overview and in the reports.

uniqueTerminalId String No

Unique terminal ID for the PED that originally processed the request. For point-of-sale integrations only.

modificationAmount Object Yes

The amount that needs to be refunded. The currency must match the currency used in authorisation, the value must be smaller than or equal to the authorised amount.

modificationAmount.value Integer Yes

The amount of the transaction, in minor units.

modificationAmount.currency String Yes

The three-character ISO currency code.

originalReference String Yes

The original pspReference of the payment to modify. This reference is returned in:

  • authorisation response
  • authorisation notification
tenderReference String No

The transaction reference provided by the PED. For point-of-sale integrations only.

merchantAccount String Yes

The merchant account that is used to process the payment.

mpiData Object No

Authentication data produced by an MPI (Mastercard SecureCode, Visa Secure, or Cartes Bancaires).

mpiData.riskScore String No

Risk score calculated by Directory Server (DS). Required for Cartes Bancaires integrations.

mpiData.eci String No

The electronic commerce indicator.

mpiData.cavvAlgorithm String No

The CAVV algorithm used. Include this only for 3D Secure 1.

mpiData.authenticationResponse String No

In 3D Secure 1, the authentication response if the shopper was redirected.

In 3D Secure 2, this is the transStatus from the challenge result. If the transaction was frictionless, omit this parameter.

Possible values:

  • "A"
  • "N"
  • "Y"
  • "U"
mpiData.directoryResponse String No

In 3D Secure 1, this is the enrollment response from the 3D directory server.

In 3D Secure 2, this is the transStatus from the ARes.

Possible values:

  • "D"
  • "C"
  • "R"
  • "A"
  • "N"
  • "I"
  • "Y"
  • "U"
mpiData.threeDSVersion String No

The version of the 3D Secure protocol.

mpiData.challengeCancel String No

Indicator informing the Access Control Server (ACS) and the Directory Server (DS) that the authentication has been cancelled. For possible values, refer to 3D Secure API reference.

Possible values:

  • "07"
  • "06"
  • "05"
  • "04"
  • "03"
  • "02"
  • "01"
mpiData.dsTransID String No

Supported for 3D Secure 2. The unique transaction identifier assigned by the Directory Server (DS) to identify a single transaction.

mpiData.tokenAuthenticationVerificationValue String No

Network token authentication verification value (TAVV). The network token cryptogram.

mpiData.xid String No

Supported for 3D Secure 1. The transaction identifier (Base64-encoded, 20 bytes in a decoded form).

mpiData.transStatusReason String No

Provides information on why the transStatus field has the specified value. For possible values, refer to our docs.

mpiData.cavv String No

The cardholder authentication value (base64 encoded, 20 bytes in a decoded form).

originalMerchantReference String No

The original merchant reference to cancel.

reference String No

Your reference for the payment modification. This reference is visible in Customer Area and in reports. Maximum length: 80 characters.

additionalData Object No

This field contains additional data, which may be required for a particular modification request.

The additionalData object consists of entries, each of which includes the key and value.

platformChargebackLogic Object No

Defines how to book chargebacks when using Adyen for Platforms.

platformChargebackLogic.costAllocationAccount String No

The unique identifier of the balance account to which the chargeback fees are booked. By default, the chargeback fees are booked to your liable balance account.

platformChargebackLogic.targetAccount String No

The unique identifier of the balance account against which the disputed amount is booked.

Required if behavior is deductFromOneBalanceAccount.

platformChargebackLogic.behavior String No

The method of handling the chargeback.

Possible values: deductFromLiableAccount, deductFromOneBalanceAccount, deductAccordingToSplitRatio.

Possible values:

  • "deductAccordingToSplitRatio"
  • "deductFromOneBalanceAccount"
  • "deductFromLiableAccount"

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.