# Cancel a transfer

Transfers may be cancelled up until the transfer has been processed and funds converted. Cancellation is final — it cannot be undone.

{% admonition type="info" name="When can a transfer be cancelled?" %}
A transfer can only be cancelled programmatically via the API if it meets all of the following criteria:

- The transfer is not in funds_converted or later state.
- There are no processing problems with the transfer.

If the transfer does not meet these criteria, the API will return a 409 Conflict error with the code transfer.cancellation.not.allowed.

For more information about transfer states, see Tracking Transfers.
{% /admonition %}

Endpoint: PUT /v1/transfers/{transferId}/cancel
Security: UserToken, PersonalToken

## Path parameters:

  - `transferId` (integer, required)
    The transfer ID

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.
    Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

## Response 200 fields (application/json):

  - `body` (object) — one of:
    - Standard Transfer:
      - `id` (integer)
        Transfer ID
        Example: 16521632
      - `user` (integer)
        Your user ID
        Example: 4342275
      - `targetAccount` (integer)
        Recipient account ID
        Example: 8692237
      - `sourceAccount` (integer,null)
        Refund recipient account ID
      - `quote` (integer,null)
        V1 quote ID
      - `quoteUuid` (string)
        V2 quote ID
        Example: "8fa9be20-ba43-4b15-abbb-9424e1481050"
      - `status` (string)
        Transfer current status. See [Tracking Transfers](/guides/product/send-money/tracking-transfers) for all possible statuses.
        Example: "incoming_payment_waiting"
      - `rate` (number)
        Exchange rate value
        Example: 0.89
      - `created` (string)
        Timestamp when transfer was created
        Example: "2017-11-24 10:47:49"
      - `business` (integer,null)
        Your business profile ID
      - `details` (object)
      - `details.reference` (string)
        Payment reference text
        Example: "Testing"
      - `hasActiveIssues` (boolean)
        Are there any pending issues which stop executing the transfer?
      - `sourceCurrency` (string)
        Source currency code
        Example: "EUR"
      - `sourceValue` (number)
        Transfer amount in source currency
      - `targetCurrency` (string)
        Target currency code
        Example: "GBP"
      - `targetValue` (number)
        Transfer amount in target currency
        Example: 150
      - `customerTransactionId` (string)
        Unique identifier randomly generated per transfer request by the calling client
        Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
      - `payinSessionId` (string)
        ID of the Payin Session generated for the transfer, which can be used for certain payin methods when funding the transfer
        Example: "23330542-8e9e-419f-95eb-312b880f92ad"
      - `reference` (string)
        Deprecated, use details.reference instead
        Example: "reference text"
      - `transferRequest` (integer,null)
        Deprecated
    - Originator Transfer:
      - `id` (integer)
        Transfer ID
        Example: 16521632
      - `user` (integer)
        Your user ID
        Example: 4342275
      - `targetAccount` (integer)
        Recipient account ID
        Example: 8692237
      - `sourceAccount` (integer,null)
        Refund recipient account ID
      - `quote` (string)
        Quote ID
        Example: "8fa9be20-ba43-4b15-abbb-9424e1481050"
      - `status` (string)
        Transfer current status. See [Tracking Transfers](/guides/product/send-money/tracking-transfers) for all possible statuses.
        Example: "cancelled"
      - `rate` (number)
        Exchange rate value
        Example: 0.89
      - `created` (string)
        Timestamp when transfer was created
        Example: "2025-10-29T12:28:16.000Z"
      - `business` (integer,null)
        Your business profile ID
      - `details` (object)
      - `details.reference` (string)
        Payment reference text
        Example: "Testing"
      - `originator` (object)
        Data block to capture payment originator details
      - `originator.legalEntityType` (string)
        Payment originator legal type
        Enum: "PRIVATE", "BUSINESS"
      - `originator.reference` (string)
        Unique customer ID in your system
        Example: "CST-2991992"
      - `originator.name` (object)
      - `originator.name.givenName` (string)
        Payment originator first name
        Example: "John"
      - `originator.name.middleNames` (array)
        Payment originator middle name(s)
        Example: ["Ryan"]
      - `originator.name.familyName` (string)
        Payment originator family name
        Example: "Godspeed"
      - `originator.name.patronymicName` (string,null)
        Payment originator patronymic name
      - `originator.name.fullName` (string)
        Payment originator full legal name
        Example: "John Godspeed"
      - `originator.dateOfBirth` (string)
        Payment originator date of birth
        Example: "1977-07-01"
      - `originator.businessRegistrationCode` (string,null)
        Payment originator business registry or incorporation number
      - `originator.address` (object)
      - `originator.address.firstLine` (string)
        Payment originator address first line
        Example: "Salu tee 14"
      - `originator.address.city` (string)
        Payment originator address city
        Example: "Tallinn"
      - `originator.address.stateCode` (string,null)
        Payment originator address state code
      - `originator.address.countryCode` (string)
        Payment originator address country code ISO 3166-1 alpha-2
        Example: "EE"
      - `originator.address.postCode` (string)
        Payment originator address zip code
        Example: "12112"
      - `originator.accountDetails` (string)
        Originator account number
        Example: "23456789"
      - `hasActiveIssues` (boolean)
        Are there any pending issues which stop executing the transfer?
      - `sourceCurrency` (string)
        Source currency code
        Example: "EUR"
      - `sourceValue` (number)
        Transfer amount in source currency
      - `targetCurrency` (string)
        Target currency code
        Example: "GBP"
      - `targetValue` (number)
        Transfer amount in target currency
        Example: 150
      - `originalTransferId` (string)
        Unique identifier randomly generated per transfer request by the calling client
        Example: "54a6bc09-cef9-49a8-9041-f1f0c654cd88"
      - `payinSessionId` (string)
        ID of the Payin Session generated for the transfer, which can be used for certain payin methods when funding the transfer
        Example: "23330542-8e9e-419f-95eb-312b880f92ad"
      - `reference` (string)
        Deprecated, use details.reference instead
        Example: "reference text"
      - `transferRequest` (integer,null)
        Deprecated


## Response 404 fields

## Response 409 fields
