---
title: "Create Payout"
method: POST
path: "/payouts"
tags: ["Payouts"]
---

# Create Payout

`POST /payouts`

Sends money from an account or user balance to a saved payout method for that owner.

## Headers

- `Idempotency-Key` string

## Request body

- union
  - object
    - `account_id` string, required — Account to pay out from, prefixed `biz_`. Provide exactly one of `account_id` or `user_id`.
    - `acknowledge_bank_warning` boolean — Set to `true` to continue when the destination bank could not confirm the payout method account holder's name, or `false` to have the payout refused in that case so the account holder can correct the name or link their bank first. Omitting the field skips the warning gate — a client that cannot show the warning keeps its pre-gate behavior.
    - `amount` number, float, required — The amount to pay out in the specified currency.
    - `currency` string — The currency to pay out. Balances are held per currency and the payout draws only from the balance in this currency, so match the currency the funds arrived in — for example `cad` for an account funded by CAD transfers. Defaults to `usd`.
    - `idempotency_key` string, nullable — A unique key that makes retries safe. Retrying with the same key returns the original payout instead of paying out twice. Also accepted as the `Idempotency-Key` header.
    - `notes` string, nullable — Free-form notes to attach to the payout, with a maximum of 255 characters. Omit or pass `null` for no notes.
    - `payout_method_id` string, required — The saved payout method to deliver to (a potk_ identifier).
    - `platform_covers_fees` boolean — Whether the parent platform covers the payout fee instead of the account being paid out. Omit to use the platform's configured fee coverage policy; pass `false` to opt out of it. `true` is only accepted for accounts that belong to a platform, and requires the platform's policy to cover this payout method's category or a caller authorized to manage the platform's child account fees.
    - `speed` 'standard' | 'instant' — How fast the funds should arrive. `instant` is only accepted when the account and payout method are eligible; otherwise the payout is rejected.
    - `user_id` string — User to pay out from, prefixed `user_`. Provide exactly one of `account_id` or `user_id`.
  - object
    - `account_id` string — Account to pay out from, prefixed `biz_`. Provide exactly one of `account_id` or `user_id`.
    - `acknowledge_bank_warning` boolean — Set to `true` to continue when the destination bank could not confirm the payout method account holder's name, or `false` to have the payout refused in that case so the account holder can correct the name or link their bank first. Omitting the field skips the warning gate — a client that cannot show the warning keeps its pre-gate behavior.
    - `amount` number, float, required — The amount to pay out in the specified currency.
    - `currency` string — The currency to pay out. Balances are held per currency and the payout draws only from the balance in this currency, so match the currency the funds arrived in — for example `cad` for an account funded by CAD transfers. Defaults to `usd`.
    - `idempotency_key` string, nullable — A unique key that makes retries safe. Retrying with the same key returns the original payout instead of paying out twice. Also accepted as the `Idempotency-Key` header.
    - `notes` string, nullable — Free-form notes to attach to the payout, with a maximum of 255 characters. Omit or pass `null` for no notes.
    - `payout_method_id` string, required — The saved payout method to deliver to (a potk_ identifier).
    - `platform_covers_fees` boolean — Whether the parent platform covers the payout fee instead of the account being paid out. Omit to use the platform's configured fee coverage policy; pass `false` to opt out of it. `true` is only accepted for accounts that belong to a platform, and requires the platform's policy to cover this payout method's category or a caller authorized to manage the platform's child account fees.
    - `speed` 'standard' | 'instant' — How fast the funds should arrive. `instant` is only accepted when the account and payout method are eligible; otherwise the payout is rejected.
    - `user_id` string, required — User to pay out from, prefixed `user_`. Provide exactly one of `account_id` or `user_id`.

## Response `201`

payout created

- object
  - `amount` number, float, required — The payout amount in whole currency units.
  - `created_at` string, date-time, required — When the payout was created.
  - `currency` string, required — Payout currency.
  - `estimated_arrival` string, date-time, nullable, required — Estimated time the funds become available in the destination account. Null until the payout settles.
  - `fee_amount` number, float, required — The fee charged for the payout, in the payout currency.
  - `id` string, required — Payout ID.
  - `notes` string, nullable, required — Free-form notes attached by the payout creator, or `null` when none were provided. Maximum 255 characters.
  - `object` 'payout', required
  - `payer_name` string, nullable, required — Name of the entity processing the payout. Null until the payout settles.
  - `payout_method` object, nullable, required — The saved payout method used. Requires payout:destination:read; null without it.
    - `nickname` string, nullable, required — Saved payout method nickname.
    - `supported_payout_method` object, nullable, required — Supported payout method display details.
      - `icon_url` string, nullable, required — Supported payout method icon URL.
      - `payer_name` string, nullable, required — Supported payout method display name.
  - `speed` 'standard' | 'instant', required — Payout delivery speed.
  - `status` 'requested' | 'awaiting_payment' | 'in_transit' | 'completed' | 'failed' | 'canceled' | 'denied', required — Current payout status, in the same vocabulary as GET /payouts.
  - `trace_code` string, nullable, required — ACH trace number the recipient's bank can use to locate this payout. Always `null` here — it is assigned when the payout is submitted to the bank, and appears on the payout in GET /payouts once it has been sent; payouts not sent over ACH never get one.

## Other responses

- `400` — Invalid Parameters
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found
- `409` — Conflict

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/a84d4905fdbb/schema)
