openapi: 3.1.0
info:
version: '6'
x-publicVersion: true
title: Adyen Account acceptDispute Refund API
description: "This API is used for the classic integration. If you are just starting your implementation, refer to our [new integration guide](https://docs.adyen.com/marketplaces-and-platforms) instead.\n\nThe Account API provides endpoints for managing account-related entities on your platform. These related entities include account holders, accounts, bank accounts, shareholders, and verification-related documents. The management operations include actions such as creation, retrieval, updating, and deletion of them.\n\nFor more information, refer to our [documentation](https://docs.adyen.com/marketplaces-and-platforms/classic).\n## Authentication\nYour Adyen contact will provide your API credential and an API key. To connect to the API, add an `X-API-Key` header with the API key as the value, for example:\n\n ```\ncurl\n-H \"Content-Type: application/json\" \\\n-H \"X-API-Key: YOUR_API_KEY\" \\\n...\n```\n\nAlternatively, you can use the username and password to connect to the API using basic authentication. For example:\n\n```\ncurl\n-U \"ws@MarketPlace.YOUR_PLATFORM_ACCOUNT\":\"YOUR_WS_PASSWORD\" \\\n-H \"Content-Type: application/json\" \\\n...\n```\nWhen going live, you need to generate new web service user credentials to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).\n\n## Versioning\nThe Account API supports [versioning](https://docs.adyen.com/development-resources/versioning) using a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://cal-test.adyen.com/cal/services/Account/v6/createAccountHolder\n```"
x-timestamp: '2023-05-30T15:27:20Z'
termsOfService: https://www.adyen.com/legal/terms-and-conditions
contact:
name: Adyen Developer Experience team
url: https://github.com/Adyen/adyen-openapi
servers:
- url: https://cal-test.adyen.com/cal/services/Account/v6
tags:
- name: Refund
paths:
/refund:
post:
tags:
- Refund
summary: Adyen Refund a Captured Payment
description: '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](https://docs.adyen.com/online-payments/classic-integrations/modify-payments/refund).
> This endpoint is part of our [classic API integration](https://docs.adyen.com/online-payments/classic-integrations/api-integration-ecommerce). If using a [newer integration](https://docs.adyen.com/online-payments), use the [`/payments/{paymentPspReference}/refunds`](https://docs.adyen.com/api-explorer/#/CheckoutService/payments/{paymentPspReference}/refunds) endpoint under Checkout API instead.'
operationId: post-refund
x-sortIndex: 3
x-methodName: refund
security:
- BasicAuth: []
- ApiKeyAuth: []
requestBody:
content:
application/json:
examples:
refund:
$ref: '#/components/examples/post-refund-refund'
schema:
$ref: '#/components/schemas/RefundRequest'
responses:
'200':
content:
application/json:
examples:
refund:
$ref: '#/components/examples/post-refund-refund-200'
schema:
$ref: '#/components/schemas/ModificationResult'
description: OK - the request has succeeded.
'400':
content:
application/json:
examples:
generic:
$ref: '#/components/examples/generic-400'
schema:
$ref: '#/components/schemas/ServiceError'
description: Bad Request - a problem reading or understanding the request.
'401':
content:
application/json:
examples:
generic:
$ref: '#/components/examples/generic-401'
schema:
$ref: '#/components/schemas/ServiceError'
description: Unauthorized - authentication required.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
examples:
post-refund403Example:
summary: Default post-refund 403 response
x-microcks-default: true
value:
additionalData: {}
errorCode: CODE123
errorType: standard
message: example_value
pspReference: REF-001
status: 500
description: Forbidden - insufficient permissions to process the request.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
examples:
post-refund422Example:
summary: Default post-refund 422 response
x-microcks-default: true
value:
additionalData: {}
errorCode: CODE123
errorType: standard
message: example_value
pspReference: REF-001
status: 500
description: Unprocessable Entity - a request validation error.
'500':
content:
application/json:
examples:
generic:
$ref: '#/components/examples/generic-500'
schema:
$ref: '#/components/schemas/ServiceError'
description: Internal Server Error - the server could not process the request.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
RefundRequest:
properties:
additionalData:
additionalProperties:
type: string
x-anyOf:
- $ref: '#/components/schemas/AdditionalData3DSecure'
- $ref: '#/components/schemas/AdditionalDataAirline'
- $ref: '#/components/schemas/AdditionalDataCarRental'
- $ref: '#/components/schemas/AdditionalDataCommon'
- $ref: '#/components/schemas/AdditionalDataLevel23'
- $ref: '#/components/schemas/AdditionalDataLodging'
- $ref: '#/components/schemas/AdditionalDataModifications'
- $ref: '#/components/schemas/AdditionalDataOpenInvoice'
- $ref: '#/components/schemas/AdditionalDataOpi'
- $ref: '#/components/schemas/AdditionalDataRatepay'
- $ref: '#/components/schemas/AdditionalDataRetry'
- $ref: '#/components/schemas/AdditionalDataRisk'
- $ref: '#/components/schemas/AdditionalDataRiskStandalone'
- $ref: '#/components/schemas/AdditionalDataSubMerchant'
- $ref: '#/components/schemas/AdditionalDataTemporaryServices'
- $ref: '#/components/schemas/AdditionalDataWallets'
description: '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.'
type: object
merchantAccount:
description: The merchant account that is used to process the payment.
type: string
modificationAmount:
description: 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.
$ref: '#/components/schemas/Amount'
mpiData:
x-addedInVersion: '46'
description: Authentication data produced by an MPI (Mastercard SecureCode, Visa Secure, or Cartes Bancaires).
$ref: '#/components/schemas/ThreeDSecureData'
originalMerchantReference:
x-addedInVersion: '30'
description: The original merchant reference to cancel.
type: string
originalReference:
description: 'The original pspReference of the payment to modify.
This reference is returned in:
* authorisation response
* authorisation notification
'
type: string
platformChargebackLogic:
x-addedInVersion: '68'
description: Defines how to book chargebacks when using [Adyen for Platforms](https://docs.adyen.com/marketplaces-and-platforms/processing-payments#chargebacks-and-disputes).
$ref: '#/components/schemas/PlatformChargebackLogic'
reference:
description: 'Your reference for the payment modification. This reference is visible in Customer Area and in reports.
Maximum length: 80 characters.'
type: string
splits:
x-addedInVersion: '37'
description: An array of objects specifying how the amount should be split between accounts when using Adyen for Platforms. For details, refer to [Providing split information](https://docs.adyen.com/marketplaces-and-platforms/processing-payments#providing-split-information).
items:
$ref: '#/components/schemas/Split'
type: array
tenderReference:
x-addedInVersion: '25'
description: The transaction reference provided by the PED. For point-of-sale integrations only.
type: string
uniqueTerminalId:
x-addedInVersion: '25'
description: Unique terminal ID for the PED that originally processed the request. For point-of-sale integrations only.
type: string
required:
- merchantAccount
- modificationAmount
- originalReference
type: object
AdditionalDataRiskStandalone:
properties:
PayPal.CountryCode:
description: Shopper's country of residence in the form of ISO standard 3166 2-character country codes.
type: string
PayPal.EmailId:
description: Shopper's email.
type: string
PayPal.FirstName:
description: Shopper's first name.
type: string
PayPal.LastName:
description: Shopper's last name.
type: string
PayPal.PayerId:
description: 'Unique PayPal Customer Account identification number. Character length and limitations: 13 single-byte alphanumeric characters.'
type: string
PayPal.Phone:
description: Shopper's phone number.
type: string
PayPal.ProtectionEligibility:
description: 'Allowed values:
* **Eligible** — Merchant is protected by PayPal''s Seller Protection Policy for Unauthorized Payments and Item Not Received.
* **PartiallyEligible** — Merchant is protected by PayPal''s Seller Protection Policy for Item Not Received.
* **Ineligible** — Merchant is not protected under the Seller Protection Policy.'
type: string
PayPal.TransactionId:
description: Unique transaction ID of the payment.
type: string
avsResultRaw:
description: 'Raw AVS result received from the acquirer, where available. Example: D'
type: string
bin:
description: The Bank Identification Number of a credit card, which is the first six digits of a card number. Required for [tokenized card request](https://docs.adyen.com/risk-management/standalone-risk#tokenised-pan-request).
type: string
cvcResultRaw:
description: 'Raw CVC result received from the acquirer, where available. Example: 1'
type: string
riskToken:
description: Unique identifier or token for the shopper's card details.
type: string
threeDAuthenticated:
description: 'A Boolean value indicating whether 3DS authentication was completed on this payment. Example: true'
type: string
threeDOffered:
description: 'A Boolean value indicating whether 3DS was offered for this payment. Example: true'
type: string
tokenDataType:
description: 'Required for PayPal payments only. The only supported value is: **paypal**.'
type: string
type: object
AdditionalDataLodging:
properties:
lodging.checkInDate:
description: 'The arrival date.
* Date format: **yyyyMmDd**. For example, for 2023 April 22, **20230422**.'
type: string
lodging.checkOutDate:
description: 'The departure date.
* Date format: **yyyyMmDd**. For example, for 2023 April 22, **20230422**.'
type: string
lodging.customerServiceTollFreeNumber:
description: 'The toll-free phone number for the lodging.
* Format: numeric
* Max length: 17 characters.
* For US and CA numbers must be 10 characters in length
* Must not start with a space
* Must not contain any special characters such as + or -
*Must not be all zeros.'
type: string
lodging.fireSafetyActIndicator:
description: 'Identifies that the facility complies with the Hotel and Motel Fire Safety Act of 1990. Must be ''Y'' or ''N''.
* Format: alphabetic
* Max length: 1 character'
type: string
lodging.folioCashAdvances:
description: 'The folio cash advances, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: numeric
* Max length: 12 characters'
type: string
lodging.folioNumber:
description: 'The card acceptor’s internal invoice or billing ID reference number.
* Max length: 25 characters.
* Must not start with a space
*Must not be all zeros.'
type: string
lodging.foodBeverageCharges:
description: 'Any charges for food and beverages associated with the booking, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: numeric
* Max length: 12 characters'
type: string
lodging.noShowIndicator:
description: "Indicates if the customer didn't check in for their booking.\n Possible values: \n* **Y**: the customer didn't check in \n* **N**: the customer checked in"
type: string
lodging.prepaidExpenses:
description: 'The prepaid expenses for the booking.
* Format: numeric
* Max length: 12 characters'
type: string
lodging.propertyPhoneNumber:
description: 'The lodging property location''s phone number.
* Format: numeric.
* Min length: 10 characters
* Max length: 17 characters
* For US and CA numbers must be 10 characters in length
* Must not start with a space
* Must not contain any special characters such as + or -
*Must not be all zeros.'
type: string
lodging.room1.numberOfNights:
description: 'The total number of nights the room is booked for.
* Format: numeric
* Must be a number between 0 and 99
* Max length: 4 characters'
type: string
lodging.room1.rate:
description: 'The rate for the room, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: numeric
* Max length: 12 characters
* Must not be a negative number'
type: string
lodging.totalRoomTax:
description: 'The total room tax amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: numeric
* Max length: 12 characters
* Must not be a negative number'
type: string
lodging.totalTax:
description: 'The total tax amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: numeric
* Max length: 12 characters
* Must not be a negative number'
type: string
travelEntertainmentAuthData.duration:
description: 'The number of nights. This should be included in the auth message.
* Format: numeric
* Max length: 4 characters'
type: string
travelEntertainmentAuthData.market:
description: 'Indicates what market-specific dataset will be submitted. Must be ''H'' for Hotel. This should be included in the auth message.
* Format: alphanumeric
* Max length: 1 character'
type: string
type: object
AdditionalDataCarRental:
properties:
carRental.checkOutDate:
description: 'The pick-up date.
* Date format: `yyyyMMdd`'
type: string
carRental.customerServiceTollFreeNumber:
description: 'The customer service phone number of the car rental company.
* Format: Alphanumeric
* maxLength: 17
* For US and CA numbers must be 10 characters in length
* Must not start with a space
* Must not contain any special characters such as + or -
*Must not be all zeros.'
type: string
carRental.daysRented:
description: 'Number of days for which the car is being rented.
* Format: Numeric
* maxLength: 4
* Must not be all spaces'
type: string
carRental.fuelCharges:
description: 'Any fuel charges associated with the rental, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: Numeric
* maxLength: 12'
type: string
carRental.insuranceCharges:
description: 'Any insurance charges associated with the rental, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: Numeric
* maxLength: 12
* Must not be all spaces
*Must not be all zeros.'
type: string
carRental.locationCity:
description: 'The city where the car is rented.
* Format: Alphanumeric
* maxLength: 18
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.locationCountry:
description: 'The country where the car is rented, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
* Format: Alphanumeric
* maxLength: 2'
type: string
carRental.locationStateProvince:
description: 'The state or province where the car is rented.
* Format: Alphanumeric
* maxLength: 2
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.noShowIndicator:
description: 'Indicates if the customer didn''t pick up their rental car.
* Y - Customer did not pick up their car
* N - Not applicable'
type: string
carRental.oneWayDropOffCharges:
description: 'The charge for not returning a car to the original rental location, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* maxLength: 12'
type: string
carRental.rate:
description: 'The daily rental rate, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* Format: Alphanumeric
* maxLength: 12'
type: string
carRental.rateIndicator:
description: 'Specifies whether the given rate is applied daily or weekly.
* D - Daily rate
* W - Weekly rate'
type: string
carRental.rentalAgreementNumber:
description: 'The rental agreement number for the car rental.
* Format: Alphanumeric
* maxLength: 9
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.rentalClassId:
description: 'The classification of the rental car.
* Format: Alphanumeric
* maxLength: 4
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.renterName:
description: 'The name of the person renting the car.
* Format: Alphanumeric
* maxLength: 26
* If you send more than 26 characters, the name is truncated
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.returnCity:
description: 'The city where the car must be returned.
* Format: Alphanumeric
* maxLength: 18
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.returnCountry:
description: 'The country where the car must be returned, in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
* Format: Alphanumeric
* maxLength: 2'
type: string
carRental.returnDate:
description: 'The last date to return the car by.
* Date format: `yyyyMMdd`
* maxLength: 8'
type: string
carRental.returnLocationId:
description: 'The agency code, phone number, or address abbreviation
* Format: Alphanumeric
* maxLength: 10
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.returnStateProvince:
description: 'The state or province where the car must be returned.
* Format: Alphanumeric
* maxLength: 3
* Must not start with a space or be all spaces
*Must not be all zeros.'
type: string
carRental.taxExemptIndicator:
description: 'Indicates if the goods or services were tax-exempt, or if tax was not paid on them.
Values:
* Y - Goods or services were tax exempt
* N - Tax was not collected'
type: string
travelEntertainmentAuthData.duration:
description: 'Number of days the car is rented for. This should be included in the auth message.
* Format: Numeric
* maxLength: 4'
type: string
travelEntertainmentAuthData.market:
description: 'Indicates what market-specific dataset will be submitted or is being submitted. Value should be ''A'' for car rental. This should be included in the auth message.
* Format: Alphanumeric
* maxLength: 1'
type: string
type: object
AdditionalDataLevel23:
properties:
enhancedSchemeData.customerReference:
description: 'The customer code.
* Encoding: ASCII
* Max length: 25 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.destinationCountryCode:
description: 'The three-letter [ISO 3166-1 alpha-3 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address.
* Encoding: ASCII
* Fixed length: 3 characters'
type: string
enhancedSchemeData.destinationPostalCode:
description: 'The postal code of the destination address.
* Encoding: ASCII
* Max length: 10 characters
* Must not start with a space'
type: string
enhancedSchemeData.destinationStateProvinceCode:
description: 'Destination state or province code.
* Encoding: ASCII
* Max length: 3 characters
* Must not start with a space'
type: string
enhancedSchemeData.dutyAmount:
description: 'The duty amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
* Encoding: Numeric
* Max length: 12 characters'
type: string
enhancedSchemeData.freightAmount:
description: 'The shipping amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
* Encoding: Numeric
*Max length: 12 characters'
type: string
enhancedSchemeData.itemDetailLine[itemNr].commodityCode:
description: 'The [UNSPC commodity code](https://www.unspsc.org/) of the item.
* Encoding: ASCII
* Max length: 12 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.itemDetailLine[itemNr].description:
description: 'A description of the item.
* Encoding: ASCII
* Max length: 26 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.itemDetailLine[itemNr].discountAmount:
description: 'The discount amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
* Encoding: Numeric
* Max length: 12 characters'
type: string
enhancedSchemeData.itemDetailLine[itemNr].productCode:
description: 'The product code.
* Encoding: ASCII.
* Max length: 12 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.itemDetailLine[itemNr].quantity:
description: 'The number of items. Must be an integer greater than zero.
* Encoding: Numeric
* Max length: 12 characters
* Must not start with a space or be all spaces
'
type: string
enhancedSchemeData.itemDetailLine[itemNr].totalAmount:
description: 'The total amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
* Max length: 12 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.itemDetailLine[itemNr].unitOfMeasure:
description: 'The unit of measurement for an item.
* Encoding: ASCII
Max length: 3 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.itemDetailLine[itemNr].unitPrice:
description: 'The unit price in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
* Encoding: Numeric
* Max length: 12 characters
* Must not be all zeros.'
type: string
enhancedSchemeData.orderDate:
description: 'The order date.
* Format: `ddMMyy`
* Encoding: ASCII
* Max length: 6 characters'
type: string
enhancedSchemeData.shipFromPostalCode:
description: 'The postal code of the address the item is shipped from.
* Encoding: ASCII
* Max length: 10 characters
* Must not start with a space or be all spaces
* Must not be all zeros.'
type: string
enhancedSchemeData.totalTaxAmount:
description: 'The total tax amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
* For example, 2000 means USD 20.00.
*Encoding: Numeric
*Max length: 12 characters
* Must not be all zeros.'
type: string
type: object
AdditionalDataWallets:
properties:
androidpay.token:
description: The Android Pay token retrieved from the SDK.
type: string
masterpass.transactionId:
description: The Mastercard Masterpass Transaction ID retrieved from the SDK.
type: string
payment.token:
description: The Apple Pay token retrieved from the SDK.
type: string
paywithgoogle.token:
description: The Google Pay token retrieved from the SDK.
type: string
samsungpay.token:
description: The Samsung Pay token retrieved from the SDK.
type: string
visacheckout.callId:
description: The Visa Checkout Call ID retrieved from the SDK.
type: string
type: object
SplitAmount:
properties:
currency:
description: The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes). By default, this is the original payment currency.
maxLength: 3
minLength: 3
type: string
value:
description: The value of the split amount, in [minor units](https://docs.adyen.com/development-resources/currency-codes).
format: int64
type: integer
required:
- value
type: object
AdditionalDataRatepay:
properties:
ratepay.installmentAmount:
description: Amount the customer has to pay each month.
type: string
ratepay.interestRate:
description: Interest rate of this installment.
type: string
ratepay.lastInstallmentAmount:
description: Amount of the last installment.
type: string
ratepay.paymentFirstday:
description: Calendar day of the first payment.
type: string
ratepaydata.deliveryDate:
description: Date the merchant delivered the goods to the customer.
type: string
ratepaydata.dueDate:
description: Date by which the customer must settle the payment.
type: string
ratepaydata.invoiceDate:
description: Invoice date, defined by the merchant. If not included, the invoice date is set to the delivery date.
type: string
ratepaydata.invoiceId:
description: Identification name or number for the invoice, defined by the merchant.
type: string
type: object
AdditionalDataModifications:
properties:
installmentPaymentData.selectedInstallmentOption:
description: This is the installment option selected by the shopper. It is required only if specified by the user.
type: string
type: object
AdditionalDataOpi:
properties:
opi.includeTransToken:
description: 'Optional boolean indicator. Set to **true** if you want an ecommerce transaction to return an `opi.transToken` as additional data in the response.
You can store this Oracle Payment Interface token in your Oracle Opera database. For more information and required settings, see [Oracle Opera](https://docs.adyen.com/plugins/oracle-opera#opi-token-ecommerce).'
type: string
type: object
AdditionalData3DSecure:
properties:
allow3DS2:
description: "Indicates if you are able to process 3D Secure 2 transactions natively on your payment page. Send this parameter when you are using `/payments` endpoint with any of our [native 3D Secure 2 solutions](https://docs.adyen.com/online-payments/3d-secure/native-3ds2).\n\n > This parameter only indicat
# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adyen/refs/heads/main/openapi/adyen-refund-api-openapi.yml