# Cancel a transfer

Transfers may be cancelled up until the transfer has been processed and funds converted. Cancellation is final — it cannot be undone.
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](/guides/product/send-money/tracking-transfers#transfer-statuses).

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](/guides/developer/headers/correlation-id).

## Response 200 fields (application/json):

  - `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
    Example: null

  - `quote` (integer | null)
    V1 quote ID
    Example: null

  - `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

  - `reference` (string)
    Deprecated, use `details.reference` instead
    Example: reference text

  - `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
    Example: null

  - `transferRequest` (integer | null)
    Deprecated
    Example: null

  - `details` (object)

  - `details.reference` (string)
    Payment reference text
    Example: Testing

  - `hasActiveIssues` (boolean)
    Are there any pending issues which stop executing the transfer?
    Example: false

  - `sourceCurrency` (string)
    Source currency code
    Example: EUR

  - `sourceValue` (number)
    Transfer amount in source currency
    Example: 0

  - `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

  - `quote` (string)
    Quote ID
    Example: 8fa9be20-ba43-4b15-abbb-9424e1481050

  - `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
    Example: null

  - `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
    Example: null

  - `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
    Example: null

  - `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

  - `originalTransferId` (string)
    Unique identifier randomly generated per transfer request by the calling client
    Example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88

