Payouts

Create Saved Payout Method

Changed on

Saves a bank account, wallet, or crypto address an account or user can pay out to, from a method listed by GET /payouts/supported_methods. Sensitive details are vaulted in transit and never stored raw.

post/payouts/methods

Request

  • Base URL: https://api.whop.com/api/v1
  • URL: https://api.whop.com/api/v1/payouts/methods
  • Auth: HTTP bearer

Headers

Idempotency-Keystring
Example:d9105228-4a08-46b1-8b91-42fed586d383

A unique key that makes this request safe to retry. See Idempotent requests.

Request body

account_idstring

The account to add the payout method for, prefixed biz_. Provide this or user_id.

destination_currencystring

Currency the supported payout method delivers payouts in.

fieldsobject

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_defaultboolean

Whether to make this the account's default payout method.

nicknamestring

A label for the payout method, unique per destination.

paypal_link_tokenstring

The token your return_url received after a Log in with PayPal session started with POST /payouts/paypal_link_sessions. Use it for a PayPal supported payout method instead of fields. Sending fields or plaid_public_token alongside it is rejected, and nickname is ignored because Whop names the method after the PayPal email. The PayPal holder's name must match the name on the account's payout setup. An account PayPal reports as unverified, or with an unconfirmed email, is saved and flagged on the method's log rather than refused. Single use; expires 15 minutes after the login.

supported_payout_method_idstring required

The supported payout method to save (a podst_ identifier from a previous listing).

user_idstring

The user to add the payout method for, prefixed user_. Provide this or account_id.

Example request

{
  "account_id": "biz_xxxxxxxxxxxxxx",
  "destination_currency": "usd",
  "fields": {
    "fld_bank_account_number": "8825310472",
    "fld_bank_account_type": "Checking"
  },
  "nickname": "Ops checking",
  "paypal_link_token": "pplt_mYWzcqskZuBf2-JTpooLjo5hl5HdE2P68o90dgJjWGQ",
  "recipient": {
    "country": "us",
    "email": "marcus@shinetime.example",
    "first_name": "Jane",
    "last_name": "Doe"
  },
  "supported_payout_method_id": "podst_xxxxxxxxxxxxxx",
  "user_id": "user_xxxxxxxxxxxxxx"
}

Response

payout method created

account_referencestring 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_atstring date-time required
destination_currencystring required
estimated_arrivalobject nullable required

Null on create. List payout methods to retrieve arrival estimates.

fee_structureobject nullable required

Null on create. List payout methods to retrieve the configured fee terms.

idstring required

Payout method ID, usable as payout_method_id on POST /payouts.

institution_namestring nullable required
is_cloneboolean

Whether this method is a copy of one saved on another of the payer's accounts.

is_defaultboolean required
last_paid_out_atstring 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_plaidboolean

Whether the payer added this method by signing in to their bank rather than typing account details.

needs_plaid_reconnectboolean

Whether the bank sign-in behind this method has expired and must be redone before it counts as linked.

nicknamestring nullable required

User-defined label for the payout method.

object'payout_method' required
payer_namestring nullable required
quoteobject nullable required

Always null on create.

status'created' | 'active' | 'broken' required

Always created on create — no payout has used the method yet.

status_reasonstring nullable required

Always null on create.

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.

Example response

{
  "account_reference": "••••0472",
  "bank_verification_state": "checking",
  "created_at": "2026-01-01T12:00:00.000Z",
  "destination_currency": "usd",
  "id": "potk_xxxxxxxxxxxxxx",
  "institution_name": "Frost Bank",
  "nickname": "Ops checking",
  "object": "payout_method",
  "payer_name": "ACH Bank Deposit",
  "recipient": {
    "country": "USA",
    "email": "jane.doe@example.com",
    "first_name": "Jane",
    "last_name": "Doe"
  },
  "status": "created",
  "supported_payout_method": {
    "country_code": "USA",
    "delivery_type": "bank_deposit",
    "icon_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/ach-bank-deposit-icon",
    "name": "ACH Bank Deposit",
    "supports_plaid": true,
    "supports_standard_delivery": true
  },
  "unavailable_reason": "destination_retired"
}

Changes

    • breaking

      the request property / became not nullable

    • breaking

      the request property / became required

    • breaking

      removed the required property / from the response with the status

    • info

      added the required property / to the response with the status

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status