Skip to content

Healthcare · Workflow

A scheduler that holds the slot while the payment clears

Public booking against a provider's weekly availability, in the patient's timezone, with a timed hold so the slot and the Stripe payment never race.

The story behind

Booking looks simple until money is attached to it. A patient picks a time and goes to pay. If the slot is not held during that minute, a second patient can book it, and now two people own 9:00 on Thursday.

The fix is a hold. Picking a slot creates a short-lived reservation with an expiry, tied to the Stripe checkout session. If the patient pays, the hold becomes an appointment. If they wander off, the hold expires and the slot returns. Behind it sits an overlap check and an optimistic-concurrency version, so two confirmations on the same slot cannot both win.

Business value

  • Slots and payments stop racing. One booking, one owner.
  • Availability is shown in the patient's timezone, not the provider's.
  • Abandoned checkouts release the slot instead of freezing it.

Project scope

  • Weekly availability templates, expanded across dates, timezone-correct.
  • A booking hold tied to the Stripe checkout session, with an expiry.
  • Overlap detection and optimistic concurrency on confirmation.
  • Reschedule and cancel by tokenized link, with status guards.

Deliverables

  • Public booking flow with timezone-correct slots.
  • Slot-hold reservation tied to checkout.
  • Appointment states: booked, fulfilled, cancelled, no-show.
  • Reminders by email and SMS, plus calendar invites.

Tech stack

.NETNodaTimeStripeAzureMS SQL

Frequently asked

What stops two people booking the same slot?

A hold while payment clears, plus an overlap check and an optimistic-concurrency version on confirmation. Two confirmations on one slot cannot both succeed.

Whose timezone do patients see?

Theirs. The provider's weekly template is stored in local time and projected into the booker's timezone.

Can patients reschedule without an account?

Yes, by a tokenized link, with guards so only a booked appointment can move.

Have a workflow that needs this?

Tell us the shape of the problem. Scoped estimate, usually within 3 to 5 business days. No card, no obligation.

Estimate this buildor email business@highcraft.io