Approve, reject, cancel, fail or refund a withdrawal

Acts on a withdrawal. A newly created withdrawal stays `PENDING` and does not advance on its own: `approve` is the step that moves it on. The `id` in the body is the withdrawal id — the `withdrawal_id` from `/process/` or the `id` from `/withdrawals/`; the wrong one answers `404 Withdrawal not found: 'Item'`.

POST
/withdrawals/perform_action/

Authorization

Authorization
Authorization<token>

Your public API key, with the word Token and a space in front of it. Example: Token 6534bc0a7e1f4d2b9c8e3a5f7b1d2c4e6f8a9b0c — that whole value is the header. Sending the key alone returns 401 'Authentication credentials were not provided'. In this playground you may paste just the key; the prefix is added for you.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/withdrawals/perform_action/" \  -H "Content-Type: application/json" \  -d '{    "id": "ad3069ed-598e-4a1b-82e0-2279d5af292d",    "action": "approve"  }'
{
  "id": "ad3069ed-598e-4a1b-82e0-2279d5af292d",
  "business_id": "69",
  "status": "PROCESSING",
  "amount": 20,
  "currency": "MXN",
  "transfer_method": "SPEI",
  "status_changes": [
    {
      "from_status": "PENDING",
      "to_status": "PROCESSING",
      "timestamp": "2026-10-01T17:35:02.118402",
      "reason": null
    }
  ],
  "created_at": "2026-10-01T17:33:41.364685Z",
  "modified_at": "2026-10-01T17:35:02.201173Z",
  "paid_at": null
}
{
  "error": "Invalid action"
}
{
  "detail": "Invalid token."
}
{
  "error": "Withdrawal not found: 'Item'"
}
{
  "detail": "Cannot modify withdrawal in terminal state"
}
Was this page helpful?