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

Mis à jour le 17 juillet 2026

Your instance, your Stripe platform

Meeting payments are off by default on self-hosted instances. When you turn them on, your instance becomes its own Stripe Connect platform: hosts connect their own Stripe accounts, attendees pay when they book, and the money lands directly in the host's Stripe balance.

  • Direct charges: funds go straight to the host's connected account, and your platform never holds them
  • No platform cut unless you set an optional application fee, in basis points
  • Setup takes one webhook endpoint and three environment variables, plus an optional fee

1 Register your Stripe platform

  1. Create a Stripe account for your instance (or use an existing one) and complete 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 eight events:

checkout.session.completed
checkout.session.async_payment_succeeded
checkout.session.async_payment_failed
checkout.session.expired
charge.refunded
charge.dispute.created
charge.dispute.closed
account.updated

After creating the endpoint, reveal and copy its signing secret (whsec_…). You 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. Matching the versions 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_...
STRIPE_CONNECT_WEBHOOK_SECRET=whsec_...
MEETING_PAYMENTS_ENABLED=true
MEETING_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. Shows the payments page under Dashboard → Integrations → Payments and the payment toggle on each meeting type. Hosts' Stripe accounts are created in the country set by MEETING_PAYMENTS_DEFAULT_COUNTRY (a two-letter code such as gb), which defaults to Switzerland (ch) when unset. Set it before the first host connects: Stripe does not let an account change country later.

Default: false  ·  Example: true

MEETING_PAYMENTS_APPLICATION_FEE_BP Optional

Optional platform fee in basis points (100 = 1%), taken from each charge. Accepts 0 to 10000 and defaults to 0, so you take no cut unless you set one.

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.
  • Turn on Require payment for this meeting type on a meeting 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

Upgrading Tymeslot never rotates or invalidates your webhook signing secrets: they belong to the endpoints you created in the Stripe dashboard, and Tymeslot only reads them from the environment. You do not need a new endpoint or secret after an upgrade, but check this page's event list in case a release adds one.

The Stripe API version Tymeslot pins may advance between releases (version 1.4.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 payments are on, each host connects their own Stripe account from Dashboard → Integrations → Payments, picks a currency, and turns on payment for each meeting 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.