Review request
Emails the patient a Google review link once their private encounter has been paid.
Used for automatic sends. Change it here and it is used for future review requests.
Upload a PDF or photo of a clinic document. The text is extracted and each record is queued for review.
Ready.
Records waiting to be billed, and payments for private invoices that have been sent.
Private invoices waiting to be sent. Use + Create invoice to bill a patient directly; remittance shortfalls land here automatically as “Shortfall — insurer” invoices. Mark Sent by Healthcode records the date the invoice was submitted to the clearing house; Send by Email emails the invoice to the patient with the clinic branding. Both mark the encounter as sent and remove it from this queue.
Private invoices that have been sent and are awaiting payment. Recording a payment settles the invoice — the Receipt and Review Request automations then fire automatically when they are switched on (Tools → Automations). The aging tabs filter the list by how far past the due date each invoice is; Send reminder emails a branded chase-up (first reminder at 7 days, second at 14, final notice at 30).
Upload a bank statement CSV (Barclays, NatWest, HSBC, Lloyds, Starling, Revolut, Monzo…) to tick off a whole remittance run in one pass. Every credit is matched against the outstanding private invoices — insurer/hospital names, patient surname, invoice reference and amount — and scored HIGH (exact amount plus a name or reference in the narrative), MEDIUM (exact amount within ±7 days, or a fuzzy surname match) or LOW / unmatched. Debits are ignored. Confirm a row to settle the invoice (full, or partial with the shortfall recorded), reassign it manually, or ignore it.
Ready.
Add a patient and their encounters by hand when no document is available.
Encounters funded by the NHS, with the patient and appointment details.
Expected vs paid for NHS encounters — paid correctly, underpaid, overpaid or missing.
Drop the document a payer sent, and it is read for what it is. A hospital / clinic monthly payment run (.xlsx, .csv or .pdf) is matched against the pending NHS accruals and every discrepancy carries a 1-click Flag Dispute; an insurer EOB remittance (.pdf or .csv) settles the claim and surfaces any patient excess for invoicing; a bank statement (.csv or .ofx) is handed to the retained BACS matcher. A scanned statement with no text layer is sent to the server-side extractor instead, and the Reconciliation Summary automation fires as before (Tools → Automations).
Ready.
Find a patient and email them a payment receipt.
Skip the search — the patient is created in the database when the receipt is sent, and the email below is stored on their new record.
Live preview of the emailed receipt, using the clinic branding from Tools → Settings.
Email a Google review link to a patient — someone already in the database, or an ad hoc patient you enter below.
Uses the patient selected in the search above.
Skip the search — the patient is matched by email or created in the database when the request is sent.
Switch on automatic patient emails — review requests after a private encounter is paid, payment receipts when a payment is recorded, and the NHS reconciliation summary after a monthly statement import. Every run is logged below.
Emails the patient a Google review link once their private encounter has been paid.
Used for automatic sends. Change it here and it is used for future review requests.
Emails a payment receipt as soon as a private patient's payment is recorded in the Billing Queue.
Emails a reconciliation summary to the clinic after a monthly NHS payment statement is imported.
Defaults to the sender email saved in Tools → Settings.
The most recent automatic and manual runs. Runs are also shared with the clinic's Supabase project when the automations table has been set up (supabase/automations.sql).
The practice's own configuration: contact details, locations and the remittance account (the Practice Profile card), knee-surgery fee schedules, venue distances, offline backups, automated list ingestion and Automation — plus the clinic branding the receipts carry. Saved on this device and synced to the clinic's Supabase project when you are signed in.
Optional — added as a "Pay online" link/button to emailed invoices, automated payment reminders and WhatsApp messages. Leave blank to omit.
Optional — shown under the clinic name on the receipt PDF. Leave blank to omit.
Shown at the top of receipts. PNG or JPEG, ideally square.
Shown at the bottom of receipts and emails. Upload a signature image to place it above the typed signature text; without an image the typed signature text is used on its own.
Multi-line supported — one line per entry. Default: Mr. Ricardo J Pacheco FRCS Tr&Orth / Consultant Knee and Sports Injuries Surgeon / Lincolnshire Knee Clinic / info@lincsknee.com / www.lincsknee.com
Always rendered in a professional sans-serif font — Inter, Segoe UI or Arial.
Live preview of the typed signature text:
Paste your Google Calendar private iCal address (Google Calendar → the calendar's settings → Secret address in iCal format). The feed is read through the sync-calendar-feed Edge Function, because Google serves it without CORS headers and a browser cannot read it directly. Sessions are filed into the diary, and once a session has started without its list or slips it appears in Diary & Reminders. The URL is stored in public.app_settings as google_calendar_ical_url.
If the proxy cannot be reached (or you would rather not store the URL), download the calendar feed and upload the .ics file — it is filed exactly the same way.
One workbook holding the whole practice, built from the live Supabase tables (encounters, patients, import_review, documents). Currency and dates are written as real Excel numbers and dates — never as text — so the accountant can sum and sort them.
Empties this device — localStorage, sessionStorage, IndexedDB, cached builds and the in-memory store — and signs you out. “Purge device + cloud copy” also overwrites the synced clinic document with an empty one; without it the next sync can bring the records back.
Console: window.__lkcHardReset() (every key on the origin, then a clean reload) or window.__lkcPurgeAllData({ cloud: true }). Server-side tables: run supabase/purge_clinic_tables.sql in the Supabase SQL editor.