All work

UK therapy practice · Invoicing automation

We built an automated invoicing system.

A solo therapist’s weekly admin — reconciling bookings, looking up rates, drafting invoices, chasing receipts — collapsed into a single form click. Three workflows run quietly behind the scenes for the rest of the cycle.

60 → 5
Minutes per week
~45 hrs
Reclaimed per year
0
Billing errors since go-live

1. The problem

Every week the practitioner moved between three systems — Acuity Scheduling (bookings), a Google Sheet (per-client rates and payment preferences), and Xero (invoices) — to bill the sessions she’d delivered. About an hour of repetitive lookup-and-paste each Sunday, with three recurring failure modes:

2. What we built

A single form the practitioner opens in her browser. She picks a date range, ticks the sessions she wants to invoice, and clicks Submit. The rest is automatic: the system pulls each booking, looks up the client’s rate and payment preference, deduplicates against anything already raised in Xero, creates correctly-themed draft invoices, and tags every appointment so it can’t be billed twice.

Two background workflows then complete the cycle: one watches Xero for invoices that have been sent, one watches for invoices that have been paid — emailing the client a branded receipt with the PDF attached, reconciling the booking system, and sending the practitioner a short digest of what happened.

3. How it works now

Sunday afternoon, five minutes, three steps:

  1. Open the form → tick the week’s sessions → Submit.
  2. Open Xero → review the drafts → click Approve & Send.
  3. Close laptop.
flowchart LR
    classDef extern fill:#fdfcfb,stroke:#c4873b,stroke-width:1.5px,color:#0a0f0f
    classDef hub fill:#0a0f0f,stroke:#c4873b,stroke-width:1.5px,color:#fdfcfb
    classDef mail fill:#f3f2f1,stroke:#9a9a96,color:#0a0f0f

    A["Acuity
Scheduling"]:::extern S["Google
Sheets"]:::extern X["Xero"]:::extern N["n8n
(3 workflows)"]:::hub EC["Client receipt
emails + PDFs"]:::mail EP["Practitioner
digest emails"]:::mail A <--> N S <--> N X <--> N N --> EC N --> EP

Three systems read & written through n8n; two outbound email streams keep the client and practitioner in the loop.

Receipts, reconciliation, and the weekly digest land automatically through the week. Sensitive session content never leaves Acuity — the first node in every workflow strips fields that aren’t needed downstream, so they cannot propagate by accident. Booking-system labels act as the spine of the whole system, which means every workflow is fully idempotent: any run can be safely repeated without duplicating anything.

Want a write-up like this for your own business? The first automation is free — if it saves you time, we move onto a monthly plan. If it doesn’t, we shake hands and part ways. Start a conversation →