Skip to content

Medical Billing

Capture patient charges, group them into invoices, record payments, and post the revenue to the general ledger automatically.

Charge items & charges

  • Charge Items (/medical/billing/charge-items) — the catalogue of billable procedures, services, and supplies. On a new item you can leave Code blank — it auto-generates from the category (e.g. category CardiologyCARD0001, CARD0002, …; no category → CHG0001). Type a code only when you need to match an external master (e.g. IMIS service codes).
  • Patient Charges (/medical/billing/charges) — capture charges against an encounter and charge item. Status flows Draft → Invoiced → Pending → Paid; filter by patient, status, or encounter.

Screenshot: Patient charges — TODO

Invoices

Medical → Billing → Invoices (/medical/billing/invoices):

  1. Create an invoice from unbilled charges (Draft).
  2. Issue it → Issued.
  3. Record payment — amount, method (Cash/Card/Cheque/Bank Transfer), date, reference → Partially Paid / Paid.
  4. Cancel Invoice releases its charges back to unbilled.
  5. Refund — money back on a paid invoice (capped at the amount paid, GL reversal posted). Pick a reason categoryMedicine/Goods, Undone Service Charge, Wrong Registration Ticket, or Other — plus a free-text note; the category shows in the refund history for audit and reporting.

Nightly auto-billing

An optional daily billing batch (config flag medical.billing.daily-job.enabled, off by default) runs overnight and bundles each patient's unbilled charges for the day into a draft invoice — counter staff review and issue it. Charges already invoiced are skipped, so it's safe to re-run.

The printable invoice carries a payment‑reference QR, and — for a patient with verified lab reports — a "View your lab report online" QR per report, so the patient leaves the counter with the code on paper (scan + date of birth → their report; see Laboratory).

Which document a bill prints as

The system decides the document type when the bill is issued; you don't pick it. Printing (/medical/billing/invoices/{id}/print) then lays the page out to match.

Document When it is used What the page shows
Tax Invoice Any bill with a taxable supply on it S.N. · Details · Qty · Unit Amount · Discount · Taxable Amount · VAT (at the line's own rate) · Total, then Subtotal / Discount / Taxable / VAT / Grand Total / Paid / Balance Due
Abbreviated Tax Invoice A counter sale at or under the VAT Rules 2053 Rule 17(Ka) cap, with no buyer PAN Tax-inclusive prices and a single Total including VAT — an abbreviated invoice never shows tax separately
Invoice A bill whose every line is exempt / HST / ESF, i.e. no taxable supply at all No tax columns; Subtotal / Discount / Net Amount / Paid / Balance Due, and the footer states it is not a tax invoice

Every one of them prints the amount in words, the fiscal year in the standard 2083/84 form, and Prepared By / Authorized Signature / Customer Acknowledgement lines.

Above the abbreviated-invoice cap, a buyer PAN is required

A counter sale above the Rule 17(Ka) NPR ceiling cannot be issued without the purchaser's 9-digit PAN — the system refuses and tells you the cap. The ceiling is not hardcoded; it comes from the regulatory threshold store for the current fiscal year, so a change in the rule is a configuration change and not a code change. If the threshold is missing for the fiscal year, issuing is blocked rather than quietly falling back.

IRD verification QR

Both tax documents carry a second QR alongside the payment code: scanning it opens the Inland Revenue Department taxpayer portal entry for that exact bill (built from the hospital's PAN, the short fiscal year and the bill number). It appears only when the facility profile has a PAN set. This is separate from the CBMS e-billing sync — CBMS submits bills to IRD, this QR lets anyone holding the paper look one up.

Sales book (daily VAT sales register)

Medical → Billing → Sales Book (/medical/billing/sales-book) — pick a date and you get that day's complete register: every tax invoice, abbreviated tax invoice and non-taxable bill issued, in numbering order, with Buyer PAN · Taxable Sales · Exempt/Other · VAT · Gross Sales · Status.

  • A bill with no tax classification shows in the tax columns, not 0.00. The two mean different things and the register keeps them apart.
  • Cancelled documents stay listed — their numbers were issued and must be accounted for — but add nothing to the totals.
  • The daily reconciliation panel splits the day by Cash / QR‑Digital / Credit‑Insurance, shows what is still uncollected, and computes a variance that must read 0.00 before the day is signed off. A separate ledger variance shows billing that has not yet reached Accounting; it clears by itself once the sync queue drains.
  • Accounting copy prints the register with Prepared By / Checked By / Approved By sign-off lines; Download CSV gives the same figures for your accountant.

GL configuration

Billing → GL Config (/medical/billing/gl-config) — toggle auto‑posting and map the ledger accounts (Service Revenue, Patient Receivable, Insurance Receivable, Bank/Cash). With auto‑post on, issuing/finalising an invoice posts the journal automatically. The dropdowns list the leaf accounts of your finance Chart of Accounts — if they're empty, set up the accounts first under Accounting → Chart of Accounts (the page shows a warning with a direct link when no accounts exist yet).

Bridges to Accounting

Medical billing posts into the same general ledger as the rest of the ERP, so hospital revenue shows up in finance reports without re-keying.

Payment modes — Credit & Advance

When recording a payment on an invoice you can choose, besides Cash / Card / Bank / Wallet / Insurance:

  • Credit (bearer) — goods or service taken on credit. Capture the bearer's name, ID and signature; the payment is booked against the invoice with that bearer trail.
  • Advance / Deposit — draw down a patient's prepaid deposit. Record deposits under Med Billing → Patient Advances; an Advance payment consumes the oldest deposits first (FIFO) and is blocked if the balance is short. The payment panel shows the patient's available advance balance, and reveals the bearer fields only when Credit is selected.

Patient Advances — the deposit's own receipt

Recording a deposit under Med Billing → Patient Advances now asks how it was collected (Cash, Card, Bank Transfer, etc — everything except "Advance/Deposit" itself, since a deposit can't be funded by drawing down another deposit) and by whom, and prints a numbered Advance Receipt (ADV000001…) — proof the money was received, with the tenant's letterhead and a scan-to-verify QR. This is a plain payment/money receipt, not a VAT Tax Invoice — no tax breakdown, no "Tax Invoice" heading. Whether an advance also needs a formal tax invoice at the moment of collection (as opposed to only later, when it's drawn down against an actual invoice) is a separate tax question outside this guide's scope; check with your accountant or the IRD. The receipt is available from the Patient Advances list (the printer icon next to each row) once a deposit has been recorded.

Public transparency board

The public /transparency board (embeddable in the hospital website) publishes revenue collected alongside the patient, bed and medicine figures — total plus the cash vs insurance split. Aggregate figures only; no patient information is shown.