CyberSource reversal API
An authorization reversal releases the hold that the payment placed on the customer's funds.
An authorization reversal releases the hold that the payment placed on the customer's funds.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cybersource-reversal-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
version: 0.0.1
title: CyberSource Merged Spec bankAccountValidation Reversal API
servers:
- url: https://apitest.cybersource.com/
tags:
- name: reversal
description: An authorization reversal releases the hold that the payment placed on the customer's funds.
paths:
/pts/v2/payments/{id}/reversals:
post:
summary: Process an Authorization Reversal
description: Include the payment ID in the POST request to reverse the payment amount.
tags:
- reversal
operationId: authReversal
x-devcenter-metaData:
categoryTag: Payments
developerGuides: https://developer.cybersource.com/docs/cybs/en-us/payments/developer/ctv/rest/payments/payments-intro.html
isMLEsupported: true
mleForRequest: optional
parameters:
- name: id
in: path
description: The payment ID returned from a previous payment request.
required: true
schema:
type: string
responses:
'201':
description: Successful response.
content:
application/hal+json;charset=utf-8:
schema:
title: ptsV2PaymentsReversalsPost201Response
type: object
properties:
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
description: This is the endpoint of the resource that was created by the successful request.
method:
type: string
description: '`method` refers to the HTTP method that you can send to the `self` endpoint to retrieve details of the resource.'
id:
type: string
maxLength: 26
description: 'An unique identification number generated by Cybersource to identify the submitted request. Returned by all services.
It is also appended to the endpoint of the resource.
On incremental authorizations, this value with be the same as the identification number returned in the original authorization response.
'
submitTimeUtc:
type: string
description: 'Time of request in UTC. Format: `YYYY-MM-DDThh:mm:ssZ`
**Example** `2016-08-11T22:47:57Z` equals August 11, 2016, at 22:47:57 (10:47:57 p.m.).
The `T` separates the date and the time. The `Z` indicates UTC.
Returned by Cybersource for all services.
'
status:
type: string
description: "The status of the submitted transaction.\n\nPossible values:\n - REVERSED\n"
reconciliationId:
type: string
maxLength: 60
description: 'Reference number for the transaction.
Depending on how your Cybersource account is configured, this value could either be provided in the API request or generated by CyberSource.
The actual value used in the request to the processor is provided back to you by Cybersource in the response.
'
clientReferenceInformation:
type: object
properties:
code:
type: string
maxLength: 59
description: 'Merchant-generated order reference or tracking number. It is recommended that you send a unique value for each
transaction so that you can perform meaningful searches for the transaction.
#### Used by
**Authorization**
Required field.
#### PIN Debit
Requests for PIN debit reversals need to use the same merchant reference number that was used in the transaction that is being
reversed.
Required field for all PIN Debit requests (purchase, credit, and reversal).
#### FDC Nashville Global
Certain circumstances can cause the processor to truncate this value to 15 or 17 characters for Level II and Level III processing, which can cause a discrepancy between the value you submit and the value included in some processor reports.
'
submitLocalDateTime:
type: string
maxLength: 14
description: 'Date and time at your physical location.
Format: `YYYYMMDDhhmmss`, where YYYY = year, MM = month, DD = day, hh = hour, mm = minutes ss = seconds
#### PIN Debit
Optional field for PIN Debit purchase and credit requests.
'
ownerMerchantId:
type: string
description: 'Merchant ID that was used to create the subscription or customer profile for which the service was requested.
If your CyberSource account is enabled for Recurring Billing, this field is returned only if you are using
subscription sharing and if your merchant ID is in the same merchant ID pool as the owner merchant ID.
If your CyberSource account is enabled for Payment Tokenization, this field is returned only if you are using
profile sharing and if your merchant ID is in the same merchant ID pool as the owner merchant ID.
'
reversalAmountDetails:
type: object
properties:
reversedAmount:
type: string
maxLength: 15
description: 'Total reversed amount.
Returned by authorization reversal.
'
originalTransactionAmount:
type: string
maxLength: 15
description: 'Amount of the original transaction.
Returned by authorization reversal and void.
'
currency:
type: string
maxLength: 3
description: 'Currency used for the order. Use the three-character [ISO Standard Currency Codes.](http://apps.cybersource.com/library/documentation/sbc/quickref/currencies.pdf)
#### Used by
**Authorization**
Required field.
**Authorization Reversal**
For an authorization reversal (`reversalInformation`) or a capture (`processingOptions.capture` is set to `true`), you must use the same currency that you used in your payment authorization request.
#### PIN Debit
Currency for the amount you requested for the PIN debit purchase. This value is returned for partial authorizations. The issuing bank can approve a partial amount if the balance on the debit card is less than the requested transaction amount. For the possible values, see the [ISO Standard Currency Codes](https://developer.cybersource.com/library/documentation/sbc/quickref/currencies.pdf).
Returned by PIN debit purchase.
For PIN debit reversal requests, you must use the same currency that was used for the PIN debit purchase or PIN debit credit that you are reversing.
For the possible values, see the [ISO Standard Currency Codes](https://developer.cybersource.com/library/documentation/sbc/quickref/currencies.pdf).
Required field for PIN Debit purchase and PIN Debit credit requests.
Optional field for PIN Debit reversal requests.
#### GPX
This field is optional for reversing an authorization or credit.
#### DCC for First Data
Your local currency.
#### Tax Calculation
Required for international tax and value added tax only.
Optional for U.S. and Canadian taxes.
Your local currency.
'
processorInformation:
type: object
properties:
transactionId:
type: string
maxLength: 255
description: 'Network transaction identifier (TID). You can use this value to identify a specific transaction when you are
discussing the transaction with your processor. Not all processors provide this value.
Returned by the authorization service.
#### PIN debit
Transaction identifier generated by the processor.
Returned by PIN debit credit.
#### GPX
Processor transaction ID.
#### Cielo
For Cielo, this value is the non-sequential unit (NSU) and is supported for all transactions. The value is generated by Cielo or the issuing bank.
#### Comercio Latino
For Comercio Latino, this value is the proof of sale or non-sequential unit (NSU) number generated by the acquirers Cielo and Rede, or the issuing bank.
#### CyberSource through VisaNet and GPN
For details about this value for CyberSource through VisaNet and GPN, see "processorInformation.networkTransactionId" in [REST API Fields](https://developer.cybersource.com/content/dam/docs/cybs/en-us/apifields/reference/all/rest/api-fields.pdf)
#### Moneris
This value identifies the transaction on a host system. It contains the following information:
- Terminal used to process the transaction
- Shift during which the transaction took place
- Batch number
- Transaction number within the batch
You must store this value. If you give the customer a receipt, display this value on the receipt.
**Example** For the value
66012345001069003:
- Terminal ID = 66012345
- Shift number = 001
- Batch number = 069
- Transaction number = 003
'
responseCode:
type: string
maxLength: 10
description: 'For most processors, this is the error message sent directly from the bank. Returned only when the processor
returns this value.
**Important** Do not use this field to evaluate the result of the authorization.
#### PIN debit
Response value that is returned by the processor or bank.
**Important** Do not use this field to evaluate the results of the transaction request.
Returned by PIN debit credit, PIN debit purchase, and PIN debit reversal.
#### AIBMS
If this value is `08`, you can accept the transaction if the customer provides you with identification.
#### Atos
This value is the response code sent from Atos and it might also include the response code from the bank.
Format: `aa,bb` with the two values separated by a comma and where:
- `aa` is the two-digit error message from Atos.
- `bb` is the optional two-digit error message from the bank.
#### Comercio Latino
This value is the status code and the error or response code received from the processor separated by a colon.
Format: [status code]:E[error code] or [status code]:R[response code]
Example `2:R06`
#### JCN Gateway
Processor-defined detail error code. The associated response category code is in the `processorInformation.responseCategoryCode` field.
String (3)
#### paypalgateway
Processor generated ID for the itemized detail.
'
networkTransactionId:
type: string
description: Same value as `processorInformation.transactionId`
responseCategoryCode:
type: string
maxLength: 36
description: "Processor-defined response category code. The associated detail error code is in the `processorInformation.responseCode` or `issuerInformation.responseCode`\nfield of the service you requested.\n\nThis field is supported only for:\n\n - Japanese issuers\n - Domestic transactions in Japan\n - Comercio Latino—processor transaction ID required for troubleshooting\n\n#### Maximum length for processors\n\n - Comercio Latino: 36\n - All other processors: 3\n"
forwardedAcquirerCode:
type: string
maxLength: 32
description: 'Name of the Japanese acquirer that processed the transaction. Returned only for JCN Gateway.
Please contact the CyberSource Japan Support Group for more information.
'
masterCardServiceCode:
type: string
maxLength: 2
description: "Mastercard service that was used for the transaction. Mastercard provides this value to CyberSource.\n\nPossible value:\n - 53: Mastercard card-on-file token service\n\n#### CyberSource through VisaNet\nThe value for this field corresponds to the following data in the TC 33 capture file:\n- Record: CP01 TCR6\n- Position: 133-134\n- Field: Mastercard Merchant on-behalf service.\n**Note** This field is returned only for CyberSource through VisaNet.\n"
masterCardServiceReplyCode:
type: string
maxLength: 1
description: "Result of the Mastercard card-on-file token service. Mastercard provides this value to CyberSource.\n\nPossible values:\n\n - `C`: Service completed successfully.\n - `F`: One of the following:\n - Incorrect Mastercard POS entry mode. The Mastercard POS entry mode should be 81 for an authorization or\n authorization reversal.\n - Incorrect Mastercard POS entry mode. The Mastercard POS entry mode should be 01 for a tokenized request.\n - Token requestor ID is missing or formatted incorrectly.\n - `I`: One of the following:\n - Invalid token requestor ID.\n - Suspended or deactivated token.\n - Invalid token (not in mapping table).\n - `T`: Invalid combination of token requestor ID and token.\n - `U`: Expired token.\n - `W`: Primary account number (PAN) listed in electronic warning bulletin.\n\n**Note** This field is returned only for **CyberSource through VisaNet**.\n"
responseDetails:
type: string
maxLength: 255
description: 'This field might contain information about a decline.
'
providerResponse:
type: string
description: 'Processor response to the API request.
'
network:
type: object
properties:
economicallyRelatedTxnId:
type: string
maxLength: 50
description: Indicates the economically related transaction id
issuerInformation:
type: object
properties:
responseCode:
type: string
maxLength: 6
description: "This is the raw Association/Issuer Response Codes. You can use 'issuer/association' response codes to identify when you can retry to authorize a declined transaction and increase successful transaction volumes. You'll receive an association/issuer response code for the majority of transactions.\n\n#### Processors supported:\n - HSBC\n - FDC Nashville Global\n - SIX\n\nCurrently SIX is not receiving Association/Issuer Response Codes here it receives the additional authorization code that must be printed on the receipt when returned by the processor.\n\n#### Possible values:\n| Card Type | Response Code | Description |\n| ----------- | ------------- | ------------------------------------------------------------------------------ |\n| VISA | 000 | Successful approval/completion or that V.I.P. PIN verification is successful |\n| VISA | 001 | Refer to card issuer |\n| VISA | 002 | Refer to card issuer, special condition |\n| VISA | 003 | Invalid merchant or service provider |\n| VISA | 004 | Pickup card | \n| MasterCard | 000 | Approved or completed successfully |\n| MasterCard | 001 | Refer to card issuer |\n| MasterCard | 003 | Invalid merchant |\n| MasterCard | 004 | Capture card |\n| MasterCard | 005 | Do not honor |\n| AMEX | 000 | Approved |\n| AMEX | 001 | Approve with ID |\n| AMEX | 002 | Partial Approval (Prepaid Cards only) |\n| AMEX | 100 | Deny |\n| AMEX | 101 | Expired Card/Invalid Expiration Date |\n| Discover | 000 | Approved or completed successfully |\n| Discover | 001 | Reserved for future USE |\n| Discover | 002 | Reserved for future USE |\n| Discover | 003 | Invalid Merchant |\n| Discover | 004 | Capture Card |\n"
authorizationInformation:
type: object
properties:
approvalCode:
type: string
maxLength: 6
description: The authorization code returned by the processor.
reasonCode:
type: string
maxLength: 50
description: Reply flag for the original transaction.
reversalSubmitted:
type: string
maxLength: 1
description: 'Flag indicating whether a full authorization reversal was successfully submitted.
Possible values:
- Y: The authorization reversal was successfully submitted.
- N: The authorization reversal was not successfully submitted. You must send a credit request for a refund.
This field is supported only for **FDC Nashville Global**.
'
pointOfSaleInformation:
type: object
properties:
emv:
type: object
properties:
tags:
type: string
maxLength: 1998
description: "EMV data that is transmitted from the chip card to the issuer, and from the issuer to the chip card. The EMV\ndata is in the tag-length-value format and includes chip card tags, terminal tags, and transaction detail tags.\n\nFor information about the individual tags, see the \"Application Specification\" section in the EMV 4.3 Specifications: http://emvco.com\n\n**Note** Card present information about EMV applies only to credit card processing and PIN debit processing.\nAll other card present information applies only to credit card processing. PIN debit processing is available only\non FDC Nashville Global.\n\n**Important** The following tags contain sensitive information and **must not** be included in this field:\n\n - `56`: Track 1 equivalent data\n - `57`: Track 2 equivalent data\n - `5A`: Application PAN\n - `5F20`: Cardholder name\n - `5F24`: Application expiration date (This sensitivity has been relaxed for Credit Mutuel-CIC, American Express Direct, FDC Nashville Global, First Data Merchant Solutions, and SIX)\n - `99`: Transaction PIN\n - `9F0B`: Cardholder name (extended)\n - `9F1F`: Track 1 discretionary data\n - `9F20`: Track 2 discretionary data\n\nFor captures, this field is required for contact EMV transactions. Otherwise, it is optional.\n\nFor credits, this field is required for contact EMV stand-alone credits and contactless EMV stand-alone credits.\nOtherwise, it is optional.\n\n**Important** For contact EMV captures, contact EMV stand-alone credits, and contactless EMV stand-alone credits,\nyou must include the following tags in this field. For all other types of EMV transactions, the following tags\nare optional.\n\n - `95`: Terminal verification results\n - `9F10`: Issuer application data\n - `9F26`: Application cryptogram\n\n\n#### CyberSource through VisaNet\n- In Japan: 199 bytes\n- In other countries: String (252)\n\nFor Mastercard Transactions, Optionally Tag 9F60 (Authenticated Application Data) and \nTag 96 (Kernel Identifier - Terminal) can be included in the Field.\n\n#### GPX\nThis field only supports transactions from the following card types:\n- Visa\n- Mastercard\n- AMEX\n- Discover\n- Diners\n- JCB\n- Union Pay International\n\n#### JCN Gateway\nThe following tags must be included:\n- `4F`: Application identifier\n- `84`: Dedicated file name\n\nData length: 199 bytes\n\n#### All other processors:\nString (999)\n\n#### Used by\nAuthorization: Optional\nAuthorization Reversal: Optional\nCredit: Optional\nPIN Debit processing (purchase, credit and reversal): Optional\n"
example:
_links:
self:
href: /pts/v2/reversals/4963015523026180001545
method: GET
id: '4963015523026180001545'
submitTimeUtc: 2017-06-01T071912Z
status: '200'
statusInformation:
reason: SUCCESS
message: Successful transaction.
clientReferenceInformation:
code: TC50171_3
orderInformation:
amountDetails:
currency: USD
processorInformation:
responseCode: '100'
reversalAmountDetails:
reversedAmount: '102.21'
currency: USD
'400':
description: Invalid request.
content:
application/hal+json;charset=utf-8:
schema:
type: object
title: ptsV2PaymentsReversalsPost400Response
properties:
submitTimeUtc:
type: string
description: 'Time of request in UTC. Format: `YYYY-MM-DDThh:mm:ssZ`
**Example** `2016-08-11T22:47:57Z` equals August 11, 2016, at 22:47:57 (10:47:57 p.m.).
The `T` separates the date and the time. The `Z` indicates UTC.
Returned by Cybersource for all services.
'
status:
type: string
description: "The status of the submitted transaction.\n\nPossible values:\n - INVALID_REQUEST\n"
reason:
type: string
description: "The reason of the status.\n\nPossible values:\n - MISSING_FIELD\n - INVALID_DATA\n - DUPLICATE_REQUEST\n - INVALID_MERCHANT_CONFIGURATION\n - PROCESSOR_UNAVAILABLE\n - AUTH_ALREADY_REVERSED\n - TRANSACTION_ALREADY_SETTLED\n - INVALID_AMOUNT\n - MISSING_AUTH\n - TRANSACTION_ALREADY_REVERSED_OR_SETTLED\n - NOT_SUPPORTED\n"
message:
type: string
description: The detail message related to the status and reason listed above.
details:
type: array
items:
type: object
properties:
field:
type: string
description: This is the flattened JSON object field name/path that is either missing or invalid.
reason:
type: string
description: "Possible reasons for the error.\n\nPossible values:\n - MISSING_FIELD\n - INVALID_DATA\n"
'502':
description: Unexpected system error or system timeout.
content:
application/hal+json;charset=utf-8:
schema:
title: ptsV2PaymentsReversalsPost502Response
type: object
properties:
submitTimeUtc:
type: string
description: 'Time of request in UTC. Format: `YYYY-MM-DDThh:mm:ssZ`
**Example** `2016-08-11T22:47:57Z` equals August 11, 2016, at 22:47:57 (10:47:57 p.m.).
The `T` separates the date and the time. The `Z` indicates UTC.
Returned by Cybersource for all services.
'
status:
type: string
description: "The status of the submitted transaction.\n\nPossible values:\n - SERVER_ERROR\n"
reason:
type: string
description: "The reason of the status.\n\nPossible values:\n - SYSTEM_ERROR\n - SERVER_TIMEOUT\n - SERVICE_TIMEOUT\n"
message:
type: string
description: The detail message related to the status and reason listed above.
x-example:
example0:
summary: Process an Authorization Reversal
value:
clientReferenceInformation:
code: TC50171_3
reversalInformation:
reason: testing
amountDetails:
totalAmount: '102.21'
depends:
example:
path: /pts/v2/payments
verb: post
exampleId: example0
fieldMapping:
- sourceField: id
destinationField: id
fieldTypeInDestination: path
example1:
summary: Service Fees Authorization Reversal
value:
clientReferenceInformation:
code: TC50171_3
reversalInformation:
reason: '34'
amountDetails:
totalAmount: '2325.00'
serviceFeeAmount: '30.0'
depends:
example:
path: /pts/v2/payments
verb: post
exampleId: example14
fieldMapping:
- sourceField: id
destinationField: id
fieldTypeInDestination: path
requestBody:
content:
application/json;charset=utf-8:
schema:
type: object
properties:
clientReferenceInformation:
type: object
properties:
code:
type: string
maxLength: 59
description: 'Merchant-generated order reference or tracking number. It is recommended that you send a unique value for each
transaction so that you can perform meaningful searches for the transaction.
#### Used by
**Authorization**
Required field.
#### PIN Debit
Requests for PIN debit reversals need to use the same merchant reference number that was used in the transaction that is being
reversed.
Required field for all PIN Debit requests (purchase, credit, and reversal).
#### FDC Nashville Global
Certain circumstances can cause the processor to truncate this value to 15 or 17 characters for Level II and Level III processing, which can cause a discrepancy between the value you submit and the value included in some processor reports.
'
pausedRequestId:
type: string
maxLength: 26
description: 'Used to resume a transaction that was paused for an order modification rule to allow for payer authentication to complete. To resume and continue with the authorization/decision service flow, call the services and include the request id from the prior decision call.
'
comments:
type: string
description: Brief description of the order or any comment you wish to add to the order.
partner:
type: object
properties:
developerId:
type: string
maxLength: 8
description: 'Identifier for the developer that helped integrate a partner solution to CyberSource.
Send this value in all requests that are sent through the partner solutions built by that developer.
CyberSource assigns the ID to the developer.
**Note** When you see a developer ID of 999 in reports, the developer ID that was submitted is incorrect.
'
solutionId:
type: string
maxLength: 8
# --- truncated at 32 KB (120 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cybersource/refs/heads/main/openapi/cybersource-reversal-api-openapi.yml