Guide

Dual-run billing without losing revenue

Direct answer

Run both billing systems in parallel per migration wave, reconcile daily against a tolerance you define in advance, staff an exception queue with an owner, and cut over each cohort only after two consecutive clean cycles. Dual-run is a bounded control period — not a lifestyle.

The setup

  • Define reconciliation tolerance before the first parallel run (e.g., invoice total variance under 0.5%, zero unexplained missing accounts)
  • Reconcile daily, not monthly — monthly reconciliation discovers leakage; daily reconciliation prevents it
  • Staff the exception queue: named owner, SLA per exception type, escalation path
  • Map payment application separately — misapplied payments are the quietest leak
  • Keep dunning running in the system of record for collections; don't split dunning across both
  • Decide what "clean" means in writing before emotions get involved

When to cut over a cohort

Two consecutive billing cycles within tolerance, plus one full dunning cycle so you've seen collections behavior — not just invoice math. Then cut over that cohort, keep the legacy system in read-only for one more cycle as a backstop, and move to the next wave.

The trap

Open-ended dual-run. It starts as prudence and becomes architecture: two billing teams, two sets of workarounds, and a consolidation project that never ends because nobody will sign the cutover. Put the end date in the plan on day one.

Running dual billing now?

Tell us how many stacks are in play and where reconciliation hurts most.