appointment booking

Automate appointment booking with payment: our own flow

AA
Aurum Avis Labs Author
6 min read

Automate appointment booking with payment: how ours runs

You can automate appointment booking with payment so a slot only counts once it is paid. Our Process Check booking works that way: free times from Microsoft Bookings through Graph, payment on Stripe Checkout, appointment and Teams link only after a confirmed payment via webhook. Bookings sends the confirmation e-mail. Nobody in the office touches it.

This is for owners and office leads who sell paid appointments and already run Microsoft 365. The flow is the one you go through when you book the Process Check yourself. It is not an argument that every firm should build one. For many, a ready-made tool is enough; a section below says when.

Can Microsoft Bookings take payment itself?

No. Microsoft’s Bookings FAQ answers «Can I link a payment option to my Bookings?» with «No, there’s no payment support in Bookings.» There is no Swiss exception in that answer.

Bookings offers a public booking page: the customer picks a time and the appointment lands in the calendar at once. For a paid slot, that link would let anyone skip payment. We leave it unused. Our site picks date and time; Bookings only sees the appointment once the money is in.

The flow, step by step

Five steps, three systems: website with a small API, Stripe, Bookings.

  1. Read the free times

    The booking page asks our API for free 60-minute slots. It reads availability from Bookings through Microsoft Graph. Bookings stays the calendar that knows what is free.

  2. Choose a time and add details

    The visitor picks date and time, enters an e-mail address, and optionally a name and a short note on the task to look at.

  3. Pay on Stripe’s page

    Redirect to Stripe Checkout. Card details are entered there, not on our site.

  4. The webhook creates the appointment

    After payment succeeds, Stripe sends a signed message. The API checks the signature and creates a Bookings online meeting, including a Teams link. The note from step 2 sits in the appointment.

  5. Bookings confirms

    The e-mail with the Teams link comes from Bookings, like any other appointment there.

Microsoft documents both Graph calls: reading staff availability and creating an appointment. Marked as online, Bookings returns the Teams join link.

Why the webhook creates the appointment, not the thank-you page

Stripe’s fulfilment guide says you cannot rely on the page after checkout: a customer can pay and lose the connection before the thank-you page loads, and would have no appointment. The webhook goes from the payment provider to the server directly.

Two points from Stripe’s webhook documentation shaped the flow. In live mode, Stripe retries failed delivery for up to three days. The same event can arrive more than once. Creating the appointment must be idempotent: the same payment must not create two slots. Someone must see failed deliveries. A paid slot with no calendar entry is the failure this flow must never hide.

Without signature verification, anyone who found the webhook URL could send a fake «paid» message and get an appointment without paying.

The API needs an app registration in Microsoft Entra with rights to Bookings through Graph. Credentials expire; without renewal the page may still read free times but no longer create appointments. In production, a simple alert helps when Stripe webhooks fail repeatedly or when payments sit without a new Bookings entry.

Stripe Checkout stores only what payment and matching need. Name, e-mail, and note come from step 2 and reach the Bookings appointment only when the webhook fires. Bookings stays the calendar source your staff see.

What we deliberately left manual

Runs automatically

  • Showing free times from Bookings
  • Payment that reserves the slot
  • Bookings appointment with Teams link
  • Confirmation e-mail
  • Note on the task inside the appointment

Stays manual

  • Rescheduling, free up to 12 hours before, by e-mail or phone
  • Money-back decision after the appointment
  • Refund through Stripe back to the card

Rescheduling is rare enough for e-mail. The refund depends on whether the hour turned up something worth automating. A person makes that call, not a rule in code.

In use we noticed: Stripe Checkout follows our booking page language, but the Bookings confirmation uses the language set in Bookings business settings. If you serve two languages, check both.

When a ready-made booking tool is enough

Few appointment types, standard flow, booking only after payment, CHF and the way your customers pay, no requirement to live in the Microsoft 365 calendar: a tool with built-in payment is often the better choice without a custom build.

Check currency and payment methods on the vendor’s pages. Calendly lists AUD, CAD, EUR, GBP and USD for payments through Stripe; at the time of writing CHF was not on that list. Stripe offers TWINT in Checkout for Switzerland; whether a booking tool passes it on is for you to verify, not assume.

Skip a custom flow if you sell only a handful of paid appointments a month: an invoice afterwards may be simpler. B2B customers who expect an invoice may resist card payment up front, however well the flow is built.

When a custom flow makes sense

It earns its keep when the booking must fit systems you already run: Microsoft 365, Bookings as the calendar, Teams for the meeting, payment before confirmation. Bookings alone cannot do that.

It fits when you already use Bookings and want one calendar, when payment must come before the slot is fixed, when notes should land in the appointment, and when the booking page should sit on your site in your languages.

Plan running costs. Stripe charges per payment, with no set-up or monthly fee on its Swiss pricing page. Hosting and running an automation we operate costs roughly CHF 50–150 a month. Failed webhooks need attention; Graph credentials must be renewed before they expire. Which package size a flow like this would be for you depends on how many systems it touches. That is what the Process Check settles.

Can Microsoft Bookings take payment in Switzerland?

Not by itself. Microsoft’s Bookings FAQ says there is no payment support in Bookings. Taking payment needs a separate provider, such as Stripe, and a flow that only creates the appointment once payment has gone through.

Book it and see the flow for yourself

The quickest way to see the flow is to use it: pick a time, pay on Stripe’s page, confirmation with Teams link from Bookings. 60 minutes on Teams, CHF 99.

Book the Process Check

What the hour covers is in what the Process Check is, and what follows in after the Process Check. The offer itself is on the Process Check page.

Do not book if a ready-made tool already covers CHF and your payment method, or if a few appointments a month and an invoice afterwards work fine.

appointment booking online payment process automation
AA

Written by

Aurum Avis Labs

Builds and ships at Aurum Avis Labs. Writes here about what we learn working with founders and SMEs in the DACH region.

Customize your cookie preferences. Essential cookies cannot be disabled as they are required for the website to function properly.

Essential Cookies

Required for basic website functionality, security, user authentication, and error tracking.

Always active

Analytics Cookies

Help us understand how visitors interact with our website to improve user experience. Includes Google Analytics and Microsoft Clarity session recordings.

Marketing Cookies

Used to track visitors across websites to display relevant and engaging advertisements.