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

# Void payment

> Void a payment that has not yet been settled. Voiding cancels the payment before it is captured by the payment processor.

Required permissions:
 - `payment:manage`
 - `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/{id}/void
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/{id}/void:
    post:
      tags:
        - Payments
      summary: Void payment
      description: >-
        Void a payment that has not yet been settled. Voiding cancels the
        payment before it is captured by the payment processor.


        Required permissions:
         - `payment:manage`
         - `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: voidPayment
      parameters:
        - description: The unique identifier of the payment to void.
          in: path
          name: id
          required: true
          schema:
            example: pay_xxxxxxxxxxxxxx
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
          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:manage
            - 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.void('pay_xxxxxxxxxxxxxx');

            console.log(payment.id);
components:
  schemas:
    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
    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
    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

````