WeBuildCrew
📅 SaaS Development

How to Build a Booking System: Appointments, Payments & Reminders

A practical guide to building a custom booking platform — real-time availability, Stripe deposits, automated reminders and multi-staff calendars that cut no-shows.

Zahid Ghotia8 min read
#Booking Platform Development#Appointment Scheduling Software#SaaS Development#Stripe Integration#Calendar Integration#Next.js
How to Build a Booking System: Appointments, Payments & RemindersWeBuildCrew

Phone-and-DM scheduling kills productivity, misses bookings and leaks revenue to no-shows. A well-built booking system lets clients self-serve 24/7, takes a deposit upfront and sends reminders automatically — so you only show up to confirmed, paid appointments.

The four jobs a booking system must do

  1. 1Show real availability — no double-bookings
  2. 2Take a deposit or full payment at booking time
  3. 3Send confirmation and reminders automatically
  4. 4Let clients reschedule or cancel without calling you

Real-time availability engine

The hardest part is availability: combining your staff schedules, existing bookings, buffer times and time zones into an accurate slot grid. We model this with a slot generator that reads from a rules table (working hours, breaks, service duration) and subtracts confirmed bookings.

lib/slots.ts
TypeScript
export function openSlots(schedule: Schedule, bookings: Booking[], date: Date) {  const slots = generateSlots(schedule, date); // 9am–6pm every 30min  return slots.filter((slot) =>    !bookings.some((b) => overlaps(slot, b))  );}
Generate open slots by subtracting booked time from a schedule.

Taking deposits with Stripe

A deposit captures real intent and halves no-show rates. We use Stripe's PaymentIntent for deposits, storing the payment_intent_id on the booking row — so if the client cancels inside the refund window we can refund programmatically, outside the window the deposit is kept.

Automated reminders

A reminder sequence — 24 hours before, 2 hours before — reduces no-shows further. We send via email (Resend) and optionally SMS, triggered by a scheduled job that queries bookings starting in the next window.

Multi-staff calendars

Service businesses with multiple staff need per-staff availability, per-service durations and the ability to assign bookings to specific team members. We model each staff member as a resource with their own schedule and link bookings to both a service and a staff record.

−60%

No-shows with deposits

24/7

Self-booking

instant

Confirmations

2-way

Calendar sync

Need this built? Explore our SaaS Development service.

View service →

Written by Zahid Ghotia · Published 3 June 2026 · 8 min read

FAQ

Frequently asked questions

Can it sync with Google Calendar?

Yes — two-way Google Calendar sync so appointments appear in your existing calendar and blocks from there prevent double-booking.

What payment methods work?

Stripe handles cards; we can add crypto payments for global clients.

Can clients reschedule themselves?

Yes — we include a self-service reschedule/cancel portal with rules (e.g. no cancels within 24 hours).

How long does it take to build?

A solid single-staff booking platform ships in ~3 weeks; multi-staff with full calendar sync takes 4–5 weeks.

Keep reading

Related articles

Need a booking system?

Custom scheduling with real-time availability, deposits and automated reminders.