> ## 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 payment

> Charge an existing member off-session using one of their stored payment methods. You can provide an existing plan, or create a new one in-line. This endpoint will respond with a payment object immediately, but the payment is processed asynchronously in the background. Use webhooks to be notified when the payment succeeds or fails.

Required permissions:
 - `payment:charge`
 - `plan:create`
 - `access_pass:create`
 - `access_pass:update`
 - `plan:basic:read`
 - `access_pass:basic:read`
 - `member:email:read`
 - `member:basic:read`
 - `member:phone:read`
 - `promo_code:basic:read`
 - `shipment:basic:read`
 - `payment:dispute:read`
 - `payment:resolution_center_case:read`



## OpenAPI

````yaml /openapi/api-v1-stable.json post /payments
openapi: 3.1.0
info:
  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/
  title: Whop API
  version: 1.0.0
  x-api-version-date: '2026-08-21'
servers:
  - description: Production Whop API
    url: https://api.whop.com/api/v1
  - description: Sandbox Whop API
    url: https://sandbox-api.whop.com/api/v1
security: []
tags:
  - description: Products
    name: Products
  - description: Payments
    name: Payments
  - description: Refunds
    name: Refunds
  - description: Disputes
    name: Disputes
  - description: Dispute alerts
    name: Dispute alerts
  - description: Resolution center cases
    name: Resolution center cases
  - description: Checkout configurations
    name: Checkout configurations
  - description: Setup intents
    name: Setup intents
  - description: Payment methods
    name: Payment methods
  - description: Invoices
    name: Invoices
  - description: Promo codes
    name: Promo codes
  - description: Card transactions
    name: Card transactions
  - description: Ledger accounts
    name: Ledger accounts
  - description: Withdrawals
    name: Withdrawals
  - description: Payout methods
    name: Payout methods
  - description: Verifications
    name: Verifications
  - description: Identity profiles
    name: Identity profiles
  - description: Payout accounts
    name: Payout accounts
  - description: Topups
    name: Topups
  - description: Companies
    name: Companies
  - description: Authorized users
    name: Authorized users
  - description: Fee markups
    name: Fee markups
  - description: Members
    name: Members
  - description: Memberships
    name: Memberships
  - description: Leads
    name: Leads
  - description: Entries
    name: Entries
  - description: Shipments
    name: Shipments
  - description: Reviews
    name: Reviews
  - description: Company token transactions
    name: Company token transactions
  - description: Affiliates
    name: Affiliates
  - description: Experiences
    name: Experiences
  - description: Forums
    name: Forums
  - description: Forum posts
    name: Forum posts
  - description: Chat channels
    name: Chat channels
  - description: Support channels
    name: Support channels
  - description: Messages
    name: Messages
  - description: Reactions
    name: Reactions
  - description: Dm members
    name: Dm members
  - description: Dm channels
    name: Dm channels
  - description: Notifications
    name: Notifications
  - description: Courses
    name: Courses
  - description: Course chapters
    name: Course chapters
  - description: Course lessons
    name: Course lessons
  - description: Course students
    name: Course students
  - description: Course lesson interactions
    name: Course lesson interactions
  - description: Apps
    name: Apps
  - description: Webhooks
    name: Webhooks
  - description: App builds
    name: App builds
  - description: Access tokens
    name: Access tokens
  - description: Account links
    name: Account links
  - description: Files
    name: Files
  - description: Ai chats
    name: Ai chats
  - description: Bounties
    name: Bounties
  - description: Stats
    name: Stats
  - description: Conversions
    name: Conversions
  - description: Ad reports
    name: Ad reports
