Edit or correct a charge
Outcome
A charge with an honest in-app correction (you can prove the right value) is updated, re-validated, and ready to bill — with a clean audit trail showing what changed and why.
Prerequisites
| Scope | What it lets you do |
|---|---|
billing.charge.write | Edit fields on a charge |
billing.charge.void | Mark a charge VOIDED |
audit.read | Review past edits |
When in-app edit is the right move
Editing in the app is not the default fix path. Prefer:
- Fix at source (EMR) and re-ingest.
- Tag mapping-suspect; admin fixes the mapping; re-ingest.
Edit in-app when:
- Timely-filing pressure makes a re-ingest cycle too slow.
- The source EMR has been retired, or the source record is locked.
- The correction is provably right (you have a chart note, an order, a scheduling system).
The audit row carries your name forever, so document the why.
What you can edit
The platform refuses to edit member, payer, procedure, or DOS on a
charge that's already on a BILLED claim — reverse the claim first.
Steps
Open the charge from
/chargesor from a claim's Charges tab.Click
Editin the inline drawer. Fields become editable.Make the change. Each edit captures:
Field Required Reason Yes — short reason ( per chart note 2026-04-12,wrong code from EMR).Reference Optional — chart note ID, order ID, scheduler ID. Save. The charge re-validates automatically. If it now passes all rules, status flips to
VALIDATED.(If the charge was on a claim): rebuild the claim. Reverse the original claim first if it was
SUBMITTED. See 3.3 — Rebill & correct.
Voiding a charge
When the charge should never have been billable (cancelled visit, duplicate, EMR sent in error):
Open the charge →
Void. Reason required. The platform refuses to void a charge already on aPAIDclaim — reverse the payment via the denials/receivables flow first.Confirm the void. Status flips to
VOIDED. The audit row carries your reason.
To re-instate a voided charge, the source EMR must re-send under a new natural key (or you can use Restore if your tenant has it enabled, which writes a new charge row inheriting the original's fields).
Bulk edit
The Charges list supports bulk edit on a tightly-restricted set of fields:
| Field | Bulk-editable |
|---|---|
| Tags | Yes |
| Hold / release-hold | Yes |
| Modifiers (add only, not remove) | Yes |
| Reason field | Yes (one reason for the whole bulk) |
Anything else has to be edited per-row to keep the audit trail honest.
Validation
| Check | Expected |
|---|---|
| Field saves only after a reason is entered | Yes; the form refuses to submit otherwise. |
| Re-validation runs on save | Yes; you don't need a separate click. |
| Audit log captures old + new value + actor + reason | Yes. |
| Voided charges are excluded from default list filters | Yes. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Edit fields are read-only | Charge is BILLED or you lack billing.charge.write | Reverse the claim or ask admin for the scope. |
Save fails with concurrent_modification | Someone else edited the same field | Re-open the drawer; the platform shows their change; redo if still needed. |
| Bulk edit silently skips rows | Some rows can't accept the change (locked / wrong status) | The summary lists N applied / M skipped; click to see which. |
| Audit log doesn't show the change | Logged for audit.read-scoped users only | Ask your supervisor / admin if you can't see audit. |
Where to next
- 3.1 — Build & submit — the next stage once your charge is clean.
- 3.3 — Rebill & correct — when you need to fix a charge already on a claim.