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

# Create Saved Payout Method

`POST /payouts/methods`

Saves a new place an account or user can pay out to. Sensitive details are vaulted in transit and never stored raw.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `account_id` string — The account to add the payout method for, prefixed `biz_`. Provide this or `user_id`.
  - `destination_currency` string — Currency the supported payout method delivers payouts in.
  - `fields` object — The supported payout method's required field values, keyed by field id — list them with `GET /payouts/supported_methods?supported_payout_method_id=...`. Field ids are stable `fld_` identifiers you may hardcode; they never change for a given field. A Basis Theory token id may be passed in place of a raw value. For a U.S. bank routing-number field, a raw nine-digit value must also pass the ABA checksum. A validation failure returns the method's full required_fields schema alongside the error. Required whenever the account details are supplied directly.
  - `is_default` boolean — Whether to make this the account's default payout method.
  - `nickname` string — A label for the payout method, unique per destination.
  - `supported_payout_method_id` string, required — The supported payout method to save (a podst_ identifier from a previous listing).
  - `user_id` string — The user to add the payout method for, prefixed `user_`. Provide this or `account_id`.

## Response `201`

payout method created

- object
  - `account_reference` string, nullable, required — Masked identifier for the destination.
  - `bank_verification_state` 'checking' | 'verified' | 'no_data' | 'warning' | 'broken' | 'null', nullable — Lifecycle trust state: `checking` (verification still running), `verified` (bank confirmed ownership or a payout already completed to it), `no_data` (verification unavailable or bank returned no ownership data), `warning` (bank could not confirm the destination's owner), `broken` (payouts failed with a permanent account error), `null` (never checked).
  - `created_at` string, date-time, required
  - `destination_currency` string, required
  - `estimated_arrival` object, nullable, required — Null on create. List payout methods to retrieve arrival estimates.
  - `fee_structure` object, nullable, required — Null on create. List payout methods to retrieve the configured fee terms.
  - `id` string, required — Payout method ID, usable as payout_method_id on POST /payouts.
  - `institution_name` string, nullable, required
  - `is_clone` boolean — Whether this method is a copy of one saved on another of the payer's accounts.
  - `is_default` boolean, required
  - `last_paid_out_at` string, date-time, nullable, required — When the most recent completed payout was delivered to this method, as an ISO 8601 timestamp. `null` when nothing has been paid out to it yet.
  - `linked_via_plaid` boolean — Whether the payer added this method by signing in to their bank rather than typing account details.
  - `needs_plaid_reconnect` boolean — Whether the bank sign-in behind this method has expired and must be redone before it counts as linked.
  - `nickname` string, nullable, required — User-defined label for the payout method.
  - `object` 'payout_method', required
  - `payer_name` string, nullable, required
  - `quote` object, nullable, required — Always null on create.
  - `status` 'created' | 'active' | 'broken', required — Always `created` on create — no payout has used the method yet.
  - `status_reason` string, nullable, required — Always `null` on create.
  - `supported_payout_method` object, nullable, required
    - `country_code` string, nullable — ISO 3166-1 alpha-3 country the destination pays out to.
    - `delivery_type` 'cash_pickup' | 'bank_deposit' | 'home_delivery' | 'mobile_wallet' | 'card' | 'check' | 'bill' | 'cryptocurrency' | 'unknown', required — How funds are delivered.
    - `icon_url` string, nullable, required
    - `name` string, nullable, required
    - `supports_instant_delivery` boolean, required
    - `supports_plaid` boolean — Whether the payer can link this method by signing in to their bank instead of typing account details.
    - `supports_standard_delivery` boolean, required
  - `unavailable_reason` 'destination_retired' | 'null', nullable, required — Why this method is unavailable: `destination_retired` means the payout provider stopped offering the destination. Whop may automatically remap an eligible method that was not linked through Plaid to a compatible replacement; otherwise, the account owner must re-add it. `null` means no unavailability reason is known.

## Other responses

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

## Changes

- **2026-08-25** `621705ee8f4a` — 2 warning, 2 info
  - added the new `card` enum value to the `supported_payout_method/delivery_type` response property for the response status `201`
  - added the new `check` enum value to the `supported_payout_method/delivery_type` response property for the response status `201`
  - removed the `masspay_card` enum value from the `supported_payout_method/delivery_type` response property for the response status `201`
  - removed the `paper_check` enum value from the `supported_payout_method/delivery_type` response property for the response status `201`
- **2026-08-22** `f1cf47ad0ec2` — 2 info
  - added the required property `last_paid_out_at` to the response with the `201` status
  - added the required property `status_reason` to the response with the `201` status
- **2026-08-12** `ae20b30817de` — 1 info
  - added the non-success response with the status `409`
- **2026-08-12** `6fb1c04bf255` — 5 info
  - added the optional property `is_clone` to the response with the `201` status
  - added the optional property `linked_via_plaid` to the response with the `201` status
  - added the optional property `needs_plaid_reconnect` to the response with the `201` status
  - added the optional property `supported_payout_method/country_code` to the response with the `201` status
  - …1 more
- **2026-08-09** `a8a43db4255f` — 1 info
  - added the required property `unavailable_reason` to the response with the `201` status

[Full history](https://skmtc.dev/whop/apis/whop-api/changes/payouts/methods/post.md)

---

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