Back to Overview

Stripe Payments Setup

Run meeting payments on your own Stripe platform. This guide covers registering as a Connect platform, creating the webhook endpoint with the right events and API version, and the environment variables that switch the feature on.

Luka Breitig — Software Engineer & AI Developer
Luka Breitig

Software Engineer & AI Developer

Your instance, your Stripe platform

Meeting payments are off by default on self-hosted instances. When you opt in, your instance acts as its own Stripe Connect platform: hosts connect their own Stripe accounts, attendees pay at booking time, and charges land directly in the host's Stripe balance.

  • Direct charges: funds go straight to the host's connected account, your platform never holds them
  • No platform cut unless you set one, via an optional application fee in basis points
  • One webhook endpoint and four environment variables are all the setup required

1 Register your Stripe platform

  1. Register a Stripe account for your instance (or use an existing one) and complete the account activation.
  2. Enable Stripe Connect on the account: your instance becomes the platform that hosts' Stripe accounts connect to.
  3. Copy the platform's secret key from Developers → API keys (sk_live_… or sk_test_… for test mode).

2 Create the Connect webhook endpoint

In the Stripe dashboard, create a webhook endpoint that listens to events on Connected accounts (not your own account: direct charges happen on the hosts' connected accounts). Point it at:

https://your-tymeslot-domain/webhooks/stripe/connect

Subscribe the endpoint to these six events:

checkout.session.completed\ncheckout.session.expired\ncharge.refunded\ncharge.dispute.created\ncharge.dispute.closed\naccount.updated

After creating the endpoint, reveal and copy its signing secret (whsec_…). You will set it as STRIPE_CONNECT_WEBHOOK_SECRET in the next step.

Which API version should the endpoint use?

Webhook payloads follow the API version configured on the endpoint in the Stripe dashboard. Tymeslot pins its own Stripe API calls to 2025-11-17.clover, so pick that version (or your account default, if newer) when creating the endpoint. Endpoints created on older API versions keep working: Tymeslot reads both the current and the pre-2025 payload shapes. Aligning the versions simply keeps webhook payloads and API responses consistent.

3 Set environment variables

Add the following variables to your deployment environment and restart:

STRIPE_SECRET_KEY=sk_live_...\nSTRIPE_CONNECT_WEBHOOK_SECRET=whsec_...\nMEETING_PAYMENTS_ENABLED=true\nMEETING_PAYMENTS_APPLICATION_FEE_BP=0
STRIPE_SECRET_KEY Required

Your platform's Stripe secret key. Required when meeting payments are enabled; the webhook secrets are only read when this is set.

Default: unset  ·  Example: sk_live_51...

STRIPE_CONNECT_WEBHOOK_SECRET Required

Signing secret of the Connect webhook endpoint from step 2. Without it, connected-account events cannot be verified and the webhook endpoint responds with an error.

Default: unset  ·  Example: whsec_...

MEETING_PAYMENTS_ENABLED Required

Opt-in switch. Exposes the payments dashboard under Dashboard → Integrations → Payments and the per-event-type payment toggle.

Default: false  ·  Example: true

MEETING_PAYMENTS_APPLICATION_FEE_BP Optional

Optional platform fee in basis points (100 = 1%), taken from each charge. Defaults to 0, so you never take a cut unless you opt in. Range 0 to 10000.

Default: 0  ·  Example: 100

Verify the setup

After restarting with the new variables, work through this list (Stripe test mode is fine for all of it):
  • Dashboard → Integrations → Payments shows the Connect Stripe button; connect a test host account and complete onboarding.
  • Enable Require payment on an event type, book it as an attendee, and pay with a Stripe test card.
  • The booking is confirmed after payment and the charge appears in the connected account's balance.
  • The webhook endpoint in the Stripe dashboard shows successful deliveries (HTTP 200) for the test events.

🔄 Upgrading Tymeslot

Tymeslot upgrades never rotate or invalidate your webhook signing secrets: secrets belong to the endpoints you created in the Stripe dashboard, and Tymeslot only reads them from the environment. No new endpoint or secret is needed when upgrading.

The Stripe API version Tymeslot pins may advance between releases (version 1.4 moved from 2022-11-15 to 2025-11-17.clover). Existing endpoints on older API versions keep working after such an upgrade; when convenient, update the endpoint's API version in the Stripe dashboard to match.

💳 How hosts use it

Once enabled, each host connects their own Stripe account from Dashboard → Integrations → Payments, picks a currency, and switches on payment per event type. The full host-facing walkthrough, including currencies, payouts, refunds and disputes, lives in the Meeting Payments guide .

🔗 Related Articles

Read Meeting Payments

Meeting Payments

Charge attendees through Stripe when they book a paid event type. Covers setup, currencies, payouts, refunds, cancellations, disputes, and fees.