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

# Payment

> A payment represents a completed or attempted charge. Payments track the amount, status, currency, and payment method used.

<ResponseExample>
  ```json Example theme={null}
  {
  	"amount_after_fees": 6.9,
  	"application_fee": {
  		"amount": 6.9,
  		"amount_captured": 6.9,
  		"amount_refunded": 6.9,
  		"created_at": "2023-12-01T05:00:00.401Z",
  		"currency": "usd",
  		"id": "apfee_xxxxxxxxxxxx"
  	},
  	"auto_refunded": true,
  	"billing_address": {
  		"city": "<string>",
  		"country": "<string>",
  		"line1": "<string>",
  		"line2": "<string>",
  		"name": "<string>",
  		"postal_code": "<string>",
  		"state": "<string>"
  	},
  	"billing_reason": "subscription_create",
  	"card_brand": "mastercard",
  	"card_last4": "4242",
  	"checkout_configuration_id": "<string>",
  	"company": {
  		"id": "biz_xxxxxxxxxxxxxx",
  		"route": "<string>",
  		"title": "<string>"
  	},
  	"created_at": "2023-12-01T05:00:00.401Z",
  	"currency": "usd",
  	"dispute_alerted_at": "2023-12-01T05:00:00.401Z",
  	"disputes": [
  		{
  			"amount": 6.9,
  			"currency": "usd",
  			"editable": true,
  			"id": "dspt_xxxxxxxxxxxxx",
  			"needs_response_by": "2023-12-01T05:00:00.401Z",
  			"notes": "Customer used the product for 3 months before disputing.",
  			"reason": "Product Not Received",
  			"status": "warning_needs_response"
  		}
  	],
  	"failure_message": "<string>",
  	"financing_installments_count": 42,
  	"financing_transactions": [
  		{
  			"amount": 6.9,
  			"created_at": "2023-12-01T05:00:00.401Z",
  			"id": "ptx_xxxxxxxxxxxxxx",
  			"status": "succeeded",
  			"transaction_type": "purchase"
  		}
  	],
  	"id": "pay_xxxxxxxxxxxxxx",
  	"last_payment_attempt": "2023-12-01T05:00:00.401Z",
  	"member": {
  		"id": "<string>",
  		"phone": "<string>"
  	},
  	"membership": {
  		"id": "mem_xxxxxxxxxxxxxx",
  		"phone_number": "<string>",
  		"status": "trialing"
  	},
  	"metadata": {},
  	"next_payment_attempt": "2023-12-01T05:00:00.401Z",
  	"paid_at": "2023-12-01T05:00:00.401Z",
  	"payment_method": {
  		"card": {
  			"brand": "mastercard",
  			"exp_month": 42,
  			"exp_year": 42,
  			"last4": "4242"
  		},
  		"created_at": "2023-12-01T05:00:00.401Z",
  		"id": "payt_xxxxxxxxxxxxx",
  		"payment_method_type": "acss_debit"
  	},
  	"payment_method_type": "acss_debit",
  	"payments_failed": 42,
  	"plan": {
  		"id": "plan_xxxxxxxxxxxxx",
  		"internal_notes": "<string>",
  		"metadata": {}
  	},
  	"product": {
  		"id": "prod_xxxxxxxxxxxxx",
  		"metadata": {},
  		"route": "pickaxe-analytics",
  		"title": "Pickaxe Analytics"
  	},
  	"promo_code": {
  		"amount_off": 6.9,
  		"base_currency": "usd",
  		"code": "<string>",
  		"id": "promo_xxxxxxxxxxxx",
  		"number_of_intervals": 42,
  		"promo_type": "percentage"
  	},
  	"refundable": true,
  	"refunded_amount": 6.9,
  	"refunded_at": "2023-12-01T05:00:00.401Z",
  	"resolutions": [
  		{
  			"customer_appealed": true,
  			"customer_response_actions": ["respond"],
  			"due_date": "2023-12-01T05:00:00.401Z",
  			"id": "reso_xxxxxxxxxxxxx",
  			"issue": "forgot_to_cancel",
  			"merchant_appealed": true,
  			"merchant_response_actions": ["accept"],
  			"platform_response_actions": ["request_buyer_info"],
  			"status": "merchant_response_needed"
  		}
  	],
  	"retryable": true,
  	"risk_score": 42,
  	"risk_signals": {},
  	"settlement_amount": 6.9,
  	"settlement_currency": "usd",
  	"settlement_exchange_rate": 6.9,
  	"status": "draft",
  	"substatus": "succeeded",
  	"subtotal": 6.9,
  	"tax_amount": 6.9,
  	"tax_behavior": "exclusive",
  	"tax_refunded_amount": 6.9,
  	"three_ds_verified": true,
  	"total": 6.9,
  	"updated_at": "2023-12-01T05:00:00.401Z",
  	"usd_total": 6.9,
  	"user": {
  		"email": "john.doe@example.com",
  		"id": "user_xxxxxxxxxxxxx",
  		"name": "John Doe",
  		"username": "johndoe42"
  	},
  	"voidable": true
  }
  ```
