Withdrawals

Move funds from a platform-managed account to an external counterparty via supported rails.

Endpoints

POST /withdrawals

Create a withdrawal request to send funds to an external counterparty.

Request Body

Field Type Description
account_id required string Source account ID
counterparty_id required string Destination counterparty ID
amount required string Withdrawal amount
purpose required string Purpose: PERSONAL_ACCOUNT, BUSINESS_PAYMENT, OTHER
rail string Payment rail (ACH, WIRE, FPS, SEPA)
reference string Optional reference

Example Request

Request
{
  "account_id": "acc_123456789",
  "counterparty_id": "cpty_111222333",
  "amount": "2500.00",
  "purpose": "PERSONAL_ACCOUNT",
  "rail": "ACH",
  "reference": "Monthly transfer"
}

Response

201 Created
{
  "id": "wth_777666555",
  "account_id": "acc_123456789",
  "counterparty_id": "cpty_111222333",
  "amount": "2500.00",
  "currency": "USD",
  "rail": "ACH",
  "purpose": "PERSONAL_ACCOUNT",
  "status": "REQUESTED",
  "created_at": "2026-01-15T10:30:00Z"
}
POST /withdrawals/{id}/accept

Accept and authorize a withdrawal request.

Headers

Header Required Description
x-bultra-idempotency-id Recommended Idempotency key for safe retries

Response

200 OK
{
  "id": "wth_777666555",
  "status": "ACCEPTED",
  "accepted_at": "2026-01-15T10:35:00Z",
  "estimated_completion": "2026-01-17T17:00:00Z"
}
POST /withdrawals/{id}/cancel

Cancel a pending withdrawal. Only withdrawals with status REQUESTED or ACCEPTED can be cancelled.

Response

200 OK
{
  "id": "wth_777666555",
  "status": "CANCELLED",
  "cancelled_at": "2026-01-15T10:40:00Z"
}
GET /withdrawals/{id}

Retrieve details of a specific withdrawal.

Response

200 OK
{
  "id": "wth_777666555",
  "account_id": "acc_123456789",
  "counterparty_id": "cpty_111222333",
  "amount": "2500.00",
  "currency": "USD",
  "rail": "ACH",
  "purpose": "PERSONAL_ACCOUNT",
  "status": "EXECUTED",
  "reference": "Monthly transfer",
  "created_at": "2026-01-15T10:30:00Z",
  "accepted_at": "2026-01-15T10:35:00Z",
  "executed_at": "2026-01-17T14:20:00Z"
}
GET /withdrawals/{id}/status

Retrieve the current status and any RFI requirements for a withdrawal.

Response

200 OK
{
  "id": "wth_777666555",
  "status": "CHANGES_REQUESTED",
  "required_documents": [
    {
      "id": "doc_req_001",
      "type": "INVOICE",
      "description": "Please provide invoice or receipt for this payment",
      "status": "PENDING"
    }
  ]
}

Withdrawal Status Values

Status Description
REQUESTED Withdrawal created, awaiting acceptance
ACCEPTED Withdrawal accepted, processing
CHANGES_REQUESTED RFI triggered, documentation required
IN_PROGRESS Funds in transit
EXECUTED Withdrawal completed successfully
FAILED Withdrawal failed
CANCELLED Withdrawal was cancelled
GET /withdrawals/{id}/receipt

Download a receipt for a completed withdrawal.

Response

Returns the receipt as a PDF file.

200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="withdrawal_receipt_wth_777666555.pdf"

[Binary PDF data]