Cancel a Crypto Withdrawal
Cancels a withdrawal that is still pending, waiting out its grace period (grace_ends_at). The reserved amount returns to the account's available balance. Once the withdrawal is submitted to the custodian it is processing, and it can no longer be cancelled.
A frozen account can still cancel.
This endpoint takes no Idempotency-Key. Cancelling the same withdrawal twice answers 409 withdrawal_not_cancellable the second time and changes nothing; Get a Crypto Withdrawal shows it cancelled.
Part of crypto v3, in beta. This endpoint stays open after crypto v3 withdrawals are turned off, so a withdrawal already made can still be cancelled.
A workspace-scoped key cancels any withdrawal of the workspace, or narrows to one account with account_id; an account-scoped key cancels only its own account's, and another account's reads as 404.
Replaces DELETE /api/v2/crypto/withdraw/{withdrawalId}/cancel for withdrawals created through v3. A withdrawal created through v2 is not found here: cancel it through v2.
Authorization:
Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.
Headers:
Authorization: APIKey {SIGNED_JWT}
How to build and sign the JWT: Authentication.
Endpoint
/v3/crypto/withdrawals/{withdrawal_id}/cancel
Path parameters
| Parameter | Type | Description |
|---|---|---|
withdrawal_id | string (wtx_…) | Required. The withdrawal. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
account_id | string (cst_…) | Optional. Only cancel the withdrawal if it is this account's. |
It takes no body.
Response Sample
200 OK
{
"id": "wtx_01k9a1b3c5d7e9f1g3h5j7k9m1",
"account_id": "cst_01h455vb4pex5vsknk084sn02q",
"status": "cancelled",
"coin": "USDC",
"amount": "250",
"fee": "10",
"total": "240",
"counterparty_id": "wlt_01k8z5q7r9s1t3v5w7x9y1z3a5",
"counterparty_address": "0x8f3b2c1d0e9a7b6c5d4e3f2a1b0c9d8e7f6a5b4c",
"reference": "inv-2026-10-0042",
"description": "Supplier payment",
"status_reason": "Cancelled by user",
"grace_ends_at": "2026-10-20T18:05:00Z",
"created_at": "2026-10-20T18:00:00Z",
"updated_at": "2026-10-20T18:02:14Z"
}
Response Schema
The cancelled withdrawal, with the fields described in Create a Crypto Withdrawal. A cancellation sends crypto_transaction_status_updated with status cancelled and previousStatus pending.
Errors
| Status | message | When |
|---|---|---|
400 | failed to parse request | withdrawal_id is not a wtx_… id, or account_id is not a cst_… id. |
401 | unauthorized | Missing or invalid signature. |
403 | forbidden | An account-scoped key named another account. |
404 | withdrawal_not_found | No such withdrawal, it belongs to another account, or it was created through v2. |
409 | withdrawal_not_cancellable | The withdrawal is no longer pending: it was submitted, or already completed, failed or cancelled. |
Coming from v2
v2 (DELETE /api/v2/crypto/withdraw/{withdrawalId}/cancel) | v3 |
|---|---|
DELETE, answers 204 | POST, answers the cancelled withdrawal |
withdrawalId (uuid) | withdrawal_id (wtx_…) |
Support and Resources
If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.
Stay Updated
Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:
- Instagram: BlockWyre Instagram
- Twitter: BlockWyre Twitter
- Facebook: BlockWyre Facebook
- LinkedIn: BlockWyre LinkedIn
We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!