Skip to content
Gaurav TiwariDocs

Connect Stripe

Updated October 29, 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.

The quickest way is Create the webhook for me under Check the Stripe connection, after you save the secret key. Core Bookings adds the webhook in Stripe with every event below and saves its signing secret. Stripe only delivers to a public HTTPS address, so this button stays hidden on a local site. To add it yourself:

  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
checkout.session.async_payment_failed
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 typesCards, Apple Pay and Google Pay, or every method in your Stripe DashboardCards, or every method in your Stripe Dashboard
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.

Choose Payment Methods

Payment methods on the Payments screen decides what customers can pay with. It applies to bookings, remaining balances, session packs and gift cards.

  • Cards, Apple Pay and Google Pay is the default. Stripe shows the wallets on devices that support them.
  • Every method switched on in the Stripe Dashboard adds whatever you turn on under Settings → Payment methods in Stripe, such as Link, UPI, iDEAL or bank debits. Stripe offers each one only where it supports the currency and the customer’s country.

Some bank methods take days to settle. Those bookings confirm when Stripe reports the payment. If the time was taken in the meantime, the booking goes to payment review, and a payment that fails releases the time. Saved cards for fees and membership subscriptions always use cards.

Test Before You Go Live

Click Check connection to see which Stripe account and mode the secret key belongs to. It doesn’t take a payment, so prove the full setup works too:

  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. The Payments screen also shows when the last Stripe webhook arrived.
  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