---
title: "SetupIntent Requires action"
method: POST
path: "setup_intent.requires_action"
tags: ["Setup intents"]
---

# SetupIntent Requires action

`POST setup_intent.requires_action` (webhook)

Sent when a setup intent is requires action

Required permissions:
 - `payment:setup_intent:read`
 - `member:basic:read`
 - `member:email:read`
 - `webhook_receive:setup_intents`

## Headers

- `webhook-id` string, required — A unique identifier for this webhook request
- `webhook-signature` string, required — The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required — The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `api_version` 'v1', required — The API version for this webhook
  - `api_version_date` string, nullable, required — The dated API version (Api-Version-Date) the payload is serialized to
  - `company_id` string, nullable — The account ID that this webhook event is associated with
  - `data` SetupIntent, required — A setup intent allows a user to save a payment method for future use without making an immediate purchase.
    - `checkout_configuration` object, nullable, required — The checkout session configuration associated with this setup intent. Null if no checkout session was used.
      - `id` string, required — The unique identifier for the checkout session.
    - `company` object, nullable, required — The company that initiated this setup intent. Null if the company has been deleted.
      - `id` string, required — The unique identifier for the company.
    - `created_at` string, date-time, required — The datetime the setup intent was created.
    - `error_message` string, nullable, required — A human-readable error message explaining why the setup intent failed. Null if no error occurred.
    - `id` string, required — The unique identifier for the setup intent.
    - `member` object, nullable, required — The company member associated with this setup intent. Null if the user is not a member.
      - `id` string, required — The unique identifier for the company member.
      - `user` object, nullable, required — The user for this member, if any.
        - `email` string, nullable, required — The digital mailing address of the user.
        - `id` string, required — The unique identifier for the company member user.
        - `name` string, nullable, required — The user's full name.
        - `username` string, required — The whop username.
    - `metadata` object, nullable, required — Custom key-value pairs attached to this setup intent. Null if no metadata was provided.
    - `payment_method` object, nullable, required — The saved payment method created by this setup intent. Null if the setup has not completed successfully.
      - `card` object, nullable, required — The card data associated with the payment method, if its a debit or credit card.
        - `brand` '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', required — Possible card brands that a payment token can have
        - `exp_month` integer, nullable, required — The two-digit expiration month of the card (1-12). Null if not available.
        - `exp_year` integer, nullable, required — The two-digit expiration year of the card (e.g., 27 for 2027). Null if not available.
        - `last4` string, nullable, required — The last four digits of the card number. Null if not available.
      - `created_at` string, date-time, required — The datetime the payment token was created.
      - `id` string, required — The unique identifier for the payment token.
      - `mailing_address` object, nullable, required — The mailing address associated with the payment method's user
        - `city` string, nullable, required — The city of the address.
        - `country` string, nullable, required — The country of the address.
        - `line1` string, nullable, required — The line 1 of the address.
        - `line2` string, nullable, required — The line 2 of the address.
        - `name` string, nullable, required — The name of the customer.
        - `postal_code` string, nullable, required — The postal code of the address.
        - `state` string, nullable, required — The state of the address.
      - `payment_method_type` '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', required — The different types of payment methods that can be used.
    - `status` 'processing' | 'succeeded' | 'canceled' | 'requires_action', required — The status of the setup intent.
    - `three_ds_verified` boolean, required — Whether 3D Secure authentication was completed when this payment method was set up.
  - `id` string, required — A unique ID for every single webhook request
  - `timestamp` string, date-time, required — The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'setup_intent.requires_action', required — The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/db0883548bc5/schema)
