Payouts

Retrieve Payout

Changed on

Retrieves a payout by its wdrl_ ID, or by the cofr_ conversion request ID a stablecoin payout carries as payout_request_id. Authentication is optional: anyone with the ID can view tracking details, including notes, trace code, exchange rate, and payout request ID, while accounting fields require payout:withdrawal:read on the account or user that owns the payout. A supplied invalid credential returns 401.

get/payouts/{id}

Request

  • Base URL: https://api.whop.com/api/v1
  • URL: https://api.whop.com/api/v1/payouts/{id}
  • Auth: one of:
    • none
    • HTTP bearer

Query parameters

account_idstring

Optional owning account ID, prefixed biz_. The payout ID identifies its ledger. If supplied, this must match the owner and cannot be combined with user_id.

user_idstring

Optional owning user ID, prefixed user_. The payout ID identifies its ledger. If supplied, this must match the owner and cannot be combined with account_id.

Response

payout found

amountstring decimal

The payout amount in whole currency units, as a decimal string. Only returned to callers with payout:withdrawal:read on the owning ledger.

created_atstring date-time required

When the payout was created.

currencystring required

Payout currency.

delayedboolean

Whether an in-transit withdrawal is past its settlement window.

destination_amountstring decimal nullable required

The amount delivered in the destination currency, as a decimal string. Assigned when the payout is processed, so it is null before then and on payouts without a recorded conversion.

destination_currencystring nullable required

Currency the funds are delivered in, taken from the payout method when the payout is created. On a stablecoin payout it follows the settlement payout minted alongside it — the GET /payouts row carrying this payout's id as payout_request_id — and is null only when no settlement payout exists.

estimated_arrivalstring date-time nullable required

Estimated time the funds become available in the destination account.

estimated_arrival_endstring date-time nullable

End of the expected bank settlement window.

exchange_ratenumber float nullable required

Exchange rate from the payout currency to the destination currency. Assigned when the payout is processed, so it is null before then and on payouts without a recorded rate.

fee_amountstring decimal

The fee charged for the payout, in the payout currency, as a decimal string. Only returned to callers with payout:withdrawal:read on the owning ledger.

fee_paid_by'self' | 'platform'

Who bore the payout fee: the account itself, or its parent platform. Only returned to callers with payout:withdrawal:read on the owning ledger.

idstring required

Payout ID, prefixed wdrl_ for a payout returned by GET /payouts or cofr_ for a payout request returned by POST /payouts.

markup_feestring decimal

Whop's markup on the provider fee, in the payout currency, as a decimal string. "0.0" when none applies. Only returned to callers with payout:withdrawal:read on the owning ledger.

metadataobject

Key-value data attached at creation and echoed on every read. At most 50 keys, key names up to 40 characters, string values up to 500 characters. Only returned to callers with payout:withdrawal:read on the owning ledger.

net_amountstring decimal required

The planned net for the destination, in the payout currency: amount minus fee_amount minus markup_fee when fee_paid_by is self; equal to amount when the platform covers the fees. A payout that ends denied, canceled, or failed delivered nothing — most keep the planned figure and failure says where the funds are, but a canceled stablecoin payout can report the settled outcome instead: amount carries what stayed in the balance, fees are zero because none were charged, and net_amount is 0 because nothing was delivered.

notesstring nullable required

Free-form notes attached by the payout creator, or null when none were provided. Maximum 255 characters.

object'payout' required
payer_namestring nullable required

Name of the entity processing the payout.

payout_request_idstring nullable required

Payout request ID, prefixed cofr_, returned by POST /payouts. For a request retrieved by its own cofr_ ID, this equals id. Returns null for payouts not created by POST /payouts.

recipient_namestring nullable

The recipient's first name and last initial, or null when no recipient name is available.

sender_namestring nullable

The sending business's display name, or a personal sender's first name and last initial.

source'api' | 'dashboard' | 'automatic' | 'null' nullable

How the payout was created. automatic means a scheduled auto-payout; null on payouts created before source tracking or through internal tooling. Only returned to callers with payout:withdrawal:read on the owning ledger.

speed'standard' | 'instant' required

Payout delivery speed.

statement_descriptorstring nullable

Text that appears on the recipient's bank statement, or null if no descriptor was set. When set, 5-22 alphanumeric characters (A-Z, a-z, 0-9). Only returned to callers with payout:withdrawal:read on the owning ledger.

status'requested' | 'in_review' | 'processing' | 'completed' | 'reversed' | 'canceled' | 'failed' | 'denied' required

Current payout status.

status_detailstring required

The finest machine phase under status — for example awaiting_provider_acceptance vs in_transit under processing, or the stablecoin conversion phase under requested. Informational vocabulary: values can be added without a version bump; status is the versioned contract.

trace_codestring nullable required

ACH trace number the recipient's bank can use to locate this payout. Assigned when the payout is submitted to the bank, so it is null before then and on payouts not sent over ACH.

Example response

{
  "amount": "500.0",
  "created_at": "2026-07-29T18:22:00.000Z",
  "currency": "usd",
  "destination_amount": "461.7",
  "destination_currency": "eur",
  "estimated_arrival": "2026-08-03T00:00:00.000Z",
  "exchange_rate": 0.9234,
  "failure": {
    "code": "beneficiary_name_mismatch"
  },
  "fee_amount": "0.25",
  "fee_paid_by": "self",
  "id": "wdrl_xxxxxxxxxxxxx",
  "markup_fee": "0.0",
  "metadata": {
    "batch_id": "2026-08-18"
  },
  "net_amount": "49.75",
  "notes": "Detailing supplies restock",
  "object": "payout",
  "payer_name": "ACH Bank Deposit",
  "payout_method": {
    "nickname": "Business checking",
    "supported_payout_method": {
      "delivery_type": "bank_deposit",
      "icon_url": "https://cdn.whop.com/payouts/ach.png",
      "payer_name": "ACH Bank Deposit"
    }
  },
  "payout_request_id": "cofr_xxxxxxxxxxxxx",
  "recipient_name": "Rishabh J.",
  "sender_name": "Whop Blueprints",
  "source": "api",
  "speed": "standard",
  "statement_descriptor": "MYCOMPANY",
  "status": "in_review",
  "status_detail": "awaiting_provider_acceptance",
  "timeline": [
    {
      "status": "requested",
      "status_detail": "security_review",
      "timestamp": "2026-01-01T12:00:00.000Z"
    }
  ],
  "trace_code": "021000021234567"
}

Changes

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • info

      removed the non-success response with the status

    • info

      removed the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status