Billing for medications given
Hero turns each dose into charge lines: the drug code with its units and NDC, JW or JZ, and the injection code. Here is how it works them out, what the charges line under the list means, and the coding rules worth knowing.
Billing for medications given
Hero turns each dose into charge lines: the drug code with its units and NDC, JW or JZ, and the injection code. Here is how it works them out, what the charges line under the list means, and the coding rules worth knowing.
How Hero builds the charges
You don’t type medication codes. When you save a dose, Hero works out its charge lines and adds them to the visit’s Charges; the form’s What it bills shows the same lines first, with a plain explanation (“Worked out by Hero from the dose and the protocol; added to this visit’s charges when you save.”). They are ordinary charge lines, so they go out on the claim with the rest of the visit.
| Line | Shown as | How Hero works it out |
|---|---|---|
| Drug code (J2426, J1071, Q9991 …) | Drug given | Units = the dose ÷ one billing unit, rounded up. Codes billed once per injection (Sublocade’s Q9991 and Q9992, Brixadi’s J0577 and J0578) bill 1. The line carries the NDC with its unit and quantity. |
| The same drug code with JW | Drug discarded (JW) | Only for single-dose and single-use packages, when what was thrown away is at least one billing unit (see JW and JZ). |
| Injection code (96372) | Giving the injection | The protocol’s Injection code, else the practice’s code for the route (96372 for IM and SC by default). Units = the number of injections given, so Cabenuva’s two injections bill 96372 ×2, unless Injections billed says otherwise. |
| Extra codes | Protocol code | The protocol’s own codes, for example G2082 for Spravato, some only once the patient is released. |
Example. Invega Sustenna 234 mg from a 234 mg / 1.5 mL syringe, nothing discarded. J2426 bills 1 mg per unit, so the preview shows J2426 ×234 JZ with NDC … ML 1.5, and 96372, explained as “234 mg ÷ 1 mg per unit = 234 units of J2426.”, “Nothing was discarded, so the drug line carries JZ.” and “Administration billed as 96372 × 1.”
The billing choice
Under the preview, Billing says what this dose bills. It starts from the protocol’s Usually bill, or from where the drug came from.
| Choice | When it applies |
|---|---|
Bill the drug and the injection | The default for an injection from practice stock. |
Bill the injection only (drug not ours to bill) | The default for a sample or the patient’s own supply, and the only paid choice for them besides the protocol’s codes. |
Bill the protocol’s own codes only (no drug or injection code) | For products billed by their own codes, such as Spravato’s G codes. Without a protocol it reads Documentation only (nothing billed), the default for oral and other doses that aren’t injected. |
No charge | Anything you choose not to bill; Why no charge is required. |
Includes the drug, such as G2082.Billing units and NDC quantity
Every drug code bills in its own unit, and every package is reported on the claim in its own NDC unit. Both are set once per protocol (see Confirm the billing unit), and until they are, the drug can’t be billed: “Confirm the J2426 billing unit in the protocol before billing this drug.”
| Example code | One billing unit | Note |
|---|---|---|
| J2426 (Invega Sustenna) | 1 mg | 234 mg bills 234 units. |
| J1071 (testosterone cypionate) | 1 mg | Multi-dose vial: no JW or JZ. |
| J3420 (vitamin B12) | Up to 1,000 mcg | 1,000 mcg bills 1 unit. |
| J0741 (Cabenuva) | 2 mg cabotegravir / 3 mg rilpivirine | Enter the dose as mg of cabotegravir. Billed once per visit, not per injection. |
| Q9991 / Q9992 (Sublocade) | Once per injection | 100 mg or less / over 100 mg. |
Hero rounds up once, for the whole package, then splits the units between what was given and what was discarded; it never rounds each part up separately.
NDC unit and quantity
The NDC unit is UN (each: syringe, vial, kit, tablet), ML, GR or F2 (international units). NDC quantity for one full package is how one whole package is reported: 1.5 for a 1.5 mL syringe in ML, 1 for a kit in UN, 10 for a 10 mL vial in ML. For each dose Hero reports the share of the package used, so half a 10 mL vial is ML 5. Mixing a powder with diluent never changes it.
The preview warns when something is missing:
- “No 11-digit NDC: Medicaid and most commercial payers reject drug lines without one.”
- “Confirm the NDC unit (ML, UN, GR or F2) in the protocol.”
- “Confirm the NDC quantity for one full container in the protocol so the NDC quantity can be reported.”
- “The discarded amount is a fraction of a unit-based NDC package; billing should review.”
- “This medication has no drug billing code, so only the administration is billed.”
A line can hold at most 9,999 units; past that, the preview asks billing to split it.
Discarded drug: JW and JZ
Medicare asks for a JW or JZ modifier on drugs from single-dose containers: JW on a separate line for the amount thrown away, or JZ when nothing billable was. Hero decides from the protocol’s package type, so there is nothing to remember at the chair.
| Package | Nothing discarded | At least one unit discarded | Less than one unit discarded |
|---|---|---|---|
Single-dose (syringe or vial), Single-use package (kit) | Drug line with JZ | Drug line for what was given, plus a JW line for what was thrown away | No JW line; JZ on the drug line, or no modifier if the practice setting is None |
Multi-dose vial | No JW or JZ | ||
Tablets or other oral units, Other | No JW or JZ | ||
- 150 mg from two 100 mg vials, at 1 mg per unit: 150 units given, plus a JW line of 50.
- 45 mg from a 50 mg vial, at 50 mg per unit: 1 unit given; the 5 mg thrown away is less than a unit, so JZ.
Amount discarded starts filled in as the package total minus the dose. If you type it yourself, what was given plus what was discarded has to equal what the packages held: “Given (45) plus discarded (4) must equal what the container(s) held (50 mg).” Overfill is never billed. A controlled drug’s waste needs a witness.
Keeping charges in step
Hero updates the visit’s charges every time a dose is saved, edited or removed, and again when the visit is opened, so a dose given from the chart tab gets its charges the next time someone opens that visit. One line under the list says where things stand:
| The line reads | What to do |
|---|---|
| Charges match medications given. | Nothing. |
| Charges don’t match medications given: add J2426 ×234 (JZ), change 96372 ×2. | Click Update charges. This happens when the charges couldn’t be updated at the time, for example while someone else was editing the visit. A drug line split into pieces that don’t add up to the dose shows here too, as remove the extra J2426 line. |
| The doses match, but J2426 is split into 2 identical lines (468 units in all). Payers expect one line per drug, NDC and day, and usually deny identical lines as duplicates. | Click Combine into one line: one line stays, with the units and NDC quantity recorded in Medications given in clinic. |
| A medication charge line was removed in Charges. Rebuild to add it back, or mark the medication No charge. | Click Rebuild, or set the dose’s billing to No charge with a reason. |
| Charges has an extra J2426 line that isn’t from the medications given. Remove it in Charges; the medication’s own line already bills the dose. | Delete the hand-added line in Charges. |
| The charges changed somewhere else. Refresh the Charges section, then update charges here. | Refresh Charges, then Update charges. |
| This visit is marked No charge, so medication charges are not added. | Nothing; the doses are recorded as not charged when the visit is signed. |
| Billing is off for this visit, so no charges are added. | Billing is off for the practice, or the visit was cancelled. |
| This visit is signed. Open an addendum to change its charges. | See Addenda and corrections. |
Update charges puts it right. The Charges summary shows the same difference. Signing waits until they match.Signing
With Don’t let a visit be signed until its charges match the medications given on (the default), signing waits until they match: “The charges don’t match the medications given in clinic. Use Update charges in Medications given in clinic, then sign again.” The section opens and its line turns red. Click Update charges and sign again.
One line per drug
Two doses of the same drug, with the same NDC, on the same visit and day, share one drug line: the units and NDC quantities are added together (two Sustenna 234 mg doses bill J2426 ×468 with ML 3), there is at most one JW line, and the injection code’s units add up (96372 ×2). Payers expect one line per drug, NDC and day and usually deny identical lines as duplicates, and JW and JZ are checked the same way, so one combined line is what they want.
Medication charge lines are changed from Medications given in clinic, not duplicated in Charges. At the top of Charges, a summary says what the doses bill: From medications given: J1071 ×100, J2426 ×234 (JZ), 96372 ×3. To change these lines, edit the medication in Medications given in clinic. When the lines below disagree it adds, for example, Charges list 96372 ×2 in all: use Update charges in Medications given in clinic.
- No Duplicate row. On a line that comes from the doses, the duplicate button is greyed out: “This line comes from Medications given in clinic. Change the doses there.”
- Adding the same code by hand asks Add another J2426 line?: “J2426 is already billed from Medications given in clinic: 468 units on one line. To bill more, record the dose in Medications given in clinic.”
Keep one lineis the usual answer.Add anywayadds it, and that line counts toward the medication’s charge (“This line counts toward Medications given in clinic. To bill more, record the dose there.”) rather than billing extra. - Identical lines already there ask Combine the identical J2426 lines?, saying for example “Combine into one line keeps 234 units, as recorded in Medications given in clinic.” Choose
Combine into one lineorConfirm duplicates; if you keep more than one line, say why in the optional box.
Coding notes and visit rules
Which visit a billed dose goes on
- The same day. A billed dose must be on a visit dated the day it was given, on your practice’s calendar. Record a dose given on an earlier day on that day’s visit; the chart’s
Start an injection visit(see 24.9) is for a dose given today when there is no visit yet. - Not a cancelled visit. “This visit was cancelled; document billable medications on an active visit.”
- Signed visits take a billed dose only through an addendum; a dose recorded as
No chargewith a reason is always allowed. Clinical-only changes never need one.
Advice shown in Charges
- 99211 with 96372. Charges shows: “Medicare does not pay 99211 with a drug administration service. Bill 96372 alone; if a separately identifiable E/M was performed, use 99212 or higher with modifier 25.”
- Modifier 25. The drug line itself (J-codes, Q0138, Sublocade’s Q9991 and Q9992, and S0013) is a supply, not a procedure, so it never raises the modifier-25 suggestion; the injection codes 96372, 96374, 96401 and 96402 do (see Charges & E/M).
Product notes
- Sublocade’s Q9991 and Q9992 are drug codes everywhere in Hero, including practices that don’t use this feature: those lines need an NDC like a J-code and follow the JW and JZ rules.
- Spravato comes with no codes. Medicare uses G2082 (up to 56 mg) and G2083 (over 56 mg), which include the drug: add them as extra codes with
Includes the drugandOnly after the patient is released. Other payers may want an E/M visit plus J0013 per mg. Check with your payers. - IV push has no default code, because initial and additional pushes bill differently. Name the code on each protocol; until then the preview says “IV push coding depends on initial and subsequent pushes; add the administration code in charge capture or the protocol.”
- Retired codes. Use J1010 for methylprednisolone acetate and J0013 for esketamine; J1030, J1040 and S0013 are retired, and a protocol can’t use them.
- S0013 for payers that still take it. J0013 replaced S0013 in January 2026, but some commercial payers still take S0013, and older dates of service may need it. Add it by hand in
Charges. Hero treats it as a drug line: it carries the Spravato NDC like a J-code, and it can use a drug NDC default fromBilling → Claim Submission. It never gets JW or JZ, because those are a Medicare rule and Medicare doesn’t pay S-codes. A JW or JZ left on it holds the claim with “JW/JZ does not apply to this line’s code”; remove the modifier.
Need help? Email support@heroemr.com.