paths:
  /payments:
    post:
      tags:
        - Payments
      summary: Create payment
      description: >-
        Charge an existing member off-session using one of their stored payment
        methods. You can provide an existing plan, or create a new one in-line.
        This endpoint will respond with a payment object immediately, but the
        payment is processed asynchronously in the background. Use webhooks to
        be notified when the payment succeeds or fails.


        Required permissions:
         - `payment:charge`
         - `plan:create`
         - `access_pass:create`
         - `access_pass:update`
         - `plan:basic:read`
         - `access_pass:basic:read`
         - `member:email:read`
         - `member:basic:read`
         - `member:phone:read`
         - `promo_code:basic:read`
         - `shipment:basic:read`
         - `payment:dispute:read`
         - `payment:resolution_center_case:read`
      operationId: createPayment
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              description: Parameters for CreatePayment
              oneOf:
                - description: Autogenerated input type of CreatePayment
                  properties:
                    company_id:
                      description: The ID of the company to create the payment for.
                      example: biz_xxxxxxxxxxxxxx
                      type: string
                    confirmation_token:
                      description: >-
                        A confirmation token ID (ctok_) describing a payment
                        method the buyer just supplied. Provide this INSTEAD of
                        member_id and payment_method_id to charge a method that
                        is not yet on file — the buyer is resolved from the
                        token's billing email, or from `email`. The buyer may
                        still have a step to complete (3DS, a redirect, linking
                        a bank); poll the payment's status endpoint for what to
                        do next.
                      type: string
                    email:
                      description: >-
                        Overrides the buyer email carried on the confirmation
                        token, resolving or creating the Whop user the payment
                        belongs to. Ignored when the confirmation token was
                        created by a signed-in buyer, and unless
                        confirmation_token is provided.
                      example: buyer@example.com
                      type:
                        - string
                        - 'null'
                    metadata:
                      additionalProperties: true
                      description: Custom metadata to attach to the payment.
                      type:
                        - object
                        - 'null'
                    payment_method_id:
                      description: >-
                        The ID of the payment method to use for the payment. It
                        must be connected to the Member being charged. Required
                        unless confirmation_token is provided.
                      example: pmt_xxxxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    plan:
                      description: Pass this object to create a new plan for this payment
                      properties:
                        application_fee_amount:
                          description: >-
                            The application fee amount collected by the platform
                            from this connected account. Provided as a number in
                            dollars (e.g., 5.00 for $5.00). Must be less than
                            the total payment amount. Only valid for connected
                            accounts with a parent company.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        billing_period:
                          description: >-
                            The interval in days at which the plan charges
                            (renewal plans). For example, 30 for monthly
                            billing.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        currency:
                          $ref: '#/components/schemas/Currencies'
                          description: The respective currency identifier for the plan.
                        description:
                          description: The description of the plan.
                          type:
                            - string
                            - 'null'
                        expiration_days:
                          description: >-
                            The number of days until the membership expires and
                            revokes access (expiration plans). For example, 365
                            for one year.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        force_create_new_plan:
                          description: >-
                            Whether to force the creation of a new plan even if
                            one with the same attributes already exists.
                          type:
                            - boolean
                            - 'null'
                        initial_price:
                          description: >-
                            An additional amount charged upon first purchase.
                            Provided as a number in the specified currency. Eg:
                            10.43 for $10.43 USD.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        internal_notes:
                          description: >-
                            A personal description or notes section for the
                            business.
                          type:
                            - string
                            - 'null'
                        plan_type:
                          description: >-
                            Indicates if the plan is a one time payment or
                            recurring.
                          oneOf:
                            - $ref: '#/components/schemas/PlanTypes'
                            - type: 'null'
                        product:
                          description: >-
                            Pass this object to create a new product for this
                            plan. We will use the product external identifier to
                            find or create an existing product.
                          properties:
                            collect_shipping_address:
                              description: >-
                                Whether or not to collect shipping information
                                at checkout from the customer.
                              type:
                                - boolean
                                - 'null'
                            custom_statement_descriptor:
                              description: >-
                                The custom statement descriptor for the product
                                i.e. WHOP*SPORTS, must be between 5 and 22
                                characters, contain at least one letter, and not
                                contain any of the following characters: <, >,
                                \, ', "
                              type:
                                - string
                                - 'null'
                            description:
                              description: A written description of the product.
                              type:
                                - string
                                - 'null'
                            external_identifier:
                              description: >-
                                A unique ID used to find or create a product.
                                When provided during creation, we will look for
                                an existing product with this external
                                identifier — if found, it will be updated;
                                otherwise, a new product will be created.
                              type: string
                            global_affiliate_percentage:
                              description: >-
                                The percentage of the revenue that goes to the
                                global affiliate program.
                              example: 6.9
                              type:
                                - number
                                - 'null'
                            global_affiliate_status:
                              description: >-
                                The status of the global affiliate program for
                                this product.
                              oneOf:
                                - $ref: '#/components/schemas/GlobalAffiliateStatuses'
                                - type: 'null'
                            headline:
                              description: The headline of the product.
                              type:
                                - string
                                - 'null'
                            product_tax_code_id:
                              description: >-
                                The ID of the product tax code to apply to this
                                product.
                              example: ptc_xxxxxxxxxxxxxx
                              type:
                                - string
                                - 'null'
                            redirect_purchase_url:
                              description: >-
                                The URL to redirect the customer to after a
                                purchase.
                              type:
                                - string
                                - 'null'
                            route:
                              description: The route of the product.
                              type:
                                - string
                                - 'null'
                            title:
                              description: The title of the product.
                              type: string
                            visibility:
                              description: >-
                                This product will/will not be displayed publicly
                                - default hidden.
                              oneOf:
                                - $ref: '#/components/schemas/Visibility'
                                - type: 'null'
                          required:
                            - external_identifier
                            - title
                          type:
                            - object
                            - 'null'
                        product_id:
                          description: >-
                            The product the plan is related to. Either this or
                            product is required.
                          example: prod_xxxxxxxxxxxxx
                          type:
                            - string
                            - 'null'
                        renewal_price:
                          description: >-
                            The amount the customer is charged every billing
                            period. Provided as a number in the specified
                            currency. Eg: 10.43 for $10.43 USD.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        title:
                          description: >-
                            The title of the plan. This will be visible on the
                            product page to customers.
                          type:
                            - string
                            - 'null'
                        trial_period_days:
                          description: >-
                            The number of free trial days added before a renewal
                            plan.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        visibility:
                          description: Shows or hides the plan from public/business view.
                          oneOf:
                            - $ref: '#/components/schemas/Visibility'
                            - type: 'null'
                      required:
                        - currency
                      type: object
                    promo_code_id:
                      description: >-
                        The ID of an active promo code to apply to this payment.
                        The promo code must belong to the company and be valid
                        for the plan being purchased. The plan must be attached
                        to a product — promo codes are not eligible for one-off
                        purchases.
                      example: promo_xxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    return_url:
                      description: >-
                        Where the buyer continues after completing an off-site
                        step. Must be an absolute https URL without credentials
                        (http is allowed for localhost), at most 2,048
                        characters. Editable until they return — see the
                        payment's update endpoint. Ignored unless
                        confirmation_token is provided.
                      example: https://example.com/path
                      type:
                        - string
                        - 'null'
                  required:
                    - company_id
                    - plan
                    - confirmation_token
                  title: CreatePaymentInputWithPlanAndConfirmationToken
                  type: object
                - description: Autogenerated input type of CreatePayment
                  properties:
                    company_id:
                      description: The ID of the company to create the payment for.
                      example: biz_xxxxxxxxxxxxxx
                      type: string
                    email:
                      description: >-
                        Overrides the buyer email carried on the confirmation
                        token, resolving or creating the Whop user the payment
                        belongs to. Ignored when the confirmation token was
                        created by a signed-in buyer, and unless
                        confirmation_token is provided.
                      example: buyer@example.com
                      type:
                        - string
                        - 'null'
                    member_id:
                      description: >-
                        The ID of the member to create the payment for. Required
                        unless confirmation_token is provided.
                      example: mber_xxxxxxxxxxxxx
                      type: string
                    metadata:
                      additionalProperties: true
                      description: Custom metadata to attach to the payment.
                      type:
                        - object
                        - 'null'
                    payment_method_id:
                      description: >-
                        The ID of the payment method to use for the payment. It
                        must be connected to the Member being charged. Required
                        unless confirmation_token is provided.
                      example: pmt_xxxxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    plan:
                      description: Pass this object to create a new plan for this payment
                      properties:
                        application_fee_amount:
                          description: >-
                            The application fee amount collected by the platform
                            from this connected account. Provided as a number in
                            dollars (e.g., 5.00 for $5.00). Must be less than
                            the total payment amount. Only valid for connected
                            accounts with a parent company.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        billing_period:
                          description: >-
                            The interval in days at which the plan charges
                            (renewal plans). For example, 30 for monthly
                            billing.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        currency:
                          $ref: '#/components/schemas/Currencies'
                          description: The respective currency identifier for the plan.
                        description:
                          description: The description of the plan.
                          type:
                            - string
                            - 'null'
                        expiration_days:
                          description: >-
                            The number of days until the membership expires and
                            revokes access (expiration plans). For example, 365
                            for one year.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        force_create_new_plan:
                          description: >-
                            Whether to force the creation of a new plan even if
                            one with the same attributes already exists.
                          type:
                            - boolean
                            - 'null'
                        initial_price:
                          description: >-
                            An additional amount charged upon first purchase.
                            Provided as a number in the specified currency. Eg:
                            10.43 for $10.43 USD.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        internal_notes:
                          description: >-
                            A personal description or notes section for the
                            business.
                          type:
                            - string
                            - 'null'
                        plan_type:
                          description: >-
                            Indicates if the plan is a one time payment or
                            recurring.
                          oneOf:
                            - $ref: '#/components/schemas/PlanTypes'
                            - type: 'null'
                        product:
                          description: >-
                            Pass this object to create a new product for this
                            plan. We will use the product external identifier to
                            find or create an existing product.
                          properties:
                            collect_shipping_address:
                              description: >-
                                Whether or not to collect shipping information
                                at checkout from the customer.
                              type:
                                - boolean
                                - 'null'
                            custom_statement_descriptor:
                              description: >-
                                The custom statement descriptor for the product
                                i.e. WHOP*SPORTS, must be between 5 and 22
                                characters, contain at least one letter, and not
                                contain any of the following characters: <, >,
                                \, ', "
                              type:
                                - string
                                - 'null'
                            description:
                              description: A written description of the product.
                              type:
                                - string
                                - 'null'
                            external_identifier:
                              description: >-
                                A unique ID used to find or create a product.
                                When provided during creation, we will look for
                                an existing product with this external
                                identifier — if found, it will be updated;
                                otherwise, a new product will be created.
                              type: string
                            global_affiliate_percentage:
                              description: >-
                                The percentage of the revenue that goes to the
                                global affiliate program.
                              example: 6.9
                              type:
                                - number
                                - 'null'
                            global_affiliate_status:
                              description: >-
                                The status of the global affiliate program for
                                this product.
                              oneOf:
                                - $ref: '#/components/schemas/GlobalAffiliateStatuses'
                                - type: 'null'
                            headline:
                              description: The headline of the product.
                              type:
                                - string
                                - 'null'
                            product_tax_code_id:
                              description: >-
                                The ID of the product tax code to apply to this
                                product.
                              example: ptc_xxxxxxxxxxxxxx
                              type:
                                - string
                                - 'null'
                            redirect_purchase_url:
                              description: >-
                                The URL to redirect the customer to after a
                                purchase.
                              type:
                                - string
                                - 'null'
                            route:
                              description: The route of the product.
                              type:
                                - string
                                - 'null'
                            title:
                              description: The title of the product.
                              type: string
                            visibility:
                              description: >-
                                This product will/will not be displayed publicly
                                - default hidden.
                              oneOf:
                                - $ref: '#/components/schemas/Visibility'
                                - type: 'null'
                          required:
                            - external_identifier
                            - title
                          type:
                            - object
                            - 'null'
                        product_id:
                          description: >-
                            The product the plan is related to. Either this or
                            product is required.
                          example: prod_xxxxxxxxxxxxx
                          type:
                            - string
                            - 'null'
                        renewal_price:
                          description: >-
                            The amount the customer is charged every billing
                            period. Provided as a number in the specified
                            currency. Eg: 10.43 for $10.43 USD.
                          example: 6.9
                          type:
                            - number
                            - 'null'
                        title:
                          description: >-
                            The title of the plan. This will be visible on the
                            product page to customers.
                          type:
                            - string
                            - 'null'
                        trial_period_days:
                          description: >-
                            The number of free trial days added before a renewal
                            plan.
                          example: 42
                          type:
                            - integer
                            - 'null'
                        visibility:
                          description: Shows or hides the plan from public/business view.
                          oneOf:
                            - $ref: '#/components/schemas/Visibility'
                            - type: 'null'
                      required:
                        - currency
                      type: object
                    promo_code_id:
                      description: >-
                        The ID of an active promo code to apply to this payment.
                        The promo code must belong to the company and be valid
                        for the plan being purchased. The plan must be attached
                        to a product — promo codes are not eligible for one-off
                        purchases.
                      example: promo_xxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    return_url:
                      description: >-
                        Where the buyer continues after completing an off-site
                        step. Must be an absolute https URL without credentials
                        (http is allowed for localhost), at most 2,048
                        characters. Editable until they return — see the
                        payment's update endpoint. Ignored unless
                        confirmation_token is provided.
                      example: https://example.com/path
                      type:
                        - string
                        - 'null'
                  required:
                    - company_id
                    - plan
                    - member_id
                  title: CreatePaymentInputWithPlanAndMemberId
                  type: object
                - description: Autogenerated input type of CreatePayment
                  properties:
                    company_id:
                      description: The ID of the company to create the payment for.
                      example: biz_xxxxxxxxxxxxxx
                      type: string
                    confirmation_token:
                      description: >-
                        A confirmation token ID (ctok_) describing a payment
                        method the buyer just supplied. Provide this INSTEAD of
                        member_id and payment_method_id to charge a method that
                        is not yet on file — the buyer is resolved from the
                        token's billing email, or from `email`. The buyer may
                        still have a step to complete (3DS, a redirect, linking
                        a bank); poll the payment's status endpoint for what to
                        do next.
                      type: string
                    email:
                      description: >-
                        Overrides the buyer email carried on the confirmation
                        token, resolving or creating the Whop user the payment
                        belongs to. Ignored when the confirmation token was
                        created by a signed-in buyer, and unless
                        confirmation_token is provided.
                      example: buyer@example.com
                      type:
                        - string
                        - 'null'
                    metadata:
                      additionalProperties: true
                      description: Custom metadata to attach to the payment.
                      type:
                        - object
                        - 'null'
                    payment_method_id:
                      description: >-
                        The ID of the payment method to use for the payment. It
                        must be connected to the Member being charged. Required
                        unless confirmation_token is provided.
                      example: pmt_xxxxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    plan_id:
                      description: An ID of an existing plan to use for the payment.
                      example: plan_xxxxxxxxxxxxx
                      type: string
                    promo_code_id:
                      description: >-
                        The ID of an active promo code to apply to this payment.
                        The promo code must belong to the company and be valid
                        for the plan being purchased. The plan must be attached
                        to a product — promo codes are not eligible for one-off
                        purchases.
                      example: promo_xxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    return_url:
                      description: >-
                        Where the buyer continues after completing an off-site
                        step. Must be an absolute https URL without credentials
                        (http is allowed for localhost), at most 2,048
                        characters. Editable until they return — see the
                        payment's update endpoint. Ignored unless
                        confirmation_token is provided.
                      example: https://example.com/path
                      type:
                        - string
                        - 'null'
                  required:
                    - company_id
                    - plan_id
                    - confirmation_token
                  title: CreatePaymentInputWithPlanIdAndConfirmationToken
                  type: object
                - description: Autogenerated input type of CreatePayment
                  properties:
                    company_id:
                      description: The ID of the company to create the payment for.
                      example: biz_xxxxxxxxxxxxxx
                      type: string
                    email:
                      description: >-
                        Overrides the buyer email carried on the confirmation
                        token, resolving or creating the Whop user the payment
                        belongs to. Ignored when the confirmation token was
                        created by a signed-in buyer, and unless
                        confirmation_token is provided.
                      example: buyer@example.com
                      type:
                        - string
                        - 'null'
                    member_id:
                      description: >-
                        The ID of the member to create the payment for. Required
                        unless confirmation_token is provided.
                      example: mber_xxxxxxxxxxxxx
                      type: string
                    metadata:
                      additionalProperties: true
                      description: Custom metadata to attach to the payment.
                      type:
                        - object
                        - 'null'
                    payment_method_id:
                      description: >-
                        The ID of the payment method to use for the payment. It
                        must be connected to the Member being charged. Required
                        unless confirmation_token is provided.
                      example: pmt_xxxxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    plan_id:
                      description: An ID of an existing plan to use for the payment.
                      example: plan_xxxxxxxxxxxxx
                      type: string
                    promo_code_id:
                      description: >-
                        The ID of an active promo code to apply to this payment.
                        The promo code must belong to the company and be valid
                        for the plan being purchased. The plan must be attached
                        to a product — promo codes are not eligible for one-off
                        purchases.
                      example: promo_xxxxxxxxxxxx
                      type:
                        - string
                        - 'null'
                    return_url:
                      description: >-
                        Where the buyer continues after completing an off-site
                        step. Must be an absolute https URL without credentials
                        (http is allowed for localhost), at most 2,048
                        characters. Editable until they return — see the
                        payment's update endpoint. Ignored unless
                        confirmation_token is provided.
                      example: https://example.com/path
                      type:
                        - string
                        - 'null'
                  required:
                    - company_id
                    - plan_id
                    - member_id
                  title: CreatePaymentInputWithPlanIdAndMemberId
                  type: object
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Payment'
                  - description: >-
                      A payment represents a completed or attempted charge.
                      Payments track the amount, status, currency, and payment
                      method used.
                    properties:
                      client_secret:
                        description: >-
                          The credential the buyer's surface presents to poll
                          this payment and set its return URL. Returned when a
                          payment created from a confirmation token is created
                          or retrieved by a caller with the payment:charge
                          permission. Null for payments created from a stored
                          payment method or callers without payment:charge. It
                          unlocks this payment and nothing else; treat it like a
                          password for that one attempt.
                        example: pay_xxxxxxxxxxxxxx_secret_v1_xxxx
                        type:
                          - string
                          - 'null'
                    required:
                      - client_secret
                    type: object
          description: A successful response
        '400':
          content:
            application/json:
              example:
                error:
                  code: parameter_missing
                  message: 'Missing required parameter: amount.'
                  param: amount
                  type: invalid_request_error
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Bad request
        '401':
          content:
            application/json:
              example:
                error:
                  message: Invalid or missing API key
                  type: unauthorized
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                error:
                  message: You do not have permission to access this resource
                  type: forbidden
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                error:
                  message: Resource not found
                  type: not_found
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Not found
        '422':
          content:
            application/json:
              example:
                error: null
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Verification required
        '429':
          content:
            application/json:
              example:
                error: null
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Too many requests
        '500':
          content:
            application/json:
              example:
                error:
                  message: An unexpected error occurred
                  type: internal_server_error
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: >-
                          A short string indicating the specific error code,
                          e.g. 'parameter_missing', 'parameter_invalid',
                          'invalid_json'
                        type:
                          - string
                          - 'null'
                      message:
                        type: string
                      param:
                        description: The parameter that caused the error, if applicable
                        type:
                          - string
                          - 'null'
                      type:
                        type: string
                    required:
                      - type
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Internal server error
      security:
        - bearerAuth:
            - payment:charge
            - plan:create
            - access_pass:create
            - access_pass:update
            - plan:basic:read
            - access_pass:basic:read
            - member:email:read
            - member:basic:read
            - member:phone:read
            - promo_code:basic:read
            - shipment:basic:read
            - payment:dispute:read
            - payment:resolution_center_case: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 payment = await client.payments.create({
              company_id: 'biz_xxxxxxxxxxxxxx',
              confirmation_token: 'confirmation_token',
              plan: { currency: 'usd' },
            });

            console.log(payment.id);
