Skip to main content
POST
JavaScript

Authorizations

Authorization
string
header
required

An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.

Path Parameters

id
string
required

The unique identifier of the payment to void.

Example:

"pay_xxxxxxxxxxxxxx"

Response

A successful response

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

amount_after_fees
number
required

How much the payment is for after fees

Example:

6.9

application_fee
object | null
required

The application fee charged on this payment.

auto_refunded
boolean
required

Whether this payment was auto refunded or not

billing_address
object | null
required

The address of the user who made the payment.

billing_reason
enum<string> | 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
card_brand
enum<string> | 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
card_exp_month
integer | null
required

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

card_exp_year
integer | null
required

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

card_last4
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"

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

Example:

"ch_xxxxxxxxxxxxxxx"

company
object | null
required

The company for the payment.

created_at
string<date-time>
required

The datetime the payment was created.

Example:

"2023-12-01T05:00:00.401Z"

currency
enum<string>
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
customer_phone
string | null
required

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.

decline_code
enum<string> | null
required

The reason the payment was declined. Null if the payment did not fail.

Available options:
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
dispute_alerted_at
string<date-time> | null
required

When an alert came in that this transaction will be disputed

Example:

"2023-12-01T05:00:00.401Z"

disputes
object[] | null
required

The disputes attached to this payment. Null if the actor in context does not have the payment:dispute:read permission.

failure_message
string | null
required

If the payment failed, the reason for the failure.

financing_installments_count
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

financing_transactions
object[]
required

The financing transactions attached to this payment. Present if the payment is a financing payment (e.g. Splitit, Klarna, etc.).

id
string
required

The unique identifier for the payment.

Example:

"pay_xxxxxxxxxxxxxx"

last_payment_attempt
string<date-time> | null
required

The time of the last payment attempt.

Example:

"2023-12-01T05:00:00.401Z"

member
object | null
required

The member attached to this payment.

membership
object | null
required

The membership attached to this payment.

metadata
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

needs_tracking
boolean | null
required

Whether this payment is holding funds until the order ships and has no tracking number yet.

next_payment_attempt
string<date-time> | null
required

The time of the next schedule payment retry.

Example:

"2023-12-01T05:00:00.401Z"

paid_at
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"

payment_method
object | null
required

The tokenized payment method reference used for this payment. Null if no token was used.

payment_method_type
enum<string> | 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,
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,
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
payments_failed
integer | null
required

The number of failed payment attempts for the payment.

Example:

42

plan
object | null
required

The plan attached to this payment.

product
object | null
required

The product this payment was made for

promo_code
object | null
required

The promo code used for this payment.

refundable
boolean
required

True only for payments that are paid, have not been fully refunded, and were processed by a payment processor that allows refunds.

refunded_amount
number | null
required

The payment refund amount(if applicable).

Example:

6.9

refunded_at
string<date-time> | null
required

When the payment was refunded (if applicable).

Example:

"2023-12-01T05:00:00.401Z"

refunds
object[]
required

The refunds issued against this payment, newest first, including failed and canceled refund attempts. Limited to the 100 most recent.

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

retryable
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), 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.

risk_score
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

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

settlement_amount
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

settlement_currency
enum<string>
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
settlement_exchange_rate
number | null
required

Deprecated. Always returns null.

Example:

6.9

settlement_time_at
string<date-time> | null
required

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"

shipment
object | null
required

The shipment attached to this payment.

shipping_address
object | null
required

The shipping address provided by the customer for physical goods. Null if no shipping address was collected.

status
enum<string> | null
required

The current lifecycle state of this payment (e.g., 'draft', 'open', 'paid', 'void').

Available options:
draft,
open,
paid,
pending,
uncollectible,
unresolved,
void
substatus
enum<string>
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
subtotal
number | null
required

The subtotal to show to the creator (excluding buyer fees).

Example:

6.9

tax_amount
number | null
required

The calculated amount of the sales/VAT tax (if applicable).

Example:

6.9

tax_behavior
enum<string> | 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
tax_refunded_amount
number | null
required

The amount of tax that has been refunded (if applicable).

Example:

6.9

three_ds_verified
boolean
required

Whether 3D Secure authentication was completed for this payment.

total
number | null
required

The total to show to the creator (excluding buyer fees).

Example:

6.9

updated_at
string<date-time>
required

The datetime the payment was last updated.

Example:

"2023-12-01T05:00:00.401Z"

usd_total
number | null
required

The total in USD to show to the creator (excluding buyer fees).

Example:

6.9

user
object | null
required

The user that made this payment.

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