Import / migrate your billing history
Step 1 — Export your data from your previous billing system
Start by exporting your bills from your previous billing system (CSV, or JSON if available); patient, injury, and claims-administrator details come along in that export. We transform it into Mindbill's canonical import shape on the way in: one entry = one bill, with the patient and injury repeated on every bill (the importer dedupes patients by name + DOB and injuries by claim number). Every entry carries a stable source id — the original bill id — which is the idempotency key the importer dedupes on. If you have API access, the same data can be pulled that way instead.
Step 2 — Send us the export and we load it for you
Migration is hands-on: send us your export and we map and load it into your Mindbill organization. We handle the transform into the canonical schema and the import run, so there's nothing to install or configure on your side — reach out at /help/contact to start a migration and we'll handle it together.
Step 3 — Preview (dry run): counts, warnings, and what'll be created
We run a preview (dry run) first — it writes NOTHING. The preview returns a batch id and a row of counts: Rows read, To create, Final, Need review (non-final bills), Skipped (already-imported source ids), and Warnings. Below that is a list of warnings (an unparseable DOB, a missing SSN coerced to the 999-99-9999 placeholder, a bill with no procedure line, a defaulted place of service) and a sample table of the first bills — bill #, patient, claim #, DOS, code, charge, and the source status (non-final statuses are badged). We review the counts and warnings together until the preview matches what you expect.
Step 4 — Import: commit the records to your org
When the preview looks right, we commit the import. Mindbill creates the deduped patients, injuries, and bills under the same batch id. The import is idempotent on source id, so if a file is re-run (or a re-exported, overlapping file is loaded), already-imported bills are skipped rather than duplicated — it's safe to re-run after fixing the export.
Step 5 — Imported bills are badged 'Imported' and land as drafts
Every imported bill carries an 'Imported' badge on the bill detail header (hover it for the import date and the original source status) and comes in as an Incomplete draft — never auto-resubmitted. The source status is preserved in the bill's import metadata, and the bill history records a 'created — Imported (status: …)' entry, so you always know where a bill came from and what state it was in at the source.
Step 6 — Non-final bills get an Import Review task to resolve
Bills that were in a final state at the source (paid, closed) import clean. Bills in any non-final state are imported anyway, but each gets an Import Review task on the task queue so a biller verifies and resolves it — maps the free-text claims administrator to a connected payer, attaches the report, confirms the codes, and decides the next action. Open the bills list to review the imported drafts, or the task queue for the import-review items.
Step 7 — Everything is audit-logged
The whole migration is traceable: each bill records its source, source id, source status, batch id, and import timestamp in its import metadata, and the 'Imported' event sits on the bill's history timeline alongside every later action. Combined with Mindbill's account-wide audit log, that means a migrated bill carries the same 7-year, who-did-what-when paper trail as one you created by hand — so the cutover never creates a gap in the record.
Bringing your history over from your previous billing system is a guided, white-glove migration: you export your data, we transform it into Mindbill's canonical import schema and run a preview that writes nothing, then we commit it. Imported bills land badged 'Imported' and always come in as drafts for review; any bill that wasn't in a final (paid/closed) state gets an Import Review task so a biller can verify and resolve it; everything is audit-logged and the import is idempotent on each bill's source id, so re-running the same file never double-creates a record.