---
title: "Cancel a transaction"
method: POST
path: "/v1/transactions/cancellation"
---

# Cancel a transaction

`POST /v1/transactions/cancellation`

Cancel a previously submitted transaction.

Cancellation must reference the transaction you want to cancel. It can be the original transaction, a credit note or an adjustment.

Use /cancellation endpoint to cancel a transaction.

## Request body

- TransactionCancelRequest
  - `country_code` string, required — ISO 3166-1 alpha-2 uppercase country code the transaction is taking place in. Validations: - Country code must be uppercase ISO 3166-1 alpha-2. - Required property
  - `country_subdivision_code` string — ISO 3166-2 uppercase code of the principal country subdivision (province, state, region) the transaction is taking place in. Validations: - Values allowed are (letter case matters): AB, BC, MB, NB, NL, NS, NT, NU, ON, PE, QC, SK, YT - Country subdivision code is only supported for Canada.
  - `note` string — A text note attached to a transaction. Notes are HTML enabled and will be displayed on the visual document. Validations: - Maximum length: 3000
  - `reference_transaction_id` string, required — The external transaction identifier of the original transaction the cancellation is referencing. e.g., MY_ORIGINAL_IDENTIFIER_0001 Validations: - Maximum length: 150 - Either reference_transaction_id or reference_transactions must be provided.
  - `reference_transactions` TransactionReference[], required — The referenced transactions for the cancellation. Validations: - Either reference_transaction_id or reference_transactions must be provided.
    - `transaction_id` string — External transaction identifier provided by the customer. e.g., MY_CREDIT_IDENTIFIER_0001 Validations: - Maximum length: 150
  - `tax_reason` TransactionTaxReason
    - `code` string, required — The specific code to be used as the tax reason for the transaction. e.g., S01 - indicating no tax effect in Mexican jurisdiction Validations: - Maximum length: 15 - Required property
    - `description` string — Further explanation of the tax reason for the code provided Validations: - Maximum length: 450
    - `tax_reason_details` TransactionTaxReasonDetail[] — Additional details to be provided for the tax reason code. Validations: - This field is only supported in specific use cases, refer to country-specific integration guides in the Fonoa dashboard.
      - `code` string — Additional code that complements the tax reason code. For example, specific refusal code for refusal tax reason. Validations: - Maximum length: 30
      - `note` string — Further explanation of the tax reason detail for the code provided Validations: - Maximum length: 450
  - `transaction_date` string, required — RFC3339 datetime string representing the point in time when transaction is executed. Validations: - Required property - Must be an RFC3339 format date
  - `transaction_id` string, required — External transaction identifier provided by the customer. e.g., MY_CANCELLATION_IDENTIFIER_0001 Validations: - Maximum length: 150 - Required property

## Response `202`

Accepted - transaction was successfully submitted for processing.

- OperationResultResponse
  - `errors` TransactionErrorResponse[] — List of errors in case the request was unsuccessful.
    - `code` string — Error code of the issue. e.g., field_not_valid
    - `doc_link` string — The link for the error documentation. Follow it to gather more details about the error
    - `field` string — Field from the input request that caused the error, in case of validation errors. e.g. transaction_date
    - `message` string — Error message of the issue. e.g., Date must be in RFC3339 format.
    - `type` string — Error type of the issue. e.g., warning, validation, general, tax_authority
  - `message` string — Information about the failure reason in case the request was unsuccessful.
  - `operation_id` string — Auto-generated unique identifier of a transaction operation returned upon async operation request.
  - `transaction_id` string — The unique external transaction identifier provided with the initial request.

## Other responses

- `400` — Bad customer request - some of the provided information is incorrect or mandatory data is missing. Check the message and errors section of the response for more details.
- `401` — Authentication failed - missing or incorrect subscription key
- `429` — Too many requests were sent for a short period of time. Try again a bit later.
- `5XX` — Internal server error. Its not you, its us! We are experiencing a rare and unexpected system disruption. Retry again later. The message field of the response will contain more information for the cause. Feel free to contact us.

---

[API](https://skmtc.net/fonoa/apis/fonoa-api.md) · [All operations](https://skmtc.net/fonoa/apis/fonoa-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fonoa/fonoa-api/versions/cf0ebc843a3f/schema)