</ResponseExample>

<ResponseField name="amount_after_fees" type="number" required>
  How much the payment is for after fees

  Example: `6.9`
</ResponseField>

<ResponseField name="application_fee" type="object | null" required>
  The application fee charged on this payment.

  <Expandable title="child attributes">
    <ResponseField name="amount" type="number" required>
      The application fee amount.

      Example: `6.9`
    </ResponseField>

    <ResponseField name="amount_captured" type="number" required>
      The amount of the application fee that has been captured.

      Example: `6.9`
    </ResponseField>

    <ResponseField name="amount_refunded" type="number" required>
      The amount of the application fee that has been refunded.

      Example: `6.9`
    </ResponseField>

    <ResponseField name="created_at" type="string<date-time>" required>
      The datetime the application fee was created.

      Example: `2023-12-01T05:00:00.401Z`
    </ResponseField>

    <ResponseField name="currency" type="Currencies" required>
      The currency of the application fee.

      Available options: `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`
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the application fee.

      Example: `apfee_xxxxxxxxxxxx`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="auto_refunded" type="boolean" required>
  Whether this payment was auto refunded or not
</ResponseField>

<ResponseField name="billing_address" type="object | null" required>
  The address of the user who made the payment.

  <Expandable title="child attributes">
    <ResponseField name="city" type="string | null" required>
      The city of the address.
    </ResponseField>

    <ResponseField name="country" type="string | null" required>
      The country of the address.
    </ResponseField>

    <ResponseField name="line1" type="string | null" required>
      The line 1 of the address.
    </ResponseField>

    <ResponseField name="line2" type="string | null" required>
      The line 2 of the address.
    </ResponseField>

    <ResponseField name="name" type="string | null" required>
      The name of the customer.
    </ResponseField>

    <ResponseField name="postal_code" type="string | null" required>
      The postal code of the address.
    </ResponseField>

    <ResponseField name="state" type="string | null" required>
      The state of the address.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="billing_reason" type="BillingReasons | null" required>
  The machine-readable reason this charge was created, such as initial subscription purchase, renewal cycle, or one-time payment.

  Available options: `subscription_create`, `subscription_cycle`, `subscription_update`, `one_time`, `manual`, `subscription`
</ResponseField>

<ResponseField name="card_brand" type="CardBrands | null" required>
  Card network reported by the processor (e.g., 'visa', 'mastercard', 'amex'). Present only when the payment method type is 'card'.

  Available options: `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`
</ResponseField>

<ResponseField name="card_last4" type="string | null" required>
  The last four digits of the card used to make this payment. Null if the payment was not made with a card.

  Example: `4242`
</ResponseField>

<ResponseField name="checkout_configuration_id" type="string | null" required>
  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.
</ResponseField>

<ResponseField name="company" type="object | null" required>
  The company for the payment.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string" required>
      The unique identifier for the company.

      Example: `biz_xxxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="route" type="string" required>
      The slug/route of the company on the Whop site.
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The written name of the company.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created_at" type="string<date-time>" required>
  The datetime the payment was created.

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="currency" type="Currencies" required>
  The three-letter ISO currency code for this payment (e.g., 'usd', 'eur').

  Available options: `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`
</ResponseField>

<ResponseField name="dispute_alerted_at" type="string<date-time> | null" required>
  When an alert came in that this transaction will be disputed

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="disputes" type="array<object> | null" required>
  The disputes attached to this payment. Null if the actor in context does not have the payment:dispute:read permission.

  <Expandable title="child attributes">
    <ResponseField name="amount" type="number" required>
      The disputed amount in the specified currency, formatted as a decimal.

      Example: `6.9`
    </ResponseField>

    <ResponseField name="currency" type="Currencies" required>
      The three-letter ISO currency code for the disputed amount.

      Available options: `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`
    </ResponseField>

    <ResponseField name="editable" type="boolean | null" required>
      Whether the dispute evidence can still be edited and submitted.
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the dispute.

      Example: `dspt_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="needs_response_by" type="string<date-time> | null" required>
      The deadline by which dispute evidence must be submitted. Null if no response deadline is set.

      Example: `2023-12-01T05:00:00.401Z`
    </ResponseField>

    <ResponseField name="notes" type="string | null" required>
      Additional freeform notes submitted by the company as part of the dispute evidence.

      Example: `Customer used the product for 3 months before disputing.`
    </ResponseField>

    <ResponseField name="reason" type="string | null" required>
      A human-readable reason for the dispute.

      Example: `Product Not Received`
    </ResponseField>

    <ResponseField name="status" type="DisputeStatuses" required>
      The current status of the dispute lifecycle, such as needs\_response, under\_review, won, or lost.

      Available options: `warning_needs_response`, `warning_under_review`, `warning_closed`, `needs_response`, `under_review`, `won`, `lost`, `closed`, `other`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="failure_message" type="string | null" required>
  If the payment failed, the reason for the failure.