components:
  schemas:
    Currencies:
      description: The available currencies on the platform
      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
        - awg
        - whop_usd
        - xau
      type: string
    PlanTypes:
      description: The type of plan that can be attached to a product
      enum:
        - renewal
        - one_time
      type: string
    GlobalAffiliateStatuses:
      description: The different statuses of the global affiliate program for a product.
      enum:
        - enabled
        - disabled
      type: string
    Visibility:
      description: Visibility of a resource
      enum:
        - visible
        - hidden
        - archived
        - quick_link
      type: string
    Payment:
      description: >-
        A payment represents a completed or attempted charge. Payments track the
        amount, status, currency, and payment method used.
      properties:
        amount_after_fees:
          description: How much the payment is for after fees
          example: 6.9
          type: number
        application_fee:
          description: The application fee charged on this payment.
          properties:
            amount:
              description: The application fee amount.
              example: 6.9
              type: number
            amount_captured:
              description: The amount of the application fee that has been captured.
              example: 6.9
              type: number
            amount_refunded:
              description: The amount of the application fee that has been refunded.
              example: 6.9
              type: number
            created_at:
              description: The datetime the application fee was created.
              example: '2023-12-01T05:00:00.401Z'
              format: date-time
              type: string
            currency:
              $ref: '#/components/schemas/Currencies'
              description: The currency of the application fee.
            id:
              description: The unique identifier for the application fee.
              example: apfee_xxxxxxxxxxxx
              type: string
          required:
            - id
            - amount
            - amount_captured
            - amount_refunded
            - currency
            - created_at
          type:
            - object
            - 'null'
        auto_refunded:
          description: Whether this payment was auto refunded or not
          type: boolean
        billing_address:
          description: The address of the user who made the payment.
          properties:
            city:
              description: The city of the address.
              type:
                - string
                - 'null'
            country:
              description: The country of the address.
              type:
                - string
                - 'null'
            line1:
              description: The line 1 of the address.
              type:
                - string
                - 'null'
            line2:
              description: The line 2 of the address.
              type:
                - string
                - 'null'
            name:
              description: The name of the customer.
              type:
                - string
                - 'null'
            postal_code:
              description: The postal code of the address.
              type:
                - string
                - 'null'
            state:
              description: The state of the address.
              type:
                - string
                - 'null'
          required:
            - name
            - line1
            - line2
            - city
            - state
            - postal_code
            - country
          type:
            - object
            - 'null'
        billing_reason:
          description: >-
            The machine-readable reason this charge was created, such as initial
            subscription purchase, renewal cycle, or one-time payment.
          oneOf:
            - $ref: '#/components/schemas/BillingReasons'
            - type: 'null'
        card_brand:
          description: >-
            Card network reported by the processor (e.g., 'visa', 'mastercard',
            'amex'). Present only when the payment method type is 'card'.
          oneOf:
            - $ref: '#/components/schemas/CardBrands'
            - type: 'null'
        card_exp_month:
          description: >-
            The expiration month (1-12) of the card used for this payment. Falls
            back to the declined card on failed payments with no saved card.
            Null when the payment was not made with a card or the expiry is
            unavailable.
          example: 6
          type:
            - integer
            - 'null'
        card_exp_year:
          description: >-
            The four-digit expiration year of the card used for this payment.
            Falls back to the declined card on failed payments with no saved
            card. Null when the payment was not made with a card or the expiry
            is unavailable.
          example: 2027
          type:
            - integer
            - 'null'
        card_last4:
          description: >-
            The last four digits of the card used to make this payment. Null if
            the payment was not made with a card.
          example: '4242'
          type:
            - string
            - 'null'
        checkout_configuration_id:
          description: >-
            The ID of the checkout session/configuration that produced this
            payment, if any. Use this to map payments back to the checkout
            configuration that created them.
          example: ch_xxxxxxxxxxxxxxx
          type:
            - string
            - 'null'
        company:
          description: The company for the payment.
          properties:
            id:
              description: The unique identifier for the company.
              example: biz_xxxxxxxxxxxxxx
              type: string
            route:
              description: The slug/route of the company on the Whop site.
              type: string
            title:
              description: The written name of the company.
              type: string
          required:
            - id
            - title
            - route
          type:
            - object
            - 'null'
        created_at:
          description: The datetime the payment was created.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type: string
        currency:
          $ref: '#/components/schemas/Currencies'
          description: >-
            The three-letter ISO currency code for this payment (e.g., 'usd',
            'eur').
        customer_phone:
          description: >-
            Phone number the customer provided at checkout, or their verified
            phone number when your checkout requires phone verification. `null`
            when no phone number was collected.
          type:
            - string
            - 'null'
        decline_code:
          description: >-
            The reason the payment was declined. Null if the payment did not
            fail.
          oneOf:
            - $ref: '#/components/schemas/PaymentDeclineCodes'
            - type: 'null'
        dispute_alerted_at:
          description: When an alert came in that this transaction will be disputed
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        disputes:
          description: >-
            The disputes attached to this payment. Null if the actor in context
            does not have the payment:dispute:read permission.
          items:
            description: >-
              A dispute is a chargeback or payment challenge filed against a
              company, including evidence and response status.
            properties:
              amount:
                description: >-
                  The disputed amount in the specified currency, formatted as a
                  decimal.
                example: 6.9
                type: number
              currency:
                $ref: '#/components/schemas/Currencies'
                description: The three-letter ISO currency code for the disputed amount.
              editable:
                description: >-
                  Whether the dispute evidence can still be edited and
                  submitted.
                type:
                  - boolean
                  - 'null'
              id:
                description: The unique identifier for the dispute.
                example: dspt_xxxxxxxxxxxxx
                type: string
              needs_response_by:
                description: >-
                  The deadline by which dispute evidence must be submitted. Null
                  if no response deadline is set.
                example: '2023-12-01T05:00:00.401Z'
                format: date-time
                type:
                  - string
                  - 'null'
              notes:
                description: >-
                  Additional freeform notes submitted by the company as part of
                  the dispute evidence.
                example: Customer used the product for 3 months before disputing.
                type:
                  - string
                  - 'null'
              reason:
                description: A human-readable reason for the dispute.
                example: Product Not Received
                type:
                  - string
                  - 'null'
              status:
                $ref: '#/components/schemas/DisputeStatuses'
                description: >-
                  The current status of the dispute lifecycle, such as
                  needs_response, under_review, won, or lost.
            required:
              - id
              - amount
              - currency
              - status
              - editable
              - needs_response_by
              - reason
              - notes
            type: object
          type:
            - array
            - 'null'
        failure_message:
          description: If the payment failed, the reason for the failure.
          type:
            - string
            - 'null'
        financing_installments_count:
          description: >-
            The number of financing installments for the payment. Present if the
            payment is a financing payment (e.g. Splitit, Klarna, etc.).
          example: 42
          type:
            - integer
            - 'null'
        financing_transactions:
          description: >-
            The financing transactions attached to this payment. Present if the
            payment is a financing payment (e.g. Splitit, Klarna, etc.).
          items:
            description: A payment transaction.
            properties:
              amount:
                description: The amount of the payment transaction.
                example: 6.9
                type: number
              created_at:
                description: The date and time the payment transaction was created.
                example: '2023-12-01T05:00:00.401Z'
                format: date-time
                type: string
              id:
                description: The unique identifier for the payment transaction.
                example: ptx_xxxxxxxxxxxxxx
                type: string
              status:
                $ref: '#/components/schemas/PaymentTransactionStatuses'
                description: The status of the payment transaction.
              transaction_type:
                $ref: '#/components/schemas/PaymentTransactionTypes'
                description: The type of the payment transaction.
            required:
              - id
              - amount
              - status
              - created_at
              - transaction_type
            type: object
          type: array
        id:
          description: The unique identifier for the payment.
          example: pay_xxxxxxxxxxxxxx
          type: string
        last_payment_attempt:
          description: The time of the last payment attempt.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        member:
          description: The member attached to this payment.
          properties:
            id:
              description: The unique identifier for the company member.
              type: string
            phone:
              description: The phone number for the member, if available.
              type:
                - string
                - 'null'
          required:
            - id
            - phone
          type:
            - object
            - 'null'
        membership:
          description: The membership attached to this payment.
          properties:
            id:
              description: The unique identifier for the membership.
              example: mem_xxxxxxxxxxxxxx
              type: string
            phone_number:
              description: The phone number associated with this membership.
              type:
                - string
                - 'null'
            status:
              $ref: '#/components/schemas/MembershipStatus'
              description: The state of the membership.
          required:
            - id
            - status
            - phone_number
          type:
            - object
            - 'null'
        metadata:
          additionalProperties: true
          description: >-
            The custom metadata stored on this payment. This will be copied over
            to the checkout configuration for which this payment was made
          type:
            - object
            - 'null'
        needs_tracking:
          description: >-
            Whether this payment is holding funds until the order ships and has
            no tracking number yet.
          type:
            - boolean
            - 'null'
        next_payment_attempt:
          description: The time of the next schedule payment retry.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        paid_at:
          description: >-
            The time at which this payment was successfully collected. Null if
            the payment has not yet succeeded. As a Unix timestamp.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        payment_instrument:
          description: >-
            The instrument this payment was made with, shaped for display: the
            method type, a buyer-facing name, the standard icon set, and the
            card facts when it was a card. Null when the receipt names no
            payment method.
          properties:
            card:
              description: 'Card payments only: the card''s network and last four.'
              properties:
                brand:
                  description: >-
                    The network identifier (`visa`, `amex`, …), matching
                    `card.networks` entries and saved card payment methods.
                  type: string
                last4:
                  description: The card's last four digits, when captured.
                  type:
                    - string
                    - 'null'
              required:
                - brand
                - last4
              type:
                - object
                - 'null'
            display_name:
              description: >-
                Buyer-facing instrument name — "Visa •••• 4242" when the card
                surfaced, else the method's own name ("Klarna").
              type: string
            icons:
              description: >-
                The standard icon set: square and card shapes, each in light and
                dark colorways.
              properties:
                card:
                  description: The credit-card-proportioned tile (48x30).
                  properties:
                    dark:
                      description: The colorway for dark surfaces.
                      properties:
                        png_1x:
                          description: Raster fallback at the shape's native size.
                          type: string
                        png_2x:
                          description: Raster fallback at double density.
                          type: string
                        png_4x:
                          description: Raster fallback at quadruple density.
                          type: string
                        svg:
                          description: The vector file. Prefer this everywhere SVG renders.
                          type: string
                      required:
                        - svg
                        - png_1x
                        - png_2x
                        - png_4x
                      type: object
                    light:
                      description: The colorway for light surfaces.
                      properties:
                        png_1x:
                          description: Raster fallback at the shape's native size.
                          type: string
                        png_2x:
                          description: Raster fallback at double density.
                          type: string
                        png_4x:
                          description: Raster fallback at quadruple density.
                          type: string
                        svg:
                          description: The vector file. Prefer this everywhere SVG renders.
                          type: string
                      required:
                        - svg
                        - png_1x
                        - png_2x
                        - png_4x
                      type: object
                  required:
                    - light
                    - dark
                  type: object
                square:
                  description: The square tile (32x32).
                  properties:
                    dark:
                      description: The colorway for dark surfaces.
                      properties:
                        png_1x:
                          description: Raster fallback at the shape's native size.
                          type: string
                        png_2x:
                          description: Raster fallback at double density.
                          type: string
                        png_4x:
                          description: Raster fallback at quadruple density.
                          type: string
                        svg:
                          description: The vector file. Prefer this everywhere SVG renders.
                          type: string
                      required:
                        - svg
                        - png_1x
                        - png_2x
                        - png_4x
                      type: object
                    light:
                      description: The colorway for light surfaces.
                      properties:
                        png_1x:
                          description: Raster fallback at the shape's native size.
                          type: string
                        png_2x:
                          description: Raster fallback at double density.
                          type: string
                        png_4x:
                          description: Raster fallback at quadruple density.
                          type: string
                        svg:
                          description: The vector file. Prefer this everywhere SVG renders.
                          type: string
                      required:
                        - svg
                        - png_1x
                        - png_2x
                        - png_4x
                      type: object
                  required:
                    - light
                    - dark
                  type: object
              required:
                - square
                - card
              type: object
            installment_count:
              description: >-
                Installment methods only: how many payments the charge splits
                into. Data, not copy — compose and translate the label
                client-side.
              example: 42
              type:
                - integer
                - 'null'
            payment_method_type:
              description: >-
                The payment method type identifier, e.g. `card`, `klarna`,
                `apple_pay`.
              type: string
          required:
            - payment_method_type
            - display_name
            - installment_count
            - card
            - icons
          type:
            - object
            - 'null'
        payment_method:
          description: >-
            The tokenized payment method reference used for this payment. Null
            if no token was used.
          properties:
            card:
              description: >-
                The card data associated with the payment method, if its a debit
                or credit card.
              properties:
                brand:
                  description: >-
                    The card network (e.g., visa, mastercard, amex). Null if the
                    brand could not be determined.
                  oneOf:
                    - $ref: '#/components/schemas/CardBrands'
                    - type: 'null'
                exp_month:
                  description: >-
                    The two-digit expiration month of the card (1-12). Null if
                    not available.
                  example: 42
                  type:
                    - integer
                    - 'null'
                exp_year:
                  description: >-
                    The two-digit expiration year of the card (e.g., 27 for
                    2027). Null if not available.
                  example: 42
                  type:
                    - integer
                    - 'null'
                fingerprint:
                  description: >-
                    A stable identifier for the underlying card. Two payment
                    methods with the same fingerprint are the same card. Null if
                    not available.
                  type:
                    - string
                    - 'null'
                last4:
                  description: >-
                    The last four digits of the card number. Null if not
                    available.
                  example: '4242'
                  type:
                    - string
                    - 'null'
              required:
                - brand
                - fingerprint
                - last4
                - exp_month
                - exp_year
              type:
                - object
                - 'null'
            created_at:
              description: The datetime the payment token was created.
              example: '2023-12-01T05:00:00.401Z'
              format: date-time
              type: string
            id:
              description: The unique identifier for the payment token.
              example: payt_xxxxxxxxxxxxx
              type: string
            payment_method_type:
              $ref: '#/components/schemas/PaymentMethodTypes'
              description: The payment method type of the payment method
          required:
            - id
            - created_at
            - payment_method_type
            - card
          type:
            - object
            - 'null'
        payment_method_type:
          description: >-
            The type of payment instrument used for this payment (e.g., card,
            Cash App, iDEAL, Klarna, crypto). Null when the processor does not
            supply a type.
          oneOf:
            - $ref: '#/components/schemas/PaymentMethodTypes'
            - type: 'null'
        payments_failed:
          description: The number of failed payment attempts for the payment.
          example: 42
          type:
            - integer
            - 'null'
        plan:
          description: The plan attached to this payment.
          properties:
            id:
              description: The unique identifier for the plan.
              example: plan_xxxxxxxxxxxxx
              type: string
            internal_notes:
              description: A personal description or notes section for the business.
              type:
                - string
                - 'null'
            metadata:
              additionalProperties: true
              description: >-
                Custom key-value pairs stored on the plan. Included in webhook
                payloads for payment and membership events. Max 50 keys, 100
                chars per key, 500 chars per string value. The reserved keys
                `custom_cta` and `custom_cta_url`, when set, override the
                product's checkout call to action for this plan.
              type:
                - object
                - 'null'
          required:
            - id
            - internal_notes
            - metadata
          type:
            - object
            - 'null'
        product:
          description: The product this payment was made for
          properties:
            id:
              description: The unique identifier for the product.
              example: prod_xxxxxxxxxxxxx
              type: string
            metadata:
              additionalProperties: true
              description: >-
                Custom key-value pairs stored on the product and included in
                payment and membership webhook payloads. Max 50 keys, 100
                characters per key, 500 characters per string value.
              type:
                - object
                - 'null'
            route:
              description: >-
                URL slug in the product's public link, e.g. `pickaxe-analytics`
                in whop.com/company/pickaxe-analytics.
              example: pickaxe-analytics
              type: string
            title:
              description: >-
                The display name of the product shown to customers on the
                product page and in search results.
              example: Pickaxe Analytics
              type: string
          required:
            - id
            - title
            - route
            - metadata
          type:
            - object
            - 'null'
        promo_code:
          description: The promo code used for this payment.
          properties:
            amount_off:
              description: >-
                The discount amount. Interpretation depends on promo_type: if
                'percentage', this is the percentage (e.g., 20 means 20% off);
                if 'flat_amount', this is dollars off (e.g., 10.00 means $10.00
                off).
              example: 6.9
              type: number
            base_currency:
              $ref: '#/components/schemas/Currencies'
              description: The monetary currency of the promo code.
            code:
              description: The specific code used to apply the promo at checkout.
              type:
                - string
                - 'null'
            id:
              description: The unique identifier for the promo code.
              example: promo_xxxxxxxxxxxx
              type: string
            number_of_intervals:
              description: The number of months the promo is applied for.
              example: 42
              type:
                - integer
                - 'null'
            promo_type:
              $ref: '#/components/schemas/PromoTypes'
              description: The type (% or flat amount) of the promo.
          required:
            - id
            - code
            - amount_off
            - base_currency
            - promo_type
            - number_of_intervals
          type:
            - object
            - 'null'
        refundable:
          description: >-
            True only for payments that are `paid`, have not been fully
            refunded, and were processed by a payment processor that allows
            refunds.
          type: boolean
        refunded_amount:
          description: The payment refund amount(if applicable).
          example: 6.9
          type:
            - number
            - 'null'
        refunded_at:
          description: When the payment was refunded (if applicable).
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        refunds:
          description: >-
            The refunds issued against this payment, newest first, including
            failed and canceled refund attempts. Limited to the 100 most recent.
          items:
            description: >-
              A refund represents a full or partial reversal of a payment,
              including the amount, status, and payment provider.
            properties:
              amount:
                description: >-
                  The refunded amount as a decimal in the specified currency,
                  such as 10.43 for $10.43 USD.
                example: 6.9
                type: number
              created_at:
                description: The datetime the refund was created.
                example: '2023-12-01T05:00:00.401Z'
                format: date-time
                type: string
              currency:
                $ref: '#/components/schemas/Currencies'
                description: The three-letter ISO currency code for the refunded amount.
              id:
                description: The unique identifier for the refund.
                example: rf_xxxxxxxxxxxxxxx
                type: string
              status:
                $ref: '#/components/schemas/RefundStatuses'
                description: >-
                  The current processing status of the refund, such as pending,
                  succeeded, or failed.
            required:
              - id
              - status
              - amount
              - currency
              - created_at
            type: object
          type: array
        resolutions:
          description: >-
            The resolution center cases opened by the customer on this payment.
            Null if the actor in context does not have the
            payment:resolution_center_case:read permission.
          items:
            description: >-
              A resolution center case is a dispute or support case between a
              user and a company, tracking the issue, status, and outcome.
            properties:
              customer_appealed:
                description: >-
                  Whether the customer has filed an appeal after the initial
                  resolution decision.
                type: boolean
              customer_response_actions:
                description: The list of actions currently available to the customer.
                items:
                  $ref: '#/components/schemas/ResolutionCenterCaseCustomerResponses'
                type: array
              due_date:
                description: >-
                  The deadline by which the next response is required. Null if
                  no deadline is currently active. As a Unix timestamp.
                example: '2023-12-01T05:00:00.401Z'
                format: date-time
                type:
                  - string
                  - 'null'
              id:
                description: The unique identifier for the resolution.
                example: reso_xxxxxxxxxxxxx
                type: string
              issue:
                $ref: '#/components/schemas/ResolutionCenterCaseIssueTypes'
                description: The category of the dispute.
              merchant_appealed:
                description: >-
                  Whether the merchant has filed an appeal after the initial
                  resolution decision.
                type: boolean
              merchant_response_actions:
                description: The list of actions currently available to the merchant.
                items:
                  $ref: '#/components/schemas/ResolutionCenterCaseMerchantResponses'
                type: array
              platform_response_actions:
                description: >-
                  The list of actions currently available to the Whop platform
                  for moderating this resolution.
                items:
                  $ref: '#/components/schemas/ResolutionCenterCasePlatformResponses'
                type: array
              status:
                $ref: '#/components/schemas/ResolutionCenterCaseStatuses'
                description: >-
                  The current status of the resolution case, indicating which
                  party needs to respond or if the case is closed.
            required:
              - id
              - status
              - due_date
              - issue
              - customer_appealed
              - merchant_appealed
              - customer_response_actions
              - merchant_response_actions
              - platform_response_actions
            type: object
          type:
            - array
            - 'null'
        retryable:
          description: >-
            True when the payment status is `open` and its membership is in one
            of the retry-eligible states (`active`, `trialing`, `completed`, or
            `past_due`), or when it is a failed initial billing-engine payment
            on a `drafted` membership with an unlimited-stock plan; otherwise
            false. Used to decide if Whop can attempt the charge again.
          type: boolean
        risk_score:
          description: >-
            Whop's in-house fraud risk score for this payment, from 0 (lowest
            risk) to 100 (highest risk). Null when the payment has not been
            scored or scoring has not yet completed.
          example: 42
          type:
            - integer
            - 'null'
        risk_signals:
          additionalProperties: true
          description: >-
            A curated set of factors behind the risk score, grouped by category
            (business transaction history, buyer, device). Each entry has a key,
            human-readable label, category, and value. Null when there is no
            risk assessment for this payment.
          type:
            - object
            - 'null'
        settlement_amount:
          description: >-
            The total amount charged to the customer for this payment, including
            taxes and after any discounts. In the currency specified by the
            currency field.
          example: 6.9
          type: number
        settlement_currency:
          $ref: '#/components/schemas/Currencies'
          description: >-
            The three-letter ISO currency code for this payment (e.g., 'usd',
            'eur').
        settlement_exchange_rate:
          description: Deprecated. Always returns null.
          example: 6.9
          type:
            - number
            - 'null'
        settlement_time_at:
          description: >-
            When this payment's funds post to the company's available balance,
            at midnight UTC. Known at payment time and never changes. The
            `ledger_account.funds_available` webhook carries the same
            `settlement_time_at` when that batch posts — match them to know
            these funds are now withdrawable.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type:
            - string
            - 'null'
        shipment:
          description: The shipment attached to this payment.
          properties:
            carrier:
              description: >-
                The shipping carrier detected for this shipment. Null until a
                tracking update identifies it.
              example: usps
              type:
                - string
                - 'null'
            id:
              description: The unique identifier for the shipment.
              example: ship_xxxxxxxxxxxxx
              type: string
            status:
              $ref: '#/components/schemas/ShipmentStatuses'
              description: The current delivery status of this shipment.
            tracking_number:
              description: >-
                The carrier-assigned tracking number used to look up shipment
                progress.
              example: '9400111899223456789012'
              type: string
            tracking_url:
              description: A customer-facing URL to track this shipment's progress.
              example: https://track.aftership.com/9400111899223456789012
              type: string
          required:
            - id
            - status
            - tracking_number
            - carrier
            - tracking_url
          type:
            - object
            - 'null'
        shipping_address:
          description: >-
            The shipping address provided by the customer for physical goods.
            Null if no shipping address was collected.
          properties:
            city:
              description: The city of the address.
              type:
                - string
                - 'null'
            country:
              description: The country of the address.
              type:
                - string
                - 'null'
            line1:
              description: The line 1 of the address.
              type:
                - string
                - 'null'
            line2:
              description: The line 2 of the address.
              type:
                - string
                - 'null'
            name:
              description: The name of the customer.
              type:
                - string
                - 'null'
            postal_code:
              description: The postal code of the address.
              type:
                - string
                - 'null'
            state:
              description: The state of the address.
              type:
                - string
                - 'null'
          required:
            - name
            - line1
            - line2
            - city
            - state
            - postal_code
            - country
          type:
            - object
            - 'null'
        status:
          description: >-
            The current lifecycle state of this payment (e.g., 'draft', 'open',
            'paid', 'void').
          oneOf:
            - $ref: '#/components/schemas/ReceiptStatus'
            - type: 'null'
        substatus:
          $ref: '#/components/schemas/FriendlyReceiptStatus'
          description: The friendly status of the payment.
        subtotal:
          description: The subtotal to show to the creator (excluding buyer fees).
          example: 6.9
          type:
            - number
            - 'null'
        tax_amount:
          description: The calculated amount of the sales/VAT tax (if applicable).
          example: 6.9
          type:
            - number
            - 'null'
        tax_behavior:
          description: >-
            The type of tax inclusivity applied to the payment, for determining
            whether the tax is included in the final price, or paid on top.
          oneOf:
            - $ref: '#/components/schemas/ReceiptTaxBehaviors'
            - type: 'null'
        tax_refunded_amount:
          description: The amount of tax that has been refunded (if applicable).
          example: 6.9
          type:
            - number
            - 'null'
        three_ds_verified:
          description: Whether 3D Secure authentication was completed for this payment.
          type: boolean
        total:
          description: The total to show to the creator (excluding buyer fees).
          example: 6.9
          type:
            - number
            - 'null'
        updated_at:
          description: The datetime the payment was last updated.
          example: '2023-12-01T05:00:00.401Z'
          format: date-time
          type: string
        usd_total:
          description: The total in USD to show to the creator (excluding buyer fees).
          example: 6.9
          type:
            - number
            - 'null'
        user:
          description: The user that made this payment.
          properties:
            email:
              description: >-
                The user's email address. Requires the member:email:read
                permission to access. Null if not authorized.
              example: john.doe@example.com
              type:
                - string
                - 'null'
            id:
              description: The unique identifier for the user.
              example: user_xxxxxxxxxxxxx
              type: string
            name:
              description: The user's display name shown on their public profile.
              example: John Doe
              type:
                - string
                - 'null'
            username:
              description: The user's unique username shown on their public profile.
              example: johndoe42
              type: string
          required:
            - id
            - name
            - username
            - email
          type:
            - object
            - 'null'
        verification_checks:
          description: >-
            The issuer's address and card security code check results for this
            payment. Null when the processor returned none.
          properties:
            address_line1:
              description: >-
                Whether the billing street address the customer entered matched
                the address the issuer has on file.
              type:
                - string
                - 'null'
            card_holder_name:
              description: >-
                Whether the cardholder name the customer entered matched the
                name the issuer has on file.
              type:
                - string
                - 'null'
            card_security_code:
              description: Whether the CVV / CVC the customer entered matched the card.
              type:
                - string
                - 'null'
            zip_code:
              description: >-
                Whether the billing postal code the customer entered matched the
                postal code the issuer has on file.
              type:
                - string
                - 'null'
          required:
            - address_line1
            - zip_code
            - card_holder_name
            - card_security_code
          type:
            - object
            - 'null'
        voidable:
          description: >-
            True when the payment is tied to a membership in `past_due`, the
            payment status is `open`, and the processor allows voiding payments;
            otherwise false.
          type: boolean
      required:
        - id
        - status
        - substatus
        - refundable
        - retryable
        - voidable
        - created_at
        - updated_at
        - paid_at
        - last_payment_attempt
        - next_payment_attempt
        - dispute_alerted_at
        - refunded_at
        - plan
        - product
        - user
        - membership
        - member
        - customer_phone
        - payment_instrument
        - payment_method
        - company
        - promo_code
        - currency
        - settlement_currency
        - total
        - subtotal
        - usd_total
        - refunded_amount
        - auto_refunded
        - amount_after_fees
        - application_fee
        - card_brand
        - card_last4
        - billing_address
        - shipping_address
        - needs_tracking
        - shipment
        - payment_method_type
        - billing_reason
        - payments_failed
        - tax_amount
        - tax_behavior
        - failure_message
        - decline_code
        - metadata
        - checkout_configuration_id
        - settlement_time_at
        - settlement_amount
        - settlement_exchange_rate
        - tax_refunded_amount
        - card_exp_month
        - card_exp_year
        - financing_installments_count
        - financing_transactions
        - refunds
        - disputes
        - resolutions
        - risk_score
        - risk_signals
        - three_ds_verified
        - verification_checks
      type: object
    BillingReasons:
      description: The reason why a specific payment was billed
      enum:
        - subscription_create
        - subscription_cycle
        - subscription_update
        - one_time
        - manual
        - subscription
      type: string
    CardBrands:
      description: Possible card brands that a payment token can have
      enum:
        - mastercard
        - visa
        - amex
        - discover
        - unionpay
        - jcb
        - diners
        - link
        - troy
        - visadankort
        - visabancontact
        - china_union_pay
        - rupay
        - jcbrupay
        - elo
        - maestro
        - tarjeta_naranja
        - cirrus
        - nspk_mir
        - verve
        - ebt
        - private_label
        - local_brand
        - uatp
        - wexcard
        - uzcard
        - meeza
        - hrg_store_card
        - girocard
        - fuel_card
        - dankort
        - carnet
        - atm_card
        - china_union_payuzcard
        - codensa
        - cabal
        - hipercard
        - jcblankapay
        - cmi
        - aura
        - unknown
      type: string
    PaymentDeclineCodes:
      description: The reason a payment was declined.
      enum:
        - insufficient_funds
        - lost_card
        - stolen_card
        - expired_card
        - suspected_fraud
        - invalid_card_number
        - invalid_cvc
        - invalid_cvc_or_expiration
        - incorrect_pin
        - authentication_required
        - card_not_supported
        - currency_not_supported
        - duplicate_transaction
        - generic_decline
        - invalid_account
        - invalid_amount
        - processing_error
        - restricted_card
        - card_velocity_exceeded
        - contact_issuer
        - bank_declined
        - regulatory_blocked
        - transaction_not_permitted
        - transaction_stopped
        - card_type_not_supported
        - issuer_not_found
        - closed_account
        - issuer_unavailable
        - invalid_zip
        - invalid_expiry_month
        - invalid_expiry_year
        - invalid_expiry
        - invalid_transaction
        - cannot_authorize
        - pin_required
        - pin_try_exceeded
        - provider_declined
        - high_risk
        - test_mode_decline
        - merchant_blacklist
        - reenter_transaction
        - invalid_pin
        - pin_required_as
        - withdrawal_count_limit_exceeded
        - invalid_country
        - issuer_error
        - invalid_card_holder_name
        - no_accounts
        - transaction_cancelled
        - three_d_secure_success
        - three_d_secure_canceled
        - three_d_secure_invalid_card_number
        - three_d_secure_generic_error
        - three_d_secure_timeout
        - three_d_secure_failed
        - three_d_secure_card_not_enrolled
        - three_d_secure_fraud
        - three_d_secure_too_many_attempts
        - three_d_secure_rejected_by_bank
        - three_d_secure_reported_lost_or_stolen
        - blocked_by_cardholder
        - test_mode_test_card
        - try_again_later
        - transaction_not_allowed
        - bank_insufficient_funds
        - bank_account_not_found
        - bank_account_closed
        - bank_account_frozen
        - bank_invalid_routing_number
        - bank_non_transaction_account
        - bank_authorization_revoked
        - bank_payment_stopped
        - bank_not_authorized
        - bank_account_holder_deceased
        - bank_duplicate
        - bank_amount_error
        - bank_regulatory_blocked
        - bank_details_invalid
        - bank_processing_error
        - bank_generic_decline
        - sepa_invalid_iban
        - sepa_no_mandate
        - sepa_mandate_data_invalid
        - sepa_disputed
        - sepa_refused_by_customer
        - sepa_generic_decline
      type: string
    DisputeStatuses:
      description: The possible statuses of a dispute
      enum:
        - warning_needs_response
        - warning_under_review
        - warning_closed
        - needs_response
        - under_review
        - won
        - lost
        - closed
        - other
      type: string
    PaymentTransactionStatuses:
      description: The different statuses a payment transaction can be in.
      enum:
        - succeeded
        - declined
        - error
        - pending
        - created
        - expired
        - won
        - rejected
        - lost
        - prevented
        - canceled
      type: string
    PaymentTransactionTypes:
      description: The different types of payment transactions.
      enum:
        - purchase
        - authorize
        - capture
        - refund
        - canceled
        - verify
        - chargeback
        - pre_chargeback
        - three_d_secure
        - fraud_screening
        - authorization
        - installment
      type: string
    MembershipStatus:
      description: The status of a membership
      enum:
        - trialing
        - active
        - past_due
        - completed
        - canceled
        - expired
        - unresolved
        - drafted
        - canceling
      type: string
    PaymentMethodTypes:
      description: The different types of payment methods that can be used.
      enum:
        - acss_debit
        - addi
        - affirm
        - afterpay_clearpay
        - alipay
        - alma
        - amazon_pay
        - apple
        - apple_pay
        - au_bank_transfer
        - au_becs_debit
        - bacs_debit
        - bancolombia
        - bancontact
        - bank_wire
        - billie
        - bizum
        - blik
        - boleto
        - bre_b
        - ca_bank_transfer
        - capchase_pay
        - card
        - card_installments_three
        - card_installments_six
        - card_installments_twelve
        - cashapp
        - claritypay
        - coinbase
        - crypto
        - custom
        - customer_balance
        - demo_pay
        - efecty
        - eps
        - eu_bank_transfer
        - fpx
        - gb_bank_transfer
        - giropay
        - google_pay
        - gopay
        - grabpay
        - id_bank_transfer
        - ideal
        - interac
        - kakao_pay
        - klarna
        - klarna_pay_now
        - konbini
        - kr_card
        - kr_market
        - kriya
        - kueski
        - link
        - mb_way
        - m_pesa
        - mercado_pago
        - mobilepay
        - modo
        - mondu
        - multibanco
        - naver_pay
        - nequi
        - netbanking
        - ng_bank
        - ng_bank_transfer
        - ng_card
        - ng_market
        - ng_ussd
        - ng_wallet
        - nz_bank_account
        - oxxo
        - p24
        - pago_efectivo
        - pse
        - pay_by_bank
        - payco
        - paynow
        - paypal
        - paypay
        - payto
        - pix
        - platform_balance
        - promptpay
        - qris
        - rapipago
        - rechnung
        - revolut_pay
        - samsung_pay
        - satispay
        - scalapay
        - sencillito
        - sepa_debit
        - sequra
        - servipag
        - sezzle
        - shop_pay
        - shopeepay
        - sofort
        - south_korea_market
        - spei
        - splitit
        - sunbit
        - swish
        - tamara
        - twint
        - upi
        - us_bank_account
        - us_bank_transfer
        - venmo
        - vipps
        - webpay
        - wechat_pay
        - yape
        - zip
        - coinflow
        - unknown
      type: string
    PromoTypes:
      description: The type of promo code used to discount a plan
      enum:
        - percentage
        - flat_amount
      type: string
    RefundStatuses:
      description: The different statuses for a Refund object
      enum:
        - pending
        - requires_action
        - succeeded
        - failed
        - canceled
      type: string
    ResolutionCenterCaseCustomerResponses:
      description: The types of responses a customer can make to a resolution.
      enum:
        - respond
        - appeal
        - withdraw
      type: string
    ResolutionCenterCaseIssueTypes:
      description: The different types of issues a resolution can be
      enum:
        - forgot_to_cancel
        - item_not_received
        - significantly_not_as_described
        - unauthorized_transaction
        - product_unacceptable
      type: string
    ResolutionCenterCaseMerchantResponses:
      description: The types of responses a merchant can make to a resolution.
      enum:
        - accept
        - deny
        - request_more_info
        - appeal
        - respond
      type: string
    ResolutionCenterCasePlatformResponses:
      description: The types of responses the platform can make to a resolution.
      enum:
        - request_buyer_info
        - request_merchant_info
        - merchant_wins
        - merchant_refund
      type: string
    ResolutionCenterCaseStatuses:
      description: The statuses a resolution object can have
      enum:
        - merchant_response_needed
        - customer_response_needed
        - merchant_info_needed
        - customer_info_needed
        - under_platform_review
        - customer_won
        - merchant_won
        - customer_withdrew
      type: string
    ShipmentStatuses:
      description: The status of a shipment
      enum:
        - unknown
        - pre_transit
        - in_transit
        - out_for_delivery
        - delivered
        - available_for_pickup
        - return_to_sender
        - failure
        - cancelled
        - error
      type: string
    ReceiptStatus:
      description: The status of a receipt
      enum:
        - draft
        - open
        - paid
        - pending
        - uncollectible
        - unresolved
        - void
      type: string
    FriendlyReceiptStatus:
      description: >-
        The friendly status of a payment. This is a derived status that provides
        a human-readable summary of the payment state, combining the underlying
        status and substatus fields.
      enum:
        - succeeded
        - pending
        - failed
        - past_due
        - canceled
        - price_too_low
        - uncollectible
        - refunded
        - auto_refunded
        - partially_refunded
        - dispute_warning
        - dispute_needs_response
        - dispute_warning_needs_response
        - resolution_needs_response
        - dispute_under_review
        - dispute_warning_under_review
        - resolution_under_review
        - dispute_won
        - dispute_warning_closed
        - resolution_won
        - dispute_lost
        - dispute_closed
        - resolution_lost
        - drafted
        - incomplete
        - unresolved
        - open_dispute
        - open_resolution
      type: string
    ReceiptTaxBehaviors:
      description: >-
        The type of tax inclusivity applied to the receipt, for determining
        whether the tax is included in the final price, or paid on top.
      enum:
        - exclusive
        - inclusive
        - unspecified
        - unable_to_collect
      type: string
  securitySchemes:
    bearerAuth:
      bearerFormat: auth-scheme
      description: >-
        An Account API key, account-scoped JWT, App API key, or user OAuth
        token. Prepend the key or token with `Bearer`, for example `Bearer
        ***************************`.
      scheme: bearer
      type: http

````