> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create withdrawal

> Creates a withdrawal request for a ledger account

Required permissions:
 - `payout:withdraw_funds`
 - `payout:destination:read`



## OpenAPI

````yaml https://app.stainless.com/api/spec/documented/whopsdk/openapi.documented.yml post /withdrawals
openapi: 3.1.0
info:
  title: Whop API
  description: >-
    The Whop REST API. Please see
    https://docs.whop.com/developer/api/getting-started for more details.
  termsOfService: https://whop.com/tos-developer-api/
  version: 1.0.0
servers:
  - url: https://api.whop.com/api/v1
    description: Production Whop API
security: []
tags:
  - name: Products
    description: Products
  - name: Plans
    description: Plans
  - name: Payments
    description: Payments
  - name: Refunds
    description: Refunds
  - name: Disputes
    description: Disputes
  - name: Dispute alerts
    description: Dispute alerts
  - name: Resolution center cases
    description: Resolution center cases
  - name: Checkout configurations
    description: Checkout configurations
  - name: Setup intents
    description: Setup intents
  - name: Payment methods
    description: Payment methods
  - name: Invoices
    description: Invoices
  - name: Promo codes
    description: Promo codes
  - name: Card transactions
    description: Card transactions
  - name: Ledger accounts
    description: Ledger accounts
  - name: Transfers
    description: Transfers
  - name: Withdrawals
    description: Withdrawals
  - name: Payout methods
    description: Payout methods
  - name: Verifications
    description: Verifications
  - name: Payout accounts
    description: Payout accounts
  - name: Topups
    description: Topups
  - name: Users
    description: Users
  - name: Companies
    description: Companies
  - name: Authorized users
    description: Authorized users
  - name: Fee markups
    description: Fee markups
  - name: Members
    description: Members
  - name: Memberships
    description: Memberships
  - name: Leads
    description: Leads
  - name: Entries
    description: Entries
  - name: Shipments
    description: Shipments
  - name: Reviews
    description: Reviews
  - name: Company token transactions
    description: Company token transactions
  - name: Affiliates
    description: Affiliates
  - name: Experiences
    description: Experiences
  - name: Forums
    description: Forums
  - name: Forum posts
    description: Forum posts
  - name: Chat channels
    description: Chat channels
  - name: Support channels
    description: Support channels
  - name: Messages
    description: Messages
  - name: Reactions
    description: Reactions
  - name: Dm members
    description: Dm members
  - name: Dm channels
    description: Dm channels
  - name: Notifications
    description: Notifications
  - name: Courses
    description: Courses
  - name: Course chapters
    description: Course chapters
  - name: Course lessons
    description: Course lessons
  - name: Course students
    description: Course students
  - name: Course lesson interactions
    description: Course lesson interactions
  - name: Apps
    description: Apps
  - name: Webhooks
    description: Webhooks
  - name: App builds
    description: App builds
  - name: Access tokens
    description: Access tokens
  - name: Account links
    description: Account links
  - name: Files
    description: Files
  - name: Ai chats
    description: Ai chats
  - name: Bounties
    description: Bounties
  - name: Stats
    description: Stats
  - name: Ad campaigns
    description: Ad campaigns
  - name: Ad groups
    description: Ad groups
  - name: Ads
    description: Ads
  - name: Conversions
    description: Conversions
paths:
  /withdrawals:
    post:
      tags:
        - Withdrawals
      summary: Create withdrawal
      description: |-
        Creates a withdrawal request for a ledger account

        Required permissions:
         - `payout:withdraw_funds`
         - `payout:destination:read`
      operationId: createWithdrawal
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: number
                  description: The amount to withdraw in the specified currency
                  example: 6.9
                company_id:
                  type: string
                  description: The ID of the company to withdraw from.
                  example: biz_xxxxxxxxxxxxxx
                currency:
                  $ref: '#/components/schemas/Currencies'
                  description: The currency that is being withdrawn.
                payout_method_id:
                  type:
                    - string
                    - 'null'
                  description: The ID of the payout method to use for the withdrawal.
                platform_covers_fees:
                  type:
                    - boolean
                    - 'null'
                  description: >-
                    Whether the platform covers the payout fees instead of the
                    connected account.
                statement_descriptor:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Custom statement descriptor for the withdrawal. Must be
                    between 5 and 22 characters and contain only alphanumeric
                    characters.
              required:
                - amount
                - company_id
                - currency
              description: Parameters for CreateLedgerWithdrawal
              title: CreateLedgerWithdrawalInputAndCompanyId
      responses:
        '200':
          description: A successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Withdrawal'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: invalid_request_error
                  code: parameter_missing
                  message: 'Missing required parameter: amount.'
                  param: amount
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: unauthorized
                  message: Invalid or missing API key
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: forbidden
                  message: You do not have permission to access this resource
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: not_found
                  message: Resource not found
        '422':
          description: Verification required
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error: null
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                      code:
                        type:
                          - string
                          - 'null'
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                      param:
                        type:
                          - string
                          - 'null'
                        description: The parameter that caused the error, if applicable
                    required:
                      - type
                      - message
                required:
                  - error
              example:
                error:
                  type: internal_server_error
                  message: An unexpected error occurred
      security:
        - bearerAuth:
            - payout:withdraw_funds
            - payout:destination:read
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import Whop from '@whop/sdk';

            const client = new Whop({
              apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
            });

            const withdrawal = await client.withdrawals.create({
              amount: 6.9,
              company_id: 'biz_xxxxxxxxxxxxxx',
              currency: 'usd',
            });

            console.log(withdrawal.id);
        - lang: Python
          source: |-
            import os
            from whop_sdk import Whop

            client = Whop(
                api_key=os.environ.get("WHOP_API_KEY"),  # This is the default and can be omitted
            )
            withdrawal = client.withdrawals.create(
                amount=6.9,
                company_id="biz_xxxxxxxxxxxxxx",
                currency="usd",
            )
            print(withdrawal.id)
        - lang: Ruby
          source: >-
            require "whop_sdk"


            whop = WhopSDK::Client.new(api_key: "My API Key")


            withdrawal = whop.withdrawals.create(amount: 6.9, company_id:
            "biz_xxxxxxxxxxxxxx", currency: :usd)


            puts(withdrawal)
