International Wire Cancellations

International wire transfers can be requested by originators to be canceled at any time. There is no deadline by which a transfer must be canceled.

Outgoing transfer cancellations

If you sent an outgoing transfer by mistake, you can request to cancel it via our Cancellation API to recall the funds. If Column has not submitted the transfer request to the Swift network yet, we will mark it as returned and full funds will be credited back to the originator account.

However, if Column has already submitted the transfer request to the Swift network, we will forward your cancellation request directly to the financial institution that is currently processing the transfer, which may be an intermediary bank or the beneficiary bank. It is up to them to decide if they should accept or reject your cancellation request.

If the funds have not been credited to the beneficiary account yet, it is very likely that your cancellation request will be accepted. Otherwise, the beneficiary bank will need to contact the beneficiary. If the beneficiary accepts your cancellation request, funds will be returned shortly. However, if your cancellation request is rejected by an intermediary bank, the beneficiary bank or the beneficiary, no funds will be returned.

Column sends webhook events when a cancellation request is submitted, rejected or accepted.

curl https://api.column.com/transfers/international-wire/swft_xxx/cancel' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d cancellation_reason="requested_by_originator"

The following is an example of outgoing transfer cancellation tracking (Read more), which was rejected by the beneficiary bank because the beneficiary refused to return the funds.

  1. Column sent USD 10.00 to LUMIILITXXX via our correspondent bank CHASUS33XXX
  2. Column sent a cancellation request of the above transfer
  3. The Swift Tracking system TRCKCHZZXXX forwarded the cancellation request to LUMIILITXXX
  4. LUMIILITXXX contact the beneficiary for authorization to return the transfer
  5. LUMIILITXXX completed the transfer and credited USD 10.00 to the beneficiary account because the beneficiary refused to return the funds
  6. The Swift Tracking system TRCKCHZZXXX notified Column that the cancellation request has been rejected.

Note: financial institutions have their own internal policies to handle cancellation requests. In this example, the beneficiary bank decided to contact the beneficiary even though the cancellation request was received before funds were credited to the beneficiary account.

{
  "cancellation_reason": "requested_by_originator",
  "cancellation_status": "rejected",
  "completed_amount": 1000,
  "completed_at": "2023-09-04T21:00:00Z",
  "completed_currency_code": "USD",
  "events": [
    {
      ...
      "instructed_amount": 1000,
      "instructed_currency_code": "USD",
      "instructed_fi": "CHASUS33XXX",
      "settled_amount": 1000,
      "settled_currency_code": "USD",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that provides tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-09-01T17:21:04Z",
      "updated_by": "CLNOUS66XXX"
    },
    {
      ...
      "instructed_amount": 1000,
      "instructed_currency_code": "USD",
      "instructed_fi": "LUMIILITXXX",
      "settled_amount": 1000,
      "settled_currency_code": "USD",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that provides tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-09-01T17:22:50Z",
      "updated_by": "CHASUS33XXX"
    },
    {
      ...
      "cancellation_reason": "cancellation requested by the Originator",
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "type": "transfer_cancellation_requested",
      "updated_at": "2023-09-01T20:20:34Z",
      "updated_by": "CLNOUS66XXX"
    },
    {
      ...
      "cancellation_status_reason": "request sent to the tracking system and acknowledged",
      "type": "transfer_cancellation_tracking_updated",
      "updated_at": "2023-09-01T20:20:34Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_status_reason": "request added to cancellation list",
      "type": "transfer_cancellation_tracking_updated",
      "updated_at": "2023-09-01T20:20:34Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_reason": "cancellation requested by the Originator",
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "type": "transfer_cancellation_requested",
      "updated_at": "2023-09-01T20:20:34Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_status_reason": "request forwarded to processing/last agent but delivery acknowledgement not received",
      "type": "transfer_cancellation_tracking_updated",
      "updated_at": "2023-09-01T20:20:34Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_status_reason": "request forwarded to processing/last agent and delivery acknowledgement received",
      "type": "transfer_cancellation_tracking_updated",
      "updated_at": "2023-09-01T20:21:51Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "pending",
      "cancellation_status_reason": null,
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-01T20:24:49Z",
      "updated_by": "CHASUS33XXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "pending",
      "cancellation_status_reason": null,
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-01T20:24:49Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "pending",
      "cancellation_status_reason": "beneficiary authorization is required to return the payment",
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-01T20:27:34Z",
      "updated_by": "CHASUS33XXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "pending",
      "cancellation_status_reason": "beneficiary authorization is required to return the payment",
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-01T20:27:34Z",
      "updated_by": "TRCKCHZZXXX"
    },
    {
      ...
      "settled_amount": 1000,
      "settled_currency_code": "USD",
      "transfer_status": "completed",
      "type": "transfer_updated",
      "updated_at": "2023-09-03T04:38:33Z",
      "updated_by": "LUMIILITXXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "rejected",
      "cancellation_status_reason": "a financial institution refuses to cancel",
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-04T17:21:49Z",
      "updated_by": "CHASUS33XXX"
    },
    {
      ...
      "cancellation_reason": null,
      "cancellation_status": "rejected",
      "cancellation_status_reason": "a financial institution refuses to cancel",
      "type": "transfer_cancellation_responded",
      "updated_at": "2023-09-04T17:21:49Z",
      "updated_by": "TRCKCHZZXXX"
    }
  ],
  ...
  "transfer_status": "completed",
  "transfer_status_reason": null,
  "updated_at": "2023-09-04T17:21:49Z"
}

Incoming transfer cancellations

When Column receives a cancellation request for an incoming transfer, we will send you a swift.incoming_transfer.cancellation_requested webhook event. If you want to accept the cancellation request, you just need to call our Return API to return the funds by specifying cancellation_requested as the return reason. If you want to reject the cancellation request, please just ignore it. We will reject it on your behalf after its deadline (11 calendar days).

Note: Column will never automatically accept any incoming cancellation requests, even if cancellation requests are received before funds are credited to their beneficiary accounts.

curl https://api.column.com/transfers/international-wire/swft_xxx/return' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d return_reason="cancellation_requested"