Skip to content
Gaurav TiwariDocs

Connect Stripe

Updated October 22, 2026

Stripe is the simplest way to take card payments for bookings, and it’s built into Core Bookings with no extra plugin. Connect it once and you can charge full prices or deposits, collect remaining balances, sell session packs, and bill memberships.

You need three things from your Stripe account: a secret key, a publishable key, and a webhook signing secret. Start in test mode so you can run a full booking without moving real money.

Add Your Keys

  1. Go to Bookings → Settings → Payments.
  2. Paste your secret API key into Stripe secret key. Use a test-mode key while you check your setup.
  3. Paste the publishable key from the same mode into Stripe publishable key. It starts with pk_test_ or pk_live_. Only embedded payment needs it, but there’s no harm saving it now.
  4. Leave the page open. You’ll need the Webhook address in the next step.

The secret key and signing secret are stored encrypted and aren’t shown again after you save.

Add the Webhook

The webhook is how Stripe tells your site that a payment or refund changed. Without it, bookings stay on hold and never confirm.

  1. Copy the Webhook address from the Payments screen. It looks like https://example.com/wp-json/core-bookings/v1/webhooks/stripe.
  2. In Stripe, add a webhook destination with that address.
  3. Select the events listed under Events to enable in Stripe (below).
  4. Copy the destination’s signing secret into Webhook signing secret and click Save payment settings.
checkout.session.completed
checkout.session.expired
checkout.session.async_payment_succeeded
payment_intent.succeeded
payment_intent.payment_failed
payment_intent.canceled
refund.updated
refund.failed
charge.refunded

If you sell memberships through Stripe Billing, add invoice.paid, invoice.payment_failed, customer.subscription.updated and customer.subscription.deleted to the same destination. See session packs and memberships.

Hosted or Embedded

Each service picks one of two Stripe methods under Payment method:

Stripe hosted CheckoutStripe embedded payment
Where the customer paysStripe’s checkout page, then back to their booking pageA card form inside the booking page, with a “Pay now” button showing the amount
Keys neededSecret key and webhook secretAll three, including the publishable key
Payment typesCardCard
Remaining balanceStripe hosted CheckoutStripe hosted Checkout

Pick hosted if you want the least to go wrong. Pick embedded if keeping customers on your site matters more. Session packs and memberships always use Stripe’s hosted pages.

Test Before You Go Live

Saving the keys doesn’t check them or take a payment. Prove the setup works:

  1. With test keys saved, set a service to a Stripe method and book it from the front end.
  2. Pay with one of Stripe’s test cards.
  3. Check that the booking turns Confirmed and Paid in Bookings → Appointments.
  4. Open Bookings → Settings → Setup checks. The Stripe webhook section shows signed events your site accepted, and warns if the address isn’t HTTPS or if your publishable and secret keys are from different modes.
  5. Swap in your live keys and live webhook secret, and add the same webhook in live mode.

Good to Know

  • A booking waiting for Stripe holds its time for about 32 minutes. The Stripe checkout closes a minute before the hold ends, so a customer can’t pay for a time that’s already been released.
  • Set up HTTPS on your site before you take live payments. Setup checks flags a webhook address that isn’t HTTPS.
  • Stripe services can’t take bookings until the secret key and webhook secret are saved. Customers see “Online payment is not configured. Please contact the business.”
  • Webhook events that fail are retried automatically and land in Bookings → Settings → Operations for review if they keep failing.
  • Issue refunds from the appointment. A refund made in the Stripe dashboard is still picked up, but one on a payment shared by a recurring series needs manual review. See refunds and payment review.

For an overview of every method, see Choose How Customers Pay.

Share

Was this helpful?

Still stuck? Open a support ticket