Files
calendar/docs/self-hosting/apps/install-apps/stripe.mdx
T
Steven AdgerandGitHub 97bdf837a9 Include setup_intent events in webhook (#24805)
The setup_intent webhook is needed for held payments / no-show fees to work. 

If it is not included, a booking gets stuck saying "Pending payment" and "Unconfirmed" despite successfully submitting the card info. After including it, the booking status will successfully change to "Card held".

See:
https://github.com/calcom/cal.com/blob/817e20f11e3a75ec0bc62535a77c618bd27eaaf4/packages/features/ee/payments/api/webhook.ts#L323

https://cal.com/blog/cal-com-s-held-payments-a-useful-tool-for-organizations-offering-free-consultatio
2025-11-03 14:16:06 +00:00

39 lines
1.6 KiB
Plaintext

---
title: "Stripe"
---
### Setting up Stripe
<Steps>
<Step title="Create or log into a Stripe account">
Go to Stripe and either create a new account or log into an existing one. For testing, activate the Test-Mode toggle in the top right of the Stripe dashboard.
</Step>
<Step title="Save API keys">
Open [Stripe API Keys](https://dashboard.stripe.com/apikeys), then save the token starting with `pk_...` to `NEXT_PUBLIC_STRIPE_PUBLIC_KEY` and `sk_...` to `STRIPE_PRIVATE_KEY` in the `.env` file.
</Step>
<Step title="Activate OAuth for Standard Accounts">
Go to [Stripe Connect Settings](https://dashboard.stripe.com/settings/connect) and activate OAuth for Standard Accounts.
</Step>
<Step title="Add the redirect URL">
Add the following redirect URL, replacing `<Cal.com URL>` with your application's URL:
```
<Cal.com URL>/api/integrations/stripepayment/callback
```
</Step>
<Step title="Save the Stripe Client ID">
Copy your client ID (`ca_...`) to `STRIPE_CLIENT_ID` in the `.env` file.
</Step>
<Step title="Set up a Stripe webhook">
Open [Stripe Webhooks](https://dashboard.stripe.com/webhooks) and add:
```
<Cal.com URL>/api/integrations/stripepayment/webhook
```
as the webhook for connected applications.
</Step>
<Step title="Select webhook events">
Select all `payment_intent` and `setup_intent` events for the webhook.
</Step>
<Step title="Save the webhook secret">
Copy the webhook secret (`whsec_...`) to `STRIPE_WEBHOOK_SECRET` in the `.env` file.
</Step>
</Steps>