Internal Launch Industries documentation. Do not share outside the team.
SOPs
Finance
Bookkeeping Client Offboarding

Bookkeeping Client Offboarding

How to wind down a bookkeeping engagement. This SOP covers the closeout regardless of why they're leaving: client choice, non-payment, or Launch-initiated. The end state is always the same: a clean handoff, no recurring charges, no orphaned books.

Related SOPs: Managed Service Plans covers how we sell. Financial Handbook covers what happens in between.

The four offboarding paths

PathTriggerWho initiates
Path 1: Voluntary cancellationClient tells us they're leavingClient
Path 2: Plan downgrade or scope reductionClient wants to keep the relationship but smallerClient + Launch jointly
Path 3: Non-payment lapseInvoice unpaid 30+ days past dueLaunch
Path 4: Launch-initiated terminationBad fit, ethics issue, scope creep no resolutionLaunch (with Monica sign-off)

All four end at the same closeout checklist (bottom).

Path 1: Voluntary cancellation

The client emails saying they're moving to a different bookkeeper, doing it in-house, or shutting down the business.

Day 0 — confirm receipt + book a closeout call

Within 1 business day:

  • Reply confirming the cancellation request and the date the engagement will end (default: end of current billing month)
  • Schedule a 30-minute closeout call with the primary bookkeeper (typically Liberty or Emma)
  • The closeout call is non-negotiable — it's how we catch things the client doesn't know they need

Closeout call — agenda

  • Confirm the last closed month and what's still in-flight
  • Walk through what they'll get: QuickBooks file access, signed-off financials through last close, A/R aging snapshot, payroll year-to-date
  • Walk through what they need to do: change the QuickBooks subscription owner (if we own it), update Stripe / Square notifications if we receive them, replace us on any state/IRS contact lists, update their CPA
  • Identify the handoff target: new bookkeeper / DIY / dissolving / CPA-direct
  • Document everything in the client's Drive folder under Offboarding

Final close + handoff work

If they want a clean final close:

  • Run the last partial-month or full-month close, depending on agreement
  • Send the final financial package: P&L, balance sheet, A/R aging, A/P aging, payroll YTD report
  • All exported PDFs go in the Drive Offboarding folder
  • Reconciled QuickBooks file transferred to client or new bookkeeper per the handoff target

This is billable work (flat fee, never hourly going out the door). Quote it at the closeout call before doing it.

Day +30 — handover complete

  • Cancel the Stripe subscription effective end of current billing cycle
  • No partial refund unless the client overpaid into an unused tier month
  • Send the final goodbye email with a copy of the full handoff package and an open invitation to come back
  • Mark Supabase bookkeeping_engagement_status = "offboarded_voluntary" with end date

Path 2: Plan downgrade or scope reduction

The client wants to stay, but smaller. Common reasons: business shrunk, they hired an in-house person to handle data entry, they're moving to DIY with light support.

This isn't a full offboard but it touches the same closeout discipline:

  • Re-quote at the new tier or Flex Plan
  • Send a new engagement letter
  • Cancel the old Stripe subscription, open a new one at the new rate
  • Update Supabase bookkeeping_engagement_type to the new tier
  • Send a transition email confirming the new scope and what's no longer included

If they ask to drop to "just monthly close and statements," that's Tier 1. Don't sell them a custom mid-point.

Path 3: Non-payment lapse

The client's bookkeeping invoice is unpaid 30 days past due.

Day +1 (1 day past invoice due) — friendly nudge

  • Automated Stripe dunning email goes out (already in place)
  • Bookkeeper or Stacia sends a personal "hey, did you see this?" email — sometimes the card just failed silently

Day +15 — formal pause notice

  • Send the Service Pause Notice email (Gmail template: "Bookkeeping · Past Due — Day 15")
  • "We've paused new work on your books as of today. Existing close work through [last paid month] is complete. We'll resume when payment is received."
  • Pause the work — no new month close, no reconciliations, no A/R follow-up

Day +30 — formal termination notice

  • Send the 30-Day Termination Notice email (Gmail template: "Bookkeeping · Past Due — Day 30")
  • "If we don't hear from you by [date 30 days from now], the engagement will be terminated. We'll deliver your books through [last paid close] and the engagement will close out."
  • Spell out clearly: what they'll receive (the last clean close), what they won't (no further work), what comes next

