Cancel a transfer

Initiate a cancellation for a card, ACH, or queued transfer.

To access this endpoint using a token you'll need to specify the /accounts/{accountID}/transfers.write scope.

POST
/accounts/{accountID}/transfers/{transferID}/cancellations
cURL Go TypeScript PHP Python Java Ruby
curl -X POST "https://api.moov.io/accounts/{accountID}/transfers/{transferID}/cancellations" \
  -H "Authorization: Bearer {token}" \
  -H "X-Idempotency-Key: UUID" \
  -H "x-moov-version: v2024.01.00" \
mc, _ := moov.NewClient()

var accountID string // facilitator ID
var transferID string

mc.CancelTransfer(ctx, accountID, transferID)
import { SDK } from "openapi";

const sdk = new SDK({
  xMoovVersion: "v2024.01.00",
});

async function run() {
  const result = await sdk.transfers.createCancellation({
    accountID: "10ae862c-6658-4f87-967d-46e995737204",
    transferID: "36c80a6c-ceb2-4e5d-a437-8a39afdfdc58",
  });

  console.log(result);
}

run();
declare(strict_types=1);

require 'vendor/autoload.php';

use OpenAPI\OpenAPI;

$sdk = OpenAPI\SDK::builder()
    ->setXMoovVersion('v2024.01.00')
    ->build();



$response = $sdk->transfers->createCancellation(
    accountID: '10ae862c-6658-4f87-967d-46e995737204',
    transferID: '36c80a6c-ceb2-4e5d-a437-8a39afdfdc58'

);

if ($response->cancellation !== null) {
    // handle response
}
from openapi import SDK


with SDK(
    x_moov_version="v2024.01.00",
) as sdk:

    res = sdk.transfers.create_cancellation(account_id="10ae862c-6658-4f87-967d-46e995737204", transfer_id="36c80a6c-ceb2-4e5d-a437-8a39afdfdc58")

    # Handle response
    print(res)
package hello.world;

import java.lang.Exception;
import org.openapis.openapi.SDK;
import org.openapis.openapi.models.errors.GenericError;
import org.openapis.openapi.models.operations.CreateCancellationResponse;

public class Application {

    public static void main(String[] args) throws GenericError, Exception {

        SDK sdk = SDK.builder()
                .xMoovVersion("v2024.01.00")
            .build();

        CreateCancellationResponse res = sdk.transfers().createCancellation()
                .accountID("10ae862c-6658-4f87-967d-46e995737204")
                .transferID("36c80a6c-ceb2-4e5d-a437-8a39afdfdc58")
                .call();

        if (res.cancellation().isPresent()) {
            // handle response
        }
    }
}
require 'openapi'

Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::SDK.new(
      x_moov_version: 'v2024.01.00',
    )

res = s.transfers.create_cancellation(account_id: '10ae862c-6658-4f87-967d-46e995737204', transfer_id: '36c80a6c-ceb2-4e5d-a437-8a39afdfdc58')

unless res.cancellation.nil?
  # handle response
end
200 202 400 401 403 404 429 500 504
The request completed successfully.
application/json
{
  "cancellationID": "89ca7f54-13ba-4714-b9af-17163eae2057",
  "createdOn": "2025-01-19T03:02:43.255309588Z",
  "status": "completed"
}

x-request-id

string required
A unique identifier used to trace requests.
Successfully initiated a cancellation but an error occurred while waiting for a synchronous response.
application/json
{
  "cancellationID": "string",
  "status": "pending",
  "createdOn": "2019-08-24T14:15:22Z"
}

x-request-id

string required
A unique identifier used to trace requests.
The server could not understand the request due to invalid syntax.
application/json
{
  "error": "string"
}

x-request-id

string required
A unique identifier used to trace requests.
The request contained missing or expired authentication.

x-request-id

string required
A unique identifier used to trace requests.
The user is not authorized to make the request.

x-request-id

string required
A unique identifier used to trace requests.
The requested resource was not found.

x-request-id

string required
A unique identifier used to trace requests.
Request was refused due to rate limiting.

x-request-id

string required
A unique identifier used to trace requests.
The request failed due to an unexpected error.

x-request-id

string required
A unique identifier used to trace requests.
The request failed because a downstream service failed to respond.

x-request-id

string required
A unique identifier used to trace requests.

Headers

X-Moov-Version

string

Specify an API version.

API versioning follows the format vYYYY.QQ.BB, where

  • YYYY is the year
  • QQ is the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)
  • BB is the build number, starting at .01, for subsequent builds in the same quarter.
    • For example, v2024.01.00 is the initial release of the first quarter of 2024.

The dev version represents the most recent development state. It may include breaking changes and should be treated as a beta release. When no version is specified, the API defaults to v2024.01.00.

Path parameters

accountID

string required
The partner's Moov account ID.

transferID

string required
The transfer ID to cancel.

Response

application/json

cancellationID

string required

createdOn

string<date-time> required

status

string<enum> required
Possible values: pending, completed, failed