Payment Requires action
Sent when the bank asks the buyer to verify an off-session charge, such as a subscription renewal or a saved-card payment your server made. data.recovery_url is the Whop link where the buyer signs in and completes 3D Secure; the event is only sent while that link exists, so it is null only when you lack member:basic:read. Then handle payment.succeeded or payment.failed for the outcome.
Required permissions:
- payment:basic:read
- 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
- webhook_receive:payments
Headers
A unique identifier for this webhook request
The signature of the webhook request with the webhook version prepended
The timestamp in seconds since the Unix epoch that the webhook was sent at on the server
Payload
Example payload
{
"account_id": "biz_xxxxxxxxxxxxxx",
"api_version": "v1",
"api_version_date": "2026-07-20",
"data": {
"account_id": "biz_xxxxxxxxxxxxxx",
"amount_after_fees": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"billing_address": {
"city": "Austin",
"country": "US",
"line1": "1114 Bouldin Ave",
"line2": "Unit B",
"name": "Dana Whitfield",
"postal_code": "78704",
"state": "TX"
},
"billing_reason": "subscription_create",
"client_secret": "pay_xxxxxxxxxxxxxx_secret_vdefault_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"created_at": "2026-01-01T12:00:00.000Z",
"currency": "usd",
"customer_email": "marcus@shinetime.example",
"customer_phone": "+xxxxxxxxxxx",
"decline_code": "insufficient_funds",
"holds": [
{
"amount": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"type": "reserve"
}
],
"id": "pay_xxxxxxxxxxxxxx",
"line_items": [
{
"id": "li_xxxxxxxxxxxxxx",
"label": "Ceramic Coating Package",
"plan_id": "plan_xxxxxxxxxxxxxx",
"plan_title": "Ceramic Coating — Full Vehicle",
"product_id": "prod_xxxxxxxxxxxxxx",
"product_title": "Ceramic Coating Package",
"quantity": 1,
"subtotal": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
}
}
],
"member_id": "mber_xxxxxxxxxxxxxx",
"membership_id": "mem_xxxxxxxxxxxxxx",
"metadata": {
"order_ref": "SHINE-4417"
},
"paid_at": "2026-01-01T12:00:00.000Z",
"payment_instrument": {
"card": {
"brand": "visa",
"exp_month": 10,
"exp_year": 2031,
"issuer_identification_number": "41111111",
"last4": "4242"
},
"display_name": "Visa •••• 4242",
"icons": {
"card": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
}
},
"square": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
}
}
},
"payment_method_type": "card"
},
"payment_method_id": "payt_xxxxxxxxxxxxxx",
"payment_method_type": "acss_debit",
"payment_rule_matches": [
{
"action": "allow"
}
],
"plan_id": "plan_xxxxxxxxxxxxxx",
"presentment_total": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"product_id": "prod_xxxxxxxxxxxxxx",
"refunded_amount": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"retryable": true,
"shipping_address": {
"city": "Austin",
"country": "US",
"line1": "1114 Bouldin Ave",
"line2": "Unit B",
"name": "Dana Whitfield",
"postal_code": "78704",
"state": "TX"
},
"status": "draft",
"substatus": "succeeded",
"subtotal": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"tax_amount": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"tax_behavior": "exclusive",
"tax_refunded_amount": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"total": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"updated_at": "2026-01-01T12:00:00.000Z",
"usd_total": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"user": {
"id": "user_xxxxxxxxxxxxxx",
"name": "Dana Whitfield",
"profile_picture": {
"url": "https://ui-avatars.com/api/"
},
"username": "danawhitfield"
},
"verification_checks": {
"address_line1": "PASS",
"authorization_code": "A1B2C3",
"card_holder_name": "PASS",
"card_security_code": "PASS",
"zip_code": "PASS"
}
},
"id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": "2025-01-01T00:00:00.000Z",
"type": "payment.requires_action"
}Response
Return a 200 status to indicate that the data was received successfully
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.