CaliDiary is coming soon: a free booking plugin for WordPress, with Solo and Pro plans for payments and teams. See the plans
Product Your data stays on your websiteOnline payments and depositsInvoices and credit notes, built inWorks with the tools you already useBooking forms that ask the right questionsTeam sign-in, no dashboard accessAccessible to every customerSafe, signed updates All features
Booking kinds AppointmentsGroup bookingsRequests you approveFree bookingsSeveral services in one visitClasses and coursesEvents with ticketsRooms, desks and equipmentWaiting list
Industries Professional servicesClinics and healthSalons and beautyTraining, classes and coursesPet careHome and autoPublic sector and educationCreative and eventsCommunity, charities and volunteering All 51 industries
Compare CaliDiary vs AmeliaCaliDiary vs BooklyCaliDiary vs LatePointCaliDiary vs BookneticCaliDiary vs BookingPressCaliDiary vs Simply Schedule Appointments All comparisons
Pricing
Start free
Payments

Connect Stripe

Card payments go straight to your own Stripe account. CaliDiary never handles your money and takes no fee.

Plans
Plans: Solo, Pro
In the plugin
CaliDiary → Settings → Payments → Online payments

Solo and Pro plans. On the Free plan you see a preview of this in the plugin, with Start free Solo trial and See plans. Compare the plans.

When you need it

  • Clients should pay by card when they book, or pay a deposit.
  • You are moving from Stripe test keys to live keys.

Before you start

  • You need a Stripe account. Start with test keys (pk_test_…, sk_test_…): they take no real money.

Step by step

  1. In Stripe, open Developers → API keys and copy the publishable key (pk_test_… or pk_live_…) and the secret key (sk_test_… or sk_live_…).

  2. In WordPress, open CaliDiary → Settings → Payments. In the Online payments card, go to the Stripe section.

    [Screenshot to come] It will show: The Online payments card with its Stripe, PayPal and Mollie sections; the Stripe section shows the pill “Test mode: no real money”, Publishable key, Secret key (with “Saved: …” help) and Offer Stripe to customers on.
    The Stripe section of Online payments in test mode (Settings → Payments → Online payments)
  3. Paste the keys into Publishable key and Secret key. Both must be test keys, or both live keys.

  4. Recommended: add a webhook, so Stripe tells your site the moment a payment arrives.

    • In Stripe, open Developers → Webhooks → Add endpoint.
    • Paste the address CaliDiary shows under the keys (it ends /wp-json/calidiary/v1/pro/pay/stripe).
    • Choose these events: checkout.session.completed, checkout.session.async_payment_succeeded, checkout.session.async_payment_failed, checkout.session.expired and refund.updated.
    • Copy the endpoint's signing secret (whsec_…) into Webhook signing secret (recommended).
    [Screenshot to come] It will show: The webhook part of the Stripe section: the address ending /wp-json/calidiary/v1/pro/pay/stripe, the list of five events, and the Webhook signing secret (recommended) box.
    The Stripe webhook address and the events to choose in Stripe (Settings → Payments → Online payments (Stripe webhook))
  5. Switch on Offer Stripe to customers and press Save Stripe.

  6. Press Test connection (it can be pressed once the keys are saved). With test keys you see Connected to Stripe in test mode. No real money is taken; use Stripe's test cards.

    [Screenshot to come] It will show: The Stripe section after Test connection: the success notice “Connected to Stripe in test mode. No real money is taken; use Stripe’s test cards.” above the buttons Save Stripe, Test connection and Disconnect.
    Stripe’s test connection succeeding in test mode (Settings → Payments → Online payments)
  7. Choose on each booking set-up, under Paying online, whether customers pay The full price or a deposit.

  8. When you are ready to take real money, paste your live keys (and a live webhook's signing secret) and press Save Stripe again. The status shows Live: real payments.

On Free, the Online payments card is a preview with Start free Solo trial and See plans: Stripe, PayPal and Mollie come with the Solo and Pro plans. You can still tell customers how to pay you on every plan.

Tips

  • Without a webhook (for example on a test site the internet can't reach), payments are still confirmed when customers come back from Stripe, and by a check every few minutes.
  • Time for paying in the same card sets how long a time is held while someone pays, and how long accepted requests have to pay. Press Save times for paying after changing it.
  • A restricted key (rk_…) works if it may use Checkout Sessions, Payment Intents, Refunds and Balance (read).
  • Stripe sometimes renames its menus. If you can't find Developers, search Stripe's dashboard for “API keys” or “Webhooks”.

Common problems

“Both keys must be test keys, or both live keys.”
You have mixed a test key and a live key. Copy both from the same mode in Stripe.
“Stripe didn't accept this key. Check you copied the whole secret key, and that it hasn't been rolled (replaced) in Stripe.”
Copy the secret key again from Developers → API keys. If it was replaced in Stripe, use the new one.
“The webhook signing secret starts with whsec_. Stripe shows it on the webhook's page.”
You pasted the webhook's address or ID instead of its signing secret. Open the webhook in Stripe and reveal the signing secret.
“The saved keys can't be read, usually because the site's security keys (in wp-config.php) changed. Please paste them again.”
Your website's security keys changed, for example after a move. Paste the Stripe keys again and save.
“Stripe couldn't be reached. Check the site can connect to the internet, then try again.”
Try again in a few minutes. If it keeps happening, ask your host whether outgoing connections are blocked.

New to CaliDiary?

Start on the free plan, with no booking limit. Upgrade only when you need to.