See llms.txt for all machine-readable content.

Back to Templates

Collect booking deposits and manage refunds with Google Calendar, Stripe, and Sheets

Quick overview

I built this for appointment businesses losing money to no-shows. Each new booking in your Google Calendar gets a Stripe deposit link by email. A paid booking turns green, and an unpaid one is released at your deadline so you can fill the slot. It runs on your calendar.

How it works

  1. Every 15 minutes the workflow reads your calendar and a Deposits tab in Google Sheets.
  2. A new booking gets a Stripe checkout for its deposit, sized by the service named in its title, and the client gets the link.
  3. Halfway to the deadline an unpaid client gets one reminder.
  4. When the deposit is paid, the booking turns green and the client gets a confirmation.
  5. At the deadline I close the checkout first and only then turn the booking red. The client is told the slot was released, with you copied in.
  6. A paid booking cancelled inside your refund window is refunded through Stripe or marked Refund due, and a later cancellation keeps the deposit.
  7. Bookings made before the first run are never asked. At 07:30 you get today's bookings with each deposit's state.
  8. When a step fails, it is written to an Errors tab and emailed to you, and a booking Stripe refuses is parked rather than retried.

Setup

  1. Import the workflow and make a Google Sheet with a Deposits tab and an Errors tab (the headers are in the README).
  2. Connect Google Calendar, Google Sheets, Gmail and Stripe, starting with your Stripe test key.
  3. Fill in your email, business name, sheet URL and the page clients see after paying in Your Settings, then set your deposit per service.
  4. Click Try A Fake Booking, and I send the deposit email to your own inbox with a working test link.
  5. Activate it in preview mode, and switch email_mode to send when you are happy.

Requirements

  • An n8n instance on version 2.x (I tested it on 2.38), a Google account with Calendar, Sheets and Gmail, and a Stripe account.

Customization

  • I keep every choice in Your Settings: the deposit per service, the pay-by deadline and your refund window. Repeating bookings stay skipped unless you turn them on in the same node.

Additional info

Price: $19 plus local sales tax or VAT where it applies.

I send client messages by email, so a booking with no email address sends you the link to forward. Refunds are full refunds of the deposit, with no partial refunds or no-show charges on a saved card. A released slot stays in your calendar, marked red, until you rebook or delete it.

Support: [email protected]