Skip to content

Migrating off spreadsheet billing without a big-bang cutover

A practical order of operations for moving from a workbook to a live schedule — catalog first, one cohort at a time, old and new running in parallel until they agree.

Lokesh Mahala

Founder & CEO

14 Aug 20263 min read

Order to CashThe full chain from signed deal to matched deposit and close.
  1. 01

    Stand up the catalog

    Customers, products, and list prices — before a single contract is imported. Nothing bills against a blank catalog.

  2. 02

    Import contracts in cohorts

    Start with your simplest renewal shape. Approve the structured result before moving to the next batch.

  3. 03

    Run in parallel for one cycle

    Let the spreadsheet keep producing invoices while Sonic produces the same numbers silently. Compare, don't switch.

  4. 04

    Cut over cohort by cohort

    Once a cohort's numbers agree for a full cycle, that cohort's invoices come from Sonic. The spreadsheet shrinks, it doesn't vanish overnight.

The riskiest way to leave a billing spreadsheet is to pick a go-live date and switch everything on it. If the new system is even slightly wrong on one contract shape, you find out from an angry customer instead of from a reconciliation report.

Phase 0 — decide scope honestly

Before migration, list what the spreadsheet actually models:

  • Flat subscriptions vs usage vs seats vs minimum commitments
  • One-time fees and deferred instalments
  • Payment-gated starts
  • Credit notes and upgrade proration you already do manually

If a shape is not in Sonic yet, name it — parallel run will surface it. Do not hide it in "we'll fix later."

Phase 1 — catalog as source of truth

Customers, products, and list prices need to exist and be correct. A contract on a blank catalog either rejects or creates duplicates you will merge painfully later.

Sonic can materialise customer and products at contract approve when still unlinked, linking existing name matches instead of duplicating. That accelerates ingest but does not remove catalog discipline — someone still validates IDs and pricing.

For freight migration, stand up shippers and carriers before contracts — bill-to and hauler are not the customer catalog.

Phase 2 — cohort contract import

Import contracts in cohorts, not all at once.

Good first cohort: flat monthly fee, single phase, no usage, immediate activation.

Save for later: deferred tranches, seat snapshots with confirmation days, payment gates, volume overage companions, multi-currency quirks.

Each PDF becomes a reviewable structured result before schedule activation. Use the first cohort to calibrate trust in extraction — fix org parsing context when the same ambiguity repeats.

Phase 3 — parallel run one full cycle

Let the spreadsheet keep issuing real invoices. Let Sonic compute what it would bill:

Compare Why
Line totals per product Catches proration and phase boundaries
Tax lines Catches rate config, not just subtotal
Seat/usage quantities Catches template mapping
Invoice dates Catches billing day and gate materialisation

Disagreements are not failures. They are contract terms the spreadsheet was already approximating, or Sonic config you still need to tune.

Do not send Sonic invoices to customers during parallel run unless you have explicit dual-run approval.

Phase 4 — cut over cohort by cohort

When a cohort agrees for a full cycle:

  1. Send from Sonic for that cohort's next period.
  2. Freeze the spreadsheet tab for that cohort (read-only archive).
  3. Move Watchtower/dunning to sent Sonic invoices only.
  4. Match cash against Sonic invoice numbers in bank rec.

The spreadsheet shrinks until the last renewal moves. No funeral required.

After cutover — keep the chain connected

  • Enable recognition only when billed numbers are trusted.
  • Connect Stripe/Razorpay before scaling self-serve pay links.
  • Train operators on immutability after send — corrections are credit notes, not Excel overrides.

Watch out for

  • Big-bang go-live is a bet against edge cases you have not met yet.
  • Skipping review on cohort 2+ reintroduces silent parse errors.
  • Usage/seat templates need Process discipline before production uploads — bad mapping × monthly volume hurts.
  • Sequence numbers — if you backfill historical invoice numbers, sync sequence floors or auto-number repeats.
  • Freight parallel run must include shipper match and rate index gaps, not just subtotals.

See it on the platform

Everything above describes how Sonic actually runs it — the product pages show the screens.

Written by

Lokesh Mahala · Founder & CEO

Writes about the money path from the conversations that shaped Sonic — what finance teams asked for, and what we refused to build.

Related questions

Still have questions?

Will you rewrite an invoice after it has been sent?

No. Sent, paid, void, and final invoices are not rewritten. Corrections are credit notes or a new invoice alongside the original. Drafts and in-progress invoices can still accept lines. Freight has no credit notes — correct the file, or void.

What is Sonic AI?

An AI-native billing platform for B2B finance teams. It reads what was agreed, runs the live billing schedule or rates each shipment, sends invoices, chases the late ones, matches bank deposits, and posts revenue — on one data model, per organisation.

Is this another invoicing tool with a chatbot?

No. The heart of the product is the billing schedule (for subscriptions) and the rated shipment (for freight). Agents read, draft, and suggest; operators approve. Math on amounts is not a prompt.

See the full FAQ →

Next

See it on your contracts

A walkthrough on the agreements and files you actually bill from — not a slide deck.