---
title: "Withdrawal Created"
method: POST
path: "withdrawal.created"
tags: ["Payouts"]
---

# Withdrawal Created

`POST withdrawal.created` (webhook)

Sent when a withdrawal is created

Required permissions:
 - `payout:withdrawal:read`
 - `payout:destination:read`
 - `webhook_receive:withdrawals`

## Headers

- `webhook-id` string, required — A unique identifier for this webhook request
- `webhook-signature` string, required — The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required — The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `api_version` 'v1', required — The API version for this webhook
  - `api_version_date` string, nullable, required — The dated API version (Api-Version-Date) the payload is serialized to
  - `company_id` string, nullable — The account ID that this webhook event is associated with
  - `data` Withdrawal, required — A withdrawal represents a request to transfer funds from a ledger account to an external payout method.
    - `amount` number, required — The withdrawal amount as a decimal number in the specified currency (e.g., 100.00 for $100.00 USD).
    - `created_at` string, date-time, required — The datetime the withdrawal was created.
    - `currency` 'usd' | 'sgd' | 'inr' | 'aud' | 'brl' | 'cad' | 'dkk' | 'eur' | 'nok' | 'gbp' | 'sek' | 'chf' | 'hkd' | 'huf' | 'jpy' | 'mxn' | 'myr' | 'pln' | 'czk' | 'nzd' | 'aed' | 'eth' | 'ape' | 'cop' | 'ron' | 'thb' | 'bgn' | 'idr' | 'dop' | 'php' | 'try' | 'krw' | 'twd' | 'vnd' | 'pkr' | 'clp' | 'uyu' | 'ars' | 'zar' | 'dzd' | 'tnd' | 'mad' | 'kes' | 'kwd' | 'jod' | 'all' | 'xcd' | 'amd' | 'bsd' | 'bhd' | 'bob' | 'bam' | 'khr' | 'crc' | 'xof' | 'egp' | 'etb' | 'gmd' | 'ghs' | 'gtq' | 'gyd' | 'ils' | 'jmd' | 'mop' | 'mga' | 'mur' | 'mdl' | 'mnt' | 'nad' | 'ngn' | 'mkd' | 'omr' | 'pyg' | 'pen' | 'qar' | 'rwf' | 'sar' | 'rsd' | 'lkr' | 'tzs' | 'ttd' | 'uzs' | 'rub' | 'btc' | 'cny' | 'usdt' | 'kzt' | 'awg' | 'whop_usd' | 'xau', required — The available currencies on the platform
    - `error_code` 'account_closed' | 'account_does_not_exist' | 'account_information_invalid' | 'account_number_invalid_region' | 'account_frozen' | 'account_lookup_failed' | 'account_not_found' | 'amount_out_of_bounds' | 'attributes_not_validated' | 'b2b_payments_prohibited' | 'bank_statement_required' | 'compliance_review' | 'currency_not_supported' | 'deposit_canceled' | 'deposit_failed' | 'deposit_rejected' | 'destination_unavailable' | 'exceeded_account_limit' | 'expired_quote' | 'generic_payout_error' | 'junk_failure_reason' | 'technical_problem' | 'provider_temporarily_unavailable' | 'identification_number_invalid' | 'invalid_account_number' | 'invalid_bank_code' | 'invalid_beneficiary' | 'invalid_mailing_address' | 'invalid_branch_number' | 'invalid_branch_code' | 'invalid_phone_number' | 'invalid_routing_number' | 'invalid_swift_code' | 'invalid_company_details' | 'manual_cancelation' | 'misc_error' | 'missing_city_and_country' | 'missing_phone_number' | 'missing_remittance_info' | 'payee_name_invalid' | 'beneficiary_name_mismatch' | 'receiving_account_locked' | 'rejected_by_compliance' | 'rtp_not_supported' | 'non_transaction_account' | 'source_token_insufficient_funds' | 'ssn_invalid' | 'wallet_screenshot_required' | 'unsupported_region' | 'payout_provider_timeout', required — The different error codes a payout can be in.
    - `error_message` string, nullable, required — A human-readable message describing why the payout failed. Null if no error occurred.
    - `estimated_availability` string, date-time, nullable, required — The estimated time at which the funds become available in the destination account. Null if no estimate is available. As a Unix timestamp.
    - `fee_amount` number, required — The fee charged for processing this withdrawal, in the same currency as the withdrawal amount.
    - `fee_type` 'exclusive' | 'inclusive', required — The different fee types for a withdrawal.
    - `id` string, required — The unique identifier for the withdrawal.
    - `ledger_account` object, required — The ledger account from which the withdrawal funds are sourced.
      - `company_id` string, nullable, required — Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.
      - `id` string, required — The unique identifier for the ledger account.
    - `markup_fee` number, required — An additional markup fee charged for the withdrawal, in the same currency as the withdrawal amount. Only applies to platform accounts using Whop Rails.
    - `payout_request_id` string, nullable, required — The id of the payout request (returned by POST /payouts) that this withdrawal settles. Null unless the withdrawal originated from a stablecoin payout.
    - `payout_token` object, nullable, required — The saved payout destination used for this withdrawal (e.g., a bank account or PayPal address). Null if no payout token was used.
      - `created_at` string, date-time, required — The datetime the payout token was created.
      - `destination_currency_code` string, required — The three-letter ISO currency code that payouts are delivered in for this destination.
      - `id` string, required — The unique identifier for the payout token.
      - `nickname` string, nullable, required — A user-defined label to help identify this payout destination. Not sent to the provider. Null if no nickname has been set.
      - `payer_name` string, nullable, required — The legal name of the account holder receiving payouts. Null if not provided.
    - `speed` 'standard' | 'instant', required — The different speeds of withdrawals
    - `status` 'requested' | 'awaiting_payment' | 'in_transit' | 'completed' | 'failed' | 'canceled' | 'denied', required — The status of a withdrawal request
    - `trace_code` string, nullable, required — The ACH trace number for tracking the payout through the banking network. Null if not available or not an ACH transaction.
  - `id` string, required — A unique ID for every single webhook request
  - `timestamp` string, date-time, required — The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'withdrawal.created', required — The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[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/versions/db0883548bc5/schema)
