Withdraw to the bank
POST/v1/wallet/withdrawals
scope wallet.withdraw
Send amount and currency together or neither — an amount without a currency is ambiguous the moment a seller holds two, so it is refused rather than guessed. With neither, everything available is withdrawn per currency. status: funds_settling is NOT a failure: the money was released and is settling at Stripe. A payout_failed is almost always a bank account that cannot receive the balance currency. Returns 409 onboarding_required when the seller has not finished Stripe onboarding in a browser.
Request body#
| Field | Type | Required | Description |
|---|---|---|---|
amount | integer | optional | Minor units — 45000 is 450,00. Omit BOTH fields to withdraw the full available balance in every currency you hold. A positive integer; 0 or a negative is rejected with invalid_amount (400). |
currency | string | optional | Which balance to draw on. Required whenever you send amount — a seller trading cross-border holds several, and guessing would move the wrong money (currency_required, 400). Sent alone, without amount, it is ignored and the full sweep runs.Accepts Any currency you hold — see |
Example
{
"amount": 45000,
"currency": "RON"
}Response#
| Field | Type | Description |
|---|---|---|
data | object | What the withdrawal attempt actually did. |
data. | string | The outcome, and it is deliberately more than success or failure. payout_created means money is on its way to your bank. funds_settling and released_settling are NOT failures — the money is released and moving, it just has not reached the bank yet, because Stripe holds incoming funds for a period before they can be paid out. no_available_funds means there was nothing to send. payout_failed means Stripe refused, and is the only one to treat as an error.Accepts |
data. | array | The payouts created, one per currency. Empty when nothing could be sent yet. |
data. | string|null | The payout id. Quote it to support, and match it against GET /v1/wallet/withdrawals. |
data. | integer|null | Minor units. |
data. | string|null | Its currency. |
data. | string|null | Where the payout is at the bank. It is normal for a fresh payout to sit pending for a day or two. |
data. | integer | How many per-order lots were released by this call. Non-zero with no payout means the money moved into your account and will leave on the next attempt. |
data. | object | Money already released but still settling, as {currency: amount} in minor units. Empty when there is none. This is what explains a funds_settling status: try again once it clears rather than treating it as a failure. |
Example
{
"data": {
"status": "payout_created",
"withdrawals": [
{
"id": "po_1QxyzABC",
"amount": 45000,
"currency": "RON",
"status": "pending"
}
],
"transferred_lots": 3,
"settling": []
}
}