Skip to main content

Take online payments with Stripe

Connect Stripe so guests can pay deposits and balances online. Covers both ways to connect, exactly which webhook events to select, the signing secret, and what to check if a paid booking stays unpaid.

Last updated September 21, 2026

Guests pay you directly. The money goes from their card into your own Stripe account, and Campiamo never holds it or takes a cut. To make that work, your Campiamo account needs to be connected to your Stripe account, which you do once under Settings → Payments in your dashboard.

There are two ways to connect Stripe. You only need one.

Stripe Connect Your own Stripe keys
Best if You don't have a Stripe account yet, or you'd rather not touch developer settings You already have a Stripe account you want to keep using exactly as it is
Setup Click a button and follow Stripe's guided sign-up Paste two keys, add a webhook in Stripe, paste a signing secret
Webhooks Nothing to do You set one up (steps below)
Where the money goes Your Stripe account Your Stripe account

If you'd rather use PayPal, that is on the same settings page and works alongside or instead of Stripe.

Option 1: Stripe Connect

  1. Go to Settings → Payments and choose Stripe Connect.
  2. Click Connect Stripe account. You are taken to Stripe.
  3. Follow Stripe's steps. They will ask about your business, your bank account, and proof of identity. This is Stripe's legal requirement, not ours, and the details go to Stripe only.
  4. When you finish, Stripe sends you back to Campiamo. The status changes to active once Stripe has verified you, which is often immediate and occasionally takes a day or two.

Your Stripe account is created in the country your property is set to, so check your property's country is right under Settings → Property before you start. A Stripe account's country cannot be changed afterwards.

If the status says more information is needed, click the button again. Stripe will show you exactly what is outstanding.

Option 2: Your own Stripe keys

This takes about ten minutes. You will be switching between two browser tabs: your Campiamo payments settings and your Stripe dashboard. Do the steps in this order, because Campiamo needs the signing secret from step 3 before it will save.

1. Copy your API keys from Stripe

In Stripe, go to Developers → API keys. Make sure you are looking at live keys, not test keys.

  • The publishable key starts with pk_live_
  • The secret key starts with sk_live_. Click Reveal to see it.

Keep this tab open.

2. Add the webhook in Stripe

A webhook is how Stripe tells Campiamo that a guest has paid. Without it, guests can pay but their bookings will not be marked as paid.

  1. In Campiamo, go to Settings → Payments, choose Your Own Stripe Keys, and copy Your Webhook URL.

  2. In Stripe, go to Developers → Webhooks and click Add endpoint (Stripe sometimes calls this Add destination).

  3. Paste the URL.

  4. Stripe now asks which events to send. Select these two:

    • checkout.session.completed
    • checkout.session.expired

    Type checkout.session into Stripe's search box and both appear, which is quicker than scrolling the full list. In Campiamo, clicking an event name copies it for you.

  5. If Stripe asks about an API version, leave the default.

  6. Save the endpoint.

What those two events do. The first tells Campiamo a guest has paid, so the booking is confirmed and the confirmation email goes out. The second tells Campiamo a guest started to pay and gave up, so the dates are released for someone else.

Optional events. If you would like declined cards to appear in your dashboard, also select charge.failed and payment_intent.payment_failed. They are not required, and you can add them to the endpoint at any time.

3. Copy the signing secret

Still in Stripe, open the endpoint you just created. Under Signing secret, click Reveal and copy the value. It starts with whsec_.

This secret is how Campiamo checks that a message really came from Stripe. It is different from your API secret key, and each webhook endpoint has its own.

4. Save everything in Campiamo

Back in Settings → Payments, paste the publishable key, the secret key and the webhook signing secret, then save. The status changes to show your keys are configured and active.

5. Test it

Make a real booking on your own website for a small amount, pay with a real card, and check that:

  • the booking shows as paid in your dashboard
  • the confirmation email arrives

Then refund the payment from your Stripe dashboard. Test cards such as 4242 4242 4242 4242 only work with Stripe's test keys, so they will be declined here.

Deposits and balances

Once Stripe is connected, the rest of the payments page controls what guests are charged and when: a deposit as a percentage or a fixed amount, how many days before arrival the balance is due, whether late bookings must pay in full, and whether you also accept payment on arrival. Balance reminders are sent automatically.

If something isn't working

A guest paid, but the booking still shows unpaid. This is almost always the webhook. In Stripe, open Developers → Webhooks, click your endpoint, and look at the recent deliveries.

  • No deliveries at all. The endpoint is not listening for checkout.session.completed. Edit the endpoint and add it.
  • Deliveries failing with a 400 error. The signing secret in Campiamo does not match this endpoint. Reveal the secret in Stripe again and re-save it in Campiamo. A common cause is copying the secret from a test-mode endpoint while using live keys, or the other way round.
  • Deliveries failing with a 404 error. The URL is wrong. Copy it again from Campiamo.

Once it is fixed, Stripe lets you resend a failed delivery from the same screen, which will mark the booking as paid without the guest doing anything.

Guests see an error when they try to pay. Check the keys are live keys from the same Stripe account, and that the account has finished Stripe's own verification. Stripe shows a banner in your dashboard if anything is outstanding.

You want to switch from your own keys to Stripe Connect, or back. Remove the current method on the payments page first, then set up the other. Existing bookings and past payments are not affected.

If you are stuck, get in touch and tell us what you see on the endpoint's delivery list in Stripe. That usually tells us the answer straight away.

Still stuck?

If this page didn't answer your question, it's our page that needs fixing. Tell us.

Get in touch