Withdrawal Status Changed
Withdrawal Status Changed documentation for Compose Finance APIs and integrations.
Triggered when withdrawal status changes (PROCESSING, PROPOSED, PARTIALLY_SIGNED, COMPLETED, FAILED, CANCELLED, EXPIRED).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/withdrawal.status_changedWithdrawal Created Webhook
Triggered when a withdrawal request is created.
Create customer withdrawal POST
Creates a withdrawal to the customer's registered bank account. **Prerequisites** API withdrawals must be enabled for your organization. If not enabled, this endpoint returns `403 Forbidden`. Contact support to enable API withdrawals. **Execution Modes** 1. **Automatic Execution** (`PROCESSING`) — Withdrawal executes immediately when: - Sufficient available allowance - Sufficient USDC balance in wallet 2. **Manual Approval** (`PROPOSED`) — Transaction created for dashboard approval when: - Withdrawal exceeds available allowance - Insufficient USDC balance in wallet (user can deposit funds before signing) - Automatic execution fails (transaction converted to manual approval) **Custodial Balances** USDT and EURC (and USDC when `source` is `custodial`) are held on the customer's custodial balance rather than the wallet. These withdrawals are debited and paid out immediately (`PROCESSING`) when the organization has custodial balances and API withdrawals enabled. There is no manual-approval fallback: an insufficient custodial balance returns `400`, and a disabled feature returns `403`. **Amount Specification** Specify the withdrawal amount using one of: - `sourceAmount`: Amount in the source currency to withdraw - `targetAmount`: Amount to receive in the bank's currency The target currency is automatically determined by the withdrawal bank's configured currency. **Idempotency** Use the `idempotencyKey` to safely retry requests. Duplicate requests with the same key return the original transaction without creating a new one.