Day +60 — Launch terminates

  • Send the Service Terminated email confirming the engagement is closed
  • Run the standard closeout checklist (below) using whatever data we have through last paid close
  • No final close attempted on unpaid work
  • Mark Supabase bookkeeping_engagement_status = "offboarded_nonpayment" with end date
  • Drive folder archived but retained

Path 4: Launch-initiated termination

Rare but happens. Reasons:

  • Bad fit that didn't resolve: client refuses to use QuickBooks the way we need it, won't share information, weeks late on basic requests
  • Ethics issue: client asks us to do something we won't do
  • Capacity: bookkeeper team genuinely cannot take more work and this client is the lowest-fit
  • Persistent abuse: rude, threatening, or boundary-pushing communication

Internal decision + Monica approval

  • Document the reason in the client's Supabase record
  • Get Monica sign-off before drafting any termination email — this is never unilateral

Send the 30-day termination notice

  • Use the Launch-Initiated Termination email template (Gmail, "Bookkeeping · Launch-Terminate")
  • Measured language — we're ending a contract, not picking a fight
  • 30 days' notice (vs 60 for the client, since we're the one walking)
  • Offer a final close at flat rate, recommendations for replacement bookkeepers
  • Make clear: we will deliver the books in usable shape, not punish them for the end

Final 30 days

  • Complete the work through the termination date
  • Run the closeout call same as Path 1
  • Run the final close
  • Run the closeout checklist (below)

Mark in systems

  • Supabase bookkeeping_engagement_status = "offboarded_launch_initiated" with reason code

The closeout checklist (every path ends here)

ItemOwnerNotes
Stripe subscriptionBookkeeperCancelled effective end of paid period. Verify in Stripe dashboard, not just trusted.
Supabase clients rowBookkeeperbookkeeping_engagement_status updated; bookkeeping_end_date set
Recurring calendar remindersBookkeeperAll compliance reminders for this client removed
QuickBooks fileBookkeeperTransferred to client or new bookkeeper per closeout call decision
Drive folderBookkeeperFinal financials in Offboarding subfolder. Folder archived. 7-year retention.
ClickUp tasksBookkeeperAll open tasks for this client closed or reassigned
Recurring email rulesBookkeeperAny inbox rules forwarding their notices removed
Bank feed connectionsBookkeeperWe disconnect from their accounts; they should rotate any login credentials they shared
Payroll integrationBookkeeperIf we ran payroll, transfer admin to client or new bookkeeper
State/IRS contactBookkeeperIf we're listed as their bookkeeping point-of-contact anywhere, remove
Nutshell / CRMStaciaMark inactive, add closeout note
Goodbye email sentPrimary bookkeeperWith final packet attached

What we DO NOT do during offboarding

  • We don't withhold the client's books over a billing dispute — they own their data
  • We don't refuse a closeout call out of frustration — every offboard gets the call
  • We don't refund unused months unless explicitly negotiated — flat fee covers fixed monthly capacity, not metered work
  • We don't trash-talk a departing client internally or externally — even Launch-initiated terminations get measured language
  • We don't ghost — silence is never the offboarding path

Templates and where they live

  • Gmail labels: Launch / Bookkeeping / Closeout, Launch / Bookkeeping / Past Due — Day 15, Launch / Bookkeeping / Past Due — Day 30, Launch / Bookkeeping / Launch-Terminate, Launch / Bookkeeping / Goodbye
  • Drive (Sales folder): Closeout call agenda template, final financial package outline
  • Drive (Finance folder): Per-client Offboarding/ subfolder created at start of offboard

Edge case: client comes back

It happens. They left, tried DIY or another bookkeeper, want to come back.

  • Treat as a new engagement, not a reactivation
  • Run a fresh intake call and re-quote
  • They get the current tier pricing, not their old pricing
  • The Drive folder un-archives but the engagement is logged as a new row in Supabase with a reference to the prior engagement

⚠️

v1 draft. Verify Gmail template names + Stripe cancellation flow before relying on this verbatim. Last updated 2026-05-27.