</ResponseField>

<ResponseField name="financing_installments_count" type="integer | null" required>
  The number of financing installments for the payment. Present if the payment is a financing payment (e.g. Splitit, Klarna, etc.).

  Example: `42`
</ResponseField>

<ResponseField name="financing_transactions" type="array<object>" required>
  The financing transactions attached to this payment. Present if the payment is a financing payment (e.g. Splitit, Klarna, etc.).

  <Expandable title="child attributes">
    <ResponseField name="amount" type="number" required>
      The amount of the payment transaction.

      Example: `6.9`
    </ResponseField>

    <ResponseField name="created_at" type="string<date-time>" required>
      The date and time the payment transaction was created.

      Example: `2023-12-01T05:00:00.401Z`
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the payment transaction.

      Example: `ptx_xxxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="status" type="PaymentTransactionStatuses" required>
      The status of the payment transaction.

      Available options: `succeeded`, `declined`, `error`, `pending`, `created`, `expired`, `won`, `rejected`, `lost`, `prevented`, `canceled`
    </ResponseField>

    <ResponseField name="transaction_type" type="PaymentTransactionTypes" required>
      The type of the payment transaction.

      Available options: `purchase`, `authorize`, `capture`, `refund`, `canceled`, `verify`, `chargeback`, `pre_chargeback`, `three_d_secure`, `fraud_screening`, `authorization`, `installment`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="id" type="string" required>
  The unique identifier for the payment.

  Example: `pay_xxxxxxxxxxxxxx`
</ResponseField>

<ResponseField name="last_payment_attempt" type="string<date-time> | null" required>
  The time of the last payment attempt.

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="member" type="object | null" required>
  The member attached to this payment.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string" required>
      The unique identifier for the company member.
    </ResponseField>

    <ResponseField name="phone" type="string | null" required>
      The phone number for the member, if available.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="membership" type="object | null" required>
  The membership attached to this payment.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string" required>
      The unique identifier for the membership.

      Example: `mem_xxxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="phone_number" type="string | null" required>
      The phone number associated with this membership.
    </ResponseField>

    <ResponseField name="status" type="MembershipStatus" required>
      The state of the membership.

      Available options: `trialing`, `active`, `past_due`, `completed`, `canceled`, `expired`, `unresolved`, `drafted`, `canceling`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="metadata" type="object | null" required>
  The custom metadata stored on this payment. This will be copied over to the
  checkout configuration for which this payment was made
</ResponseField>

<ResponseField name="next_payment_attempt" type="string<date-time> | null" required>
  The time of the next schedule payment retry.

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="paid_at" type="string<date-time> | null" required>
  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`
</ResponseField>

<ResponseField name="payment_method" type="object | null" required>
  The tokenized payment method reference used for this payment. Null if no token was used.

  <Expandable title="child attributes">
    <ResponseField name="card" type="object | null" required>
      The card data associated with the payment method, if its a debit or credit card.

      <Expandable title="child attributes">
        <ResponseField name="brand" type="CardBrands | null" required>
          The card network (e.g., visa, mastercard, amex). Null if the brand could not be determined.

          Available options: `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`
        </ResponseField>

        <ResponseField name="exp_month" type="integer | null" required>
          The two-digit expiration month of the card (1-12). Null if not available.

          Example: `42`
        </ResponseField>

        <ResponseField name="exp_year" type="integer | null" required>
          The two-digit expiration year of the card (e.g., 27 for 2027). Null if not available.

          Example: `42`
        </ResponseField>

        <ResponseField name="last4" type="string | null" required>
          The last four digits of the card number. Null if not available.

          Example: `4242`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="created_at" type="string<date-time>" required>
      The datetime the payment token was created.

      Example: `2023-12-01T05:00:00.401Z`
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the payment token.

      Example: `payt_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="payment_method_type" type="PaymentMethodTypes" required>
      The payment method type of the payment method

      Available options: `acss_debit`, `affirm`, `afterpay_clearpay`, `alipay`, `alma`, `amazon_pay`, `apple`, `apple_pay`, `au_bank_transfer`, `au_becs_debit`, `bacs_debit`, `bancolombia`, `bancontact`, `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`, `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`, `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`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="payment_method_type" type="PaymentMethodTypes | null" required>
  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.

  Available options: `acss_debit`, `affirm`, `afterpay_clearpay`, `alipay`, `alma`, `amazon_pay`, `apple`, `apple_pay`, `au_bank_transfer`, `au_becs_debit`, `bacs_debit`, `bancolombia`, `bancontact`, `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`, `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`, `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`
</ResponseField>

<ResponseField name="payments_failed" type="integer | null" required>
  The number of failed payment attempts for the payment.

  Example: `42`
</ResponseField>

<ResponseField name="plan" type="object | null" required>
  The plan attached to this payment.

  <Expandable title="child attributes">
    <ResponseField name="id" type="string" required>
      The unique identifier for the plan.

      Example: `plan_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="internal_notes" type="string | null" required>
      A personal description or notes section for the business.
    </ResponseField>

    <ResponseField name="metadata" type="object | null" required>
      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.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="product" type="object | null" required>
  The product this payment was made for

  <Expandable title="child attributes">
    <ResponseField name="id" type="string" required>
      The unique identifier for the product.

      Example: `prod_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="metadata" type="object | null" required>
      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.
    </ResponseField>

    <ResponseField name="route" type="string" required>
      URL slug in the product's public link, e.g. `pickaxe-analytics` in whop.com/company/pickaxe-analytics.

      Example: `pickaxe-analytics`
    </ResponseField>

    <ResponseField name="title" type="string" required>
      The display name of the product shown to customers on the product page and in search results.

      Example: `Pickaxe Analytics`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="promo_code" type="object | null" required>
  The promo code used for this payment.

  <Expandable title="child attributes">
    <ResponseField name="amount_off" type="number" required>
      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`
    </ResponseField>

    <ResponseField name="base_currency" type="Currencies" required>
      The monetary currency of the promo code.

      Available options: `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`
    </ResponseField>

    <ResponseField name="code" type="string | null" required>
      The specific code used to apply the promo at checkout.
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the promo code.

      Example: `promo_xxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="number_of_intervals" type="integer | null" required>
      The number of months the promo is applied for.

      Example: `42`
    </ResponseField>

    <ResponseField name="promo_type" type="PromoTypes" required>
      The type (% or flat amount) of the promo.

      Available options: `percentage`, `flat_amount`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="refundable" type="boolean" required>
  True only for payments that are `paid`, have not been fully refunded, and were
  processed by a payment processor that allows refunds.
</ResponseField>

<ResponseField name="refunded_amount" type="number | null" required>
  The payment refund amount(if applicable).

  Example: `6.9`
</ResponseField>

<ResponseField name="refunded_at" type="string<date-time> | null" required>
  When the payment was refunded (if applicable).

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="resolutions" type="array<object> | null" required>
  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.

  <Expandable title="child attributes">
    <ResponseField name="customer_appealed" type="boolean" required>
      Whether the customer has filed an appeal after the initial resolution
      decision.
    </ResponseField>

    <ResponseField name="customer_response_actions" type="array<ResolutionCenterCaseCustomerResponses>" required>
      The list of actions currently available to the customer.

      Available options: `respond`, `appeal`, `withdraw`
    </ResponseField>

    <ResponseField name="due_date" type="string<date-time> | null" required>
      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`
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the resolution.

      Example: `reso_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="issue" type="ResolutionCenterCaseIssueTypes" required>
      The category of the dispute.

      Available options: `forgot_to_cancel`, `item_not_received`, `significantly_not_as_described`, `unauthorized_transaction`, `product_unacceptable`
    </ResponseField>

    <ResponseField name="merchant_appealed" type="boolean" required>
      Whether the merchant has filed an appeal after the initial resolution
      decision.
    </ResponseField>

    <ResponseField name="merchant_response_actions" type="array<ResolutionCenterCaseMerchantResponses>" required>
      The list of actions currently available to the merchant.

      Available options: `accept`, `deny`, `request_more_info`, `appeal`, `respond`
    </ResponseField>

    <ResponseField name="platform_response_actions" type="array<ResolutionCenterCasePlatformResponses>" required>
      The list of actions currently available to the Whop platform for moderating this resolution.

      Available options: `request_buyer_info`, `request_merchant_info`, `merchant_wins`, `merchant_refund`
    </ResponseField>

    <ResponseField name="status" type="ResolutionCenterCaseStatuses" required>
      The current status of the resolution case, indicating which party needs to respond or if the case is closed.

      Available options: `merchant_response_needed`, `customer_response_needed`, `merchant_info_needed`, `customer_info_needed`, `under_platform_review`, `customer_won`, `merchant_won`, `customer_withdrew`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="retryable" type="boolean" required>
  True when the payment status is `open` and its membership is in one of the
  retry-eligible states (`active`, `trialing`, `completed`, or `past_due`);
  otherwise false. Used to decide if Whop can attempt the charge again.
</ResponseField>

<ResponseField name="risk_score" type="integer | null" required>
  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`
</ResponseField>

<ResponseField name="risk_signals" type="object | null" required>
  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.
</ResponseField>

<ResponseField name="settlement_amount" type="number" required>
  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`
</ResponseField>

<ResponseField name="settlement_currency" type="Currencies" required>
  The three-letter ISO currency code for this payment (e.g., 'usd', 'eur').

  Available options: `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`
</ResponseField>

<ResponseField name="settlement_exchange_rate" type="number | null" required>
  Deprecated. Always returns null.

  Example: `6.9`
</ResponseField>

<ResponseField name="status" type="ReceiptStatus | null" required>
  The current lifecycle state of this payment (e.g., 'draft', 'open', 'paid', 'void').

  Available options: `draft`, `open`, `paid`, `pending`, `uncollectible`, `unresolved`, `void`
</ResponseField>

<ResponseField name="substatus" type="FriendlyReceiptStatus" required>
  The friendly status of the payment.

  Available options: `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`
</ResponseField>

<ResponseField name="subtotal" type="number | null" required>
  The subtotal to show to the creator (excluding buyer fees).

  Example: `6.9`
</ResponseField>

<ResponseField name="tax_amount" type="number | null" required>
  The calculated amount of the sales/VAT tax (if applicable).

  Example: `6.9`
</ResponseField>

<ResponseField name="tax_behavior" type="ReceiptTaxBehaviors | null" required>
  The type of tax inclusivity applied to the payment, for determining whether the tax is included in the final price, or paid on top.

  Available options: `exclusive`, `inclusive`, `unspecified`, `unable_to_collect`
</ResponseField>

<ResponseField name="tax_refunded_amount" type="number | null" required>
  The amount of tax that has been refunded (if applicable).

  Example: `6.9`
</ResponseField>

<ResponseField name="three_ds_verified" type="boolean" required>
  Whether 3D Secure authentication was completed for this payment.
</ResponseField>

<ResponseField name="total" type="number | null" required>
  The total to show to the creator (excluding buyer fees).

  Example: `6.9`
</ResponseField>

<ResponseField name="updated_at" type="string<date-time>" required>
  The datetime the payment was last updated.

  Example: `2023-12-01T05:00:00.401Z`
</ResponseField>

<ResponseField name="usd_total" type="number | null" required>
  The total in USD to show to the creator (excluding buyer fees).

  Example: `6.9`
</ResponseField>

<ResponseField name="user" type="object | null" required>
  The user that made this payment.

  <Expandable title="child attributes">
    <ResponseField name="email" type="string | null" required>
      The user's email address. Requires the member:email:read permission to access. Null if not authorized.

      Example: `john.doe@example.com`
    </ResponseField>

    <ResponseField name="id" type="string" required>
      The unique identifier for the user.

      Example: `user_xxxxxxxxxxxxx`
    </ResponseField>

    <ResponseField name="name" type="string | null" required>
      The user's display name shown on their public profile.

      Example: `John Doe`
    </ResponseField>

    <ResponseField name="username" type="string" required>
      The user's unique username shown on their public profile.

      Example: `johndoe42`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="voidable" type="boolean" required>
  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.
</ResponseField>