components:
  schemas:
    Currencies:
      type: string
      enum:
        - 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
      description: The available currencies on the platform
    Withdrawal:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the withdrawal.
          example: wdrl_xxxxxxxxxxxxx
        status:
          $ref: '#/components/schemas/WithdrawalStatus'
          description: >-
            The computed lifecycle status of the withdrawal, accounting for the
            state of associated payouts (e.g., 'requested', 'in_transit',
            'completed', 'failed').
        amount:
          type: number
          description: >-
            The withdrawal amount as a decimal number in the specified currency
            (e.g., 100.00 for $100.00 USD).
          example: 6.9
        currency:
          $ref: '#/components/schemas/Currencies'
          description: >-
            The three-letter ISO currency code for this withdrawal (e.g., 'usd',
            'eur').
        fee_amount:
          type: number
          description: >-
            The fee charged for processing this withdrawal, in the same currency
            as the withdrawal amount.
          example: 6.9
        fee_type:
          oneOf:
            - $ref: '#/components/schemas/WithdrawalFeeTypes'
            - type: 'null'
          description: >-
            How the fee was applied to the withdrawal. 'exclusive' means the fee
            was added on top (user receives the full requested amount).
            'inclusive' means the fee was deducted from the withdrawal (user
            receives less than requested). Null if no fee was charged.
        speed:
          $ref: '#/components/schemas/WithdrawalSpeeds'
          description: >-
            The processing speed selected for this withdrawal ('standard' or
            'instant').
        created_at:
          type: string
          format: date-time
          description: The datetime the withdrawal was created.
          example: '2023-12-01T05:00:00.401Z'
        markup_fee:
          type: number
          description: >-
            An additional markup fee charged for the withdrawal, in the same
            currency as the withdrawal amount. Only applies to platform accounts
            using Whop Rails.
          example: 6.9
        ledger_account:
          type: object
          properties:
            id:
              type: string
              description: The unique identifier for the ledger account.
              example: ldgr_xxxxxxxxxxxxx
            company_id:
              type:
                - string
                - 'null'
              description: >-
                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.
          required:
            - id
            - company_id
          description: The ledger account from which the withdrawal funds are sourced.
        payout_token:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              description: The unique identifier for the payout token.
              example: potk_xxxxxxxxxxxxx
            payer_name:
              type:
                - string
                - 'null'
              description: >-
                The legal name of the account holder receiving payouts. Null if
                not provided.
              example: Acme Corp LLC
            nickname:
              type:
                - string
                - 'null'
              description: >-
                A user-defined label to help identify this payout destination.
                Not sent to the provider. Null if no nickname has been set.
              example: My Business Account
            destination_currency_code:
              type: string
              description: >-
                The three-letter ISO currency code that payouts are delivered in
                for this destination.
              example: USD
            created_at:
              type: string
              format: date-time
              description: The datetime the payout token was created.
              example: '2023-12-01T05:00:00.401Z'
          required:
            - id
            - payer_name
            - nickname
            - destination_currency_code
            - created_at
          description: >-
            The saved payout destination used for this withdrawal (e.g., a bank
            account or PayPal address). Null if no payout token was used.
        error_code:
          oneOf:
            - $ref: '#/components/schemas/PayoutErrorCodes'
            - type: 'null'
          description: >-
            A machine-readable error code describing why the payout failed. Null
            if no error occurred.
        error_message:
          type:
            - string
            - 'null'
          description: >-
            A human-readable message describing why the payout failed. Null if
            no error occurred.
          example: Destination bank account is invalid.
        estimated_availability:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The estimated time at which the funds become available in the
            destination account. Null if no estimate is available. As a Unix
            timestamp.
          example: '2023-12-01T05:00:00.401Z'
        trace_code:
          type:
            - string
            - 'null'
          description: >-
            The ACH trace number for tracking the payout through the banking
            network. Null if not available or not an ACH transaction.
          example: '021000021234567'
      required:
        - id
        - status
        - amount
        - currency
        - fee_amount
        - fee_type
        - speed
        - created_at
        - markup_fee
        - ledger_account
        - payout_token
        - error_code
        - error_message
        - estimated_availability
        - trace_code
      description: >-
        A withdrawal represents a request to transfer funds from a ledger
        account to an external payout method.
    WithdrawalStatus:
      type: string
      enum:
        - requested
        - awaiting_payment
        - in_transit
        - completed
        - failed
        - canceled
        - denied
      description: The status of a withdrawal request
    WithdrawalFeeTypes:
      type: string
      enum:
        - exclusive
        - inclusive
      description: The different fee types for a withdrawal.
    WithdrawalSpeeds:
      type: string
      enum:
        - standard
        - instant
      description: The different speeds of withdrawals
    PayoutErrorCodes:
      type: string
      enum:
        - 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
        - technical_problem
        - 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
        - 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
      description: The different error codes a payout can be in.
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        A company API key, company scoped JWT, app API key, or user OAuth token.
        You must prepend your key/token with the word 'Bearer', which will look
        like `Bearer ***************************`
      scheme: bearer
      bearerFormat: auth-scheme

````