mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {
reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {
errors {
... on InternalServiceError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
... on RuleInViolationError {
advice
dateTimeUtc
errorDateTime
explanationOfRule
message
}
... on SyntaxOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on TimeoutOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on ValidationFailureError {
dateTimeUtc
errorDateTime
fieldName
fieldPath
message
}
... on PriorTransactionNotFoundError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
}
reverseTransactionResponse {
activityDate
cardDetails {
last4
paymentBrand
}
duration
isDuplicateRequest
message
networkResponseDetails {
networkResponseCode
processorResponseCode
}
paymentId
processorResponseCode
sanitizedFields {
fieldName
fieldPath
originalValue
reason
sanitizedValue
}
timestampUtc
tokenDetails {
token
tokenizedPan
}
transactionId
}
}
}
{
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
curl --request POST \
--url https://api.sandbox.com/graphql \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"query": "mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {\n reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {\n errors {\n ... on InternalServiceError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n ... on RuleInViolationError {\n advice\n dateTimeUtc\n errorDateTime\n explanationOfRule\n message\n }\n ... on SyntaxOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on TimeoutOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on ValidationFailureError {\n dateTimeUtc\n errorDateTime\n fieldName\n fieldPath\n message\n }\n ... on PriorTransactionNotFoundError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n }\n reverseTransactionResponse {\n activityDate\n cardDetails {\n last4\n paymentBrand\n }\n duration\n isDuplicateRequest\n message\n networkResponseDetails {\n networkResponseCode\n processorResponseCode\n }\n paymentId\n processorResponseCode\n sanitizedFields {\n fieldName\n fieldPath\n originalValue\n reason\n sanitizedValue\n }\n timestampUtc\n tokenDetails {\n token\n tokenizedPan\n }\n transactionId\n }\n }\n}",
"variables": {
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
}'
{
"data": {
"reverseTransaction": {
"errors": [
{
"__typename": "InternalServiceError",
"dateTimeUtc": "2026-01-15T14:30:00Z",
"errorDateTime": "2026-01-15T14:30:00Z",
"message": "example",
"processorResponseCode": "A0000",
"transactionId": "c9a1e2d3-4b5f-6789-0abc-def123456789"
}
],
"reverseTransactionResponse": {
"activityDate": "2026-01-15",
"cardDetails": {
"last4": "1234",
"paymentBrand": "VISA"
},
"duration": 0,
"isDuplicateRequest": true,
"message": "example",
"networkResponseDetails": {
"networkResponseCode": "example",
"processorResponseCode": "A0000"
},
"paymentId": "d8b2f3e4-5c6a-7890-1bcd-ef2345678901",
"processorResponseCode": "A0000",
"sanitizedFields": [
{
"fieldName": "example",
"fieldPath": "example",
"originalValue": "example",
"reason": "example",
"sanitizedValue": "example"
}
],
"timestampUtc": "2026-01-15T14:30:00Z",
"tokenDetails": {
"token": "example",
"tokenizedPan": "example"
},
"transactionId": "e7c3a4b5-6d7e-8901-2cde-f34567890123"
}
}
}
}
Transaction Processing
reverseTransaction
Reverse a previously processed transaction and return a payload that includes details of the resulting transaction.
mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {
reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {
errors {
... on InternalServiceError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
... on RuleInViolationError {
advice
dateTimeUtc
errorDateTime
explanationOfRule
message
}
... on SyntaxOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on TimeoutOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on ValidationFailureError {
dateTimeUtc
errorDateTime
fieldName
fieldPath
message
}
... on PriorTransactionNotFoundError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
}
reverseTransactionResponse {
activityDate
cardDetails {
last4
paymentBrand
}
duration
isDuplicateRequest
message
networkResponseDetails {
networkResponseCode
processorResponseCode
}
paymentId
processorResponseCode
sanitizedFields {
fieldName
fieldPath
originalValue
reason
sanitizedValue
}
timestampUtc
tokenDetails {
token
tokenizedPan
}
transactionId
}
}
}
{
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
curl --request POST \
--url https://api.sandbox.com/graphql \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"query": "mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {\n reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {\n errors {\n ... on InternalServiceError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n ... on RuleInViolationError {\n advice\n dateTimeUtc\n errorDateTime\n explanationOfRule\n message\n }\n ... on SyntaxOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on TimeoutOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on ValidationFailureError {\n dateTimeUtc\n errorDateTime\n fieldName\n fieldPath\n message\n }\n ... on PriorTransactionNotFoundError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n }\n reverseTransactionResponse {\n activityDate\n cardDetails {\n last4\n paymentBrand\n }\n duration\n isDuplicateRequest\n message\n networkResponseDetails {\n networkResponseCode\n processorResponseCode\n }\n paymentId\n processorResponseCode\n sanitizedFields {\n fieldName\n fieldPath\n originalValue\n reason\n sanitizedValue\n }\n timestampUtc\n tokenDetails {\n token\n tokenizedPan\n }\n transactionId\n }\n }\n}",
"variables": {
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
}'
{
"data": {
"reverseTransaction": {
"errors": [
{
"__typename": "InternalServiceError",
"dateTimeUtc": "2026-01-15T14:30:00Z",
"errorDateTime": "2026-01-15T14:30:00Z",
"message": "example",
"processorResponseCode": "A0000",
"transactionId": "c9a1e2d3-4b5f-6789-0abc-def123456789"
}
],
"reverseTransactionResponse": {
"activityDate": "2026-01-15",
"cardDetails": {
"last4": "1234",
"paymentBrand": "VISA"
},
"duration": 0,
"isDuplicateRequest": true,
"message": "example",
"networkResponseDetails": {
"networkResponseCode": "example",
"processorResponseCode": "A0000"
},
"paymentId": "d8b2f3e4-5c6a-7890-1bcd-ef2345678901",
"processorResponseCode": "A0000",
"sanitizedFields": [
{
"fieldName": "example",
"fieldPath": "example",
"originalValue": "example",
"reason": "example",
"sanitizedValue": "example"
}
],
"timestampUtc": "2026-01-15T14:30:00Z",
"tokenDetails": {
"token": "example",
"tokenizedPan": "example"
},
"transactionId": "e7c3a4b5-6d7e-8901-2cde-f34567890123"
}
}
}
}
Mutation
Arguments
ReverseTransactionInput!
required
Show child attributes
Show child attributes
UUID!
required
A unique, 36 character identifier created by Tesouro and assigned to the entity providing the goods or services to the cardholder, such as a Merchant, a Submerchant of a Payment Facilitator, a Seller within a Marketplace, or a Biller of a Consumer Bill Payment Service Provider (CBPS). Historically, processors have called this identifier the Merchant ID (or MID), Outlet ID, or Customer number.
ReverseTransactionAmountInput
The partial or full amount of the transaction to be reversed. If you do not specify an amount, Tesouro will reverse the full amount.
Show child attributes
Show child attributes
DecimalAmount
deprecated
The base transaction amount intended to be collected by this payment not including any cashback, gratuity, fees, or taxes.Deprecated: Base amount is not supported on reversal requests.
DecimalAmount
deprecated
The cash back amount.Deprecated: Cash back amount is not supported on reversal requests.
TransactionAmountCurrencyCode!
required
The purchasing currency code of the request amount.See TransactionAmountCurrencyCode
DecimalAmount
deprecated
The gratuity amount.Deprecated: Gratuity amount is not supported on reversal requests.
DecimalAmount
deprecated
The sum of all item costs in the transaction before applying any additional charges such as taxes, or feesDeprecated: SubtotalAmount is not supported on reversal requests.
Decimal!
required
The requested amount intended to be collected by this transaction. A positive decimal with precision depending on transaction currency. For example: $10.00 would be 10.00 or 10.
UUID!
required
The unique ‘transactionId’ of the previously authorized transaction that is to be reversed.
Max36Text!
required
A unique identifier created by the entity holding the direct relationship with the Acceptor, and used by that entity for reconciliation and transaction search. Tesouro uses this identifier to manage idempotency.
Return type
ReverseTransactionPayload!
[ReverseTransactionError!]
Show Possible types
Show Possible types
Show InternalServiceError
Show InternalServiceError
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
Show RuleInViolationError
Show RuleInViolationError
This occurs when an internal Tesouro business rule is in violation.
String!
required
Advice on how to overcome the rule in the future.
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
An explanation of why the rule exists.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
Show SyntaxOnNetworkResponseError
Show SyntaxOnNetworkResponseError
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
Show TimeoutOnNetworkResponseError
Show TimeoutOnNetworkResponseError
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
Int!
required
The amount of time Tesouro waited for a response in milliseconds.
Show ValidationFailureError
Show ValidationFailureError
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
The name of the graphql field in error.
String!
required
The path to the graphql field in error.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
String!
required
The value of the graphql field in error.
Show PriorTransactionNotFoundError
Show PriorTransactionNotFoundError
This occurs when a prior referenced transaction cannot be found
DateTime!
required
deprecated
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.Deprecated: Use errorDateTime instead.
DateTime!
required
The date and time, in UTC, that the error occured. Formatted as 2024-03-27T02:40:00Z.
String!
required
A human readable description of the error.
ProcessorResponseCode!
required
Tesouro response code indicating the error.See ProcessorResponseCode
UUID!
required
Unique ID for the transaction assigned by Tesouro.
String!
required
The transaction id that cannot be found.
ReverseTransactionResponse
Show child attributes
Show child attributes
Date!
required
The date Tesouro received the transaction based on acceptor cutoff time
CardInformation
Details related to the card used on the transactionSee CardInformation
Int!
required
deprecated
Difference between request receipt and response in milliseconds.Deprecated: New durations coming soon.
Boolean!
required
Result of Tesouro’s idempotency check. If the transaction reference matches that of another transaction from that presenter it will be treated as a duplicate.
String!
required
A detailed description of the response code. e.g., Insufficient funds.
NetworkResponseDetails!
required
The response code from the network.See NetworkResponseDetails
UUID!
required
A unique 36 character identifier created by Tesouro and assigned to a group of transactions in the same payment request cohort. e.g., An authorization request, incremental authorization request, and the final capture would have the same paymentID.
ProcessorResponseCode!
required
A normalized 4-character response code defined by Tesouro that represents the outcome of the payment transaction request.See ProcessorResponseCode
[SanitizedFieldOutput!]!
required
List of fields that were detected as invalid and sanitized by Tesouro to prevent the payment transaction request from failing.See SanitizedFieldOutput
DateTime!
required
The UTC date and time the transaction was received by Tesouro.
TokenDetails
Details associated with the token generated on a tokenization request.See TokenDetails
UUID!
required
A unique identifier created by Tesouro and assigned to the transaction.
mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {
reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {
errors {
... on InternalServiceError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
... on RuleInViolationError {
advice
dateTimeUtc
errorDateTime
explanationOfRule
message
}
... on SyntaxOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on TimeoutOnNetworkResponseError {
attemptedNetwork
dateTimeUtc
errorDateTime
message
processorResponseCode
}
... on ValidationFailureError {
dateTimeUtc
errorDateTime
fieldName
fieldPath
message
}
... on PriorTransactionNotFoundError {
dateTimeUtc
errorDateTime
message
processorResponseCode
transactionId
}
}
reverseTransactionResponse {
activityDate
cardDetails {
last4
paymentBrand
}
duration
isDuplicateRequest
message
networkResponseDetails {
networkResponseCode
processorResponseCode
}
paymentId
processorResponseCode
sanitizedFields {
fieldName
fieldPath
originalValue
reason
sanitizedValue
}
timestampUtc
tokenDetails {
token
tokenizedPan
}
transactionId
}
}
}
{
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
curl --request POST \
--url https://api.sandbox.com/graphql \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--data '{
"query": "mutation ReverseTransaction($reverseTransactionInput: ReverseTransactionInput!) {\n reverseTransaction(reverseTransactionInput: $reverseTransactionInput) {\n errors {\n ... on InternalServiceError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n ... on RuleInViolationError {\n advice\n dateTimeUtc\n errorDateTime\n explanationOfRule\n message\n }\n ... on SyntaxOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on TimeoutOnNetworkResponseError {\n attemptedNetwork\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n }\n ... on ValidationFailureError {\n dateTimeUtc\n errorDateTime\n fieldName\n fieldPath\n message\n }\n ... on PriorTransactionNotFoundError {\n dateTimeUtc\n errorDateTime\n message\n processorResponseCode\n transactionId\n }\n }\n reverseTransactionResponse {\n activityDate\n cardDetails {\n last4\n paymentBrand\n }\n duration\n isDuplicateRequest\n message\n networkResponseDetails {\n networkResponseCode\n processorResponseCode\n }\n paymentId\n processorResponseCode\n sanitizedFields {\n fieldName\n fieldPath\n originalValue\n reason\n sanitizedValue\n }\n timestampUtc\n tokenDetails {\n token\n tokenizedPan\n }\n transactionId\n }\n }\n}",
"variables": {
"reverseTransactionInput": {
"acceptorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transactionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"transactionReference": "example"
}
}
}'
{
"data": {
"reverseTransaction": {
"errors": [
{
"__typename": "InternalServiceError",
"dateTimeUtc": "2026-01-15T14:30:00Z",
"errorDateTime": "2026-01-15T14:30:00Z",
"message": "example",
"processorResponseCode": "A0000",
"transactionId": "c9a1e2d3-4b5f-6789-0abc-def123456789"
}
],
"reverseTransactionResponse": {
"activityDate": "2026-01-15",
"cardDetails": {
"last4": "1234",
"paymentBrand": "VISA"
},
"duration": 0,
"isDuplicateRequest": true,
"message": "example",
"networkResponseDetails": {
"networkResponseCode": "example",
"processorResponseCode": "A0000"
},
"paymentId": "d8b2f3e4-5c6a-7890-1bcd-ef2345678901",
"processorResponseCode": "A0000",
"sanitizedFields": [
{
"fieldName": "example",
"fieldPath": "example",
"originalValue": "example",
"reason": "example",
"sanitizedValue": "example"
}
],
"timestampUtc": "2026-01-15T14:30:00Z",
"tokenDetails": {
"token": "example",
"tokenizedPan": "example"
},
"transactionId": "e7c3a4b5-6d7e-8901-2cde-f34567890123"
}
}
}
}
Was this page helpful?