Bills, bill types and line items
What a bill contains, how bill types and line-item types are set up, how bills are numbered, and every bill status from draft to refunded.
Every charge in LeapHealthOS is recorded on a bill: an appointment fee, a set of lab tests, medicines from the pharmacy, a package or a registration fee. This page explains what a bill is made of, how administrators set up bill types, how bills are numbered and what each status means. Front-desk staff should read the statuses section; administrators should read all of it.
What a bill contains
A bill belongs to one patient at one centre and has one bill type. It holds:
- Line items: what is being charged, each with a quantity, unit price, discount, GST and line total.
- Totals: subtotal, line discounts, bill discount, total tax and the total amount.
- Payments: every amount collected against it, each with its own receipt.
- Documents: the invoice, one receipt per payment, and a statement once fully paid. See Invoices, receipts and statements.
- Remarks: internal notes for staff, up to 500 characters. Patients do not see them.
Where bills come from
Source | How the bill is created |
|---|---|
Create Payment screen | Staff add items and select Collect Payment. See Creating a payment and collecting money. |
Appointment booking | LeapHealthOS creates and issues the appointment bill when the appointment is booked. See Holds, payment at booking and approvals. |
Pharmacy | A prescription is billed from the Pharmacy queue, which builds the bill from the store's batches, or from a task's Bill medicines action, which opens the Create Payment screen with the medicines filled in. See Pharmacy queue, billing and dispensing. |
Packages | A package is sold on a package bill. See Packages: lifecycle, redemption and refunds. |
Registration | A registration fee is billed when a patient owes one. See Registration fees and estimates. |
Bill types
A bill type says what kind of bill it is, for example Consultation, Lab, Pharmacy or Package. Bill types are a tenant list managed in Bill Types under Billing & Payments in the Tenant Registry. See Tenant registry and vocabularies.
Each bill type has:
Setting | What it does |
|---|---|
Code | The identifier used on bill numbers, for example |
Label | The name staff see on the Create Payment screen. |
Active | Inactive bill types cannot be used for new bills. |
Sort order | The order of the bill-type pills on the Create Payment screen. |
Visible | Only visible bill types are offered as pills on the Create Payment screen. Hide types that only the system uses. |
Line items | The item types offered under this bill type, for example "Consultation" and "Procedure". Each becomes a section where staff add items. If none are set, the screen offers Appointments, Tests and Pharmacy. |
Once your tenant has any bill types, every new bill must use an active one. Otherwise it is rejected with "Invalid or inactive bill type".
Bill-type codes LeapHealthOS relies on
Some features look for a bill type with a specific code. When you add these in the Tenant Registry, type the code exactly as shown:
Code | Needed for |
|---|---|
| Appointment bills created at booking. |
| Selling packages on the Create Payment screen. |
| Billing prescriptions, from the Pharmacy queue or from a task. Without it, staff see "No Pharmacy bill type is configured". |
Your implementation team adds any other bill types that background features need. If a bill type should not be offered to staff on the Create Payment screen (for example the appointment bill type), turn off Visible.
Bill numbers
Each bill gets a number in this format:
{CENTRE CODE}-{BILL TYPE CODE}-{YEAR AND MONTH}-{SEQUENCE}
For example MAIN-APPOINTMENT-202611-000042 is the 42nd appointment bill at the MAIN centre in November 2026.
- The sequence is counted separately for each centre, bill type and month, and restarts at 000001 each month.
- The month is taken in the centre's time zone.
- The sequence is always six digits.
Each payment gets its own receipt number: RCPT-{bill number}-{n}, numbered in the order payments are made on that bill. For example, the second payment on the bill above is RCPT-MAIN-APPOINTMENT-202611-000042-2. Refunds do not get receipt numbers.
Line items
Each line has:
Field | Notes |
|---|---|
Item type | The section the line was added under, from the bill type's line items. |
Description | What is being charged. Required. |
Quantity | A whole number of at least 1. |
Unit | Defaults to "nos". |
Unit price | Required; cannot be negative. |
HSN/SAC | Copied from the service or inventory item, and printed on the invoice. |
Discount | A percentage or a flat amount for this line. |
GST and tax mode | The GST rate and whether the price includes it. |
Line total | After discount and tax. |
Where GST comes from:
- Services: the GST rate and tax-inclusive setting on the service. See How a price is resolved.
- Medicines and inventory items: the item's own tax settings.
- Items typed by hand on the Create Payment screen: no GST.
Medicine lines also carry a batch and expiry, are priced at the batch MRP by default and cannot be priced above it. See Pharmacy queue, billing and dispensing.
Discounts
A bill can have a discount on individual lines, a discount on the whole bill, or both. Each is either a percentage or a flat amount, never both at once. A bill-wide discount is shared across the lines in proportion to their value, so GST is always worked out on the discounted amount. The invoice shows line discounts, the bill discount and the total discount separately.
On the Create Payment screen, staff set one discount for everything being billed. If several bill types are billed together, it is shared between them in proportion to each bill's subtotal.
Discounts are locked once the bill is issued.
Bill statuses
A bill's status is worked out from its payments. Staff never set it directly: it changes when the bill is issued, paid, refunded or cancelled.
Bill statuses
| From → To | Trigger | Actor | Condition | Side effects |
|---|---|---|---|---|
| DraftPending | Collect Payment or Generate Bill | Front desk | At least one line and a total that is not negative | Invoice PDF generated and issued notification sent |
| PendingPaid | Payment covers the total, or the total is ₹0 | Front desk or patient | Receipt and statement generated; stock dispensed, package or registration activated | |
| PendingPartially Paid | Part payment | Front desk or patient | Amount is less than the amount due | Receipt generated |
| Partially PaidPaid | Balance collected | Front desk or patient | Statement generated | |
| Partially PaidRefunded | Refund | Authorised staff (no screen yet) | ||
| PaidRefunded | Refund | Authorised staff (no screen yet) | Net paid falls below the total | Dispensed stock returned on a full refund |
| DraftCancelled | Cancel bill | Staff (no screen yet) or system | A reason is given | |
| PendingCancelled | Cancel bill, or the appointment is cancelled | Staff (no screen yet) or system | Nothing has been paid | A pending package is cancelled |
| RefundedCancelled | Cancel bill | Staff (no screen yet) | Everything paid has been refunded |
- Draftinitial
- Being prepared. Lines and discounts can still change. The Create Payment screen issues bills straight away, so staff rarely see this.
- Pending
- Issued and waiting for payment. Shown as Pending in Payment tracking.
- Partially Paid
- Some money collected; a balance is still due.
- Paid
- The total has been collected.
- Refunded
- A refund has brought the net amount paid below the total.
- Cancelledterminal
- Cancelled with a reason. Cannot be paid.
Things to know:
- Zero bills: a bill whose total is ₹0 is marked Paid as soon as it is issued, because there is nothing to collect.
- Paid and partly paid bills cannot be cancelled. They must be refunded first.
No screen to cancel or edit an issued bill
There is no button in LeapHealthOS to cancel a bill, change its lines after it is issued, add an adjustment or issue a refund. Unpaid appointment bills are cancelled automatically when the appointment is cancelled. For anything else, see Adjustments, refunds and deposits.
Split invoicing
When Split Invoicing is on in SettingsPlatform ConfigurationSystem Settings on the Billing tab, a bill with lines of several item types is split into one bill per item type. The bills share a bill group:
- Issuing one bill in the group issues them all.
- Payment cannot be collected until every bill in the group is issued ("All split bills in this group must be issued before collecting payment").
- A payment covers the whole group: it pays the bill you started from first, then the older bills in the group.
- A bill discount is shared across the bills in the group.
See Billing and package settings reference for this and other billing settings.
What happens when a bill is paid
When a bill is fully paid, LeapHealthOS also:
- dispenses any medicines or inventory items on it from stock. If stock is short, the payment still succeeds, no stock is deducted for that bill and an activity entry "Stock Dispense Pending" is written. There is no screen to complete the dispense later; see Pharmacy queue, billing and dispensing;
- marks a billed prescription as dispensed;
- activates a patient whose registration fee was pending;
- generates the statement and sends the bill-paid notification.
A package bill is different: the package becomes active on the first payment, even a part payment.
Who can do what
Task | Permission |
|---|---|
View bills | Read permission on Billing |
Create bills | Create permission on Billing |
Issue bills | Publish permission on Billing |
Record payments, cancel bills, resend notifications | Update permission on Billing |
Refunds and approving adjustments | Override permission on Billing |
The Payment menu is shown to admins, receptionists and other non-clinical staff, not to doctors, nurses, counsellors, pharmacists or lab staff who are not admins. See Roles, navigation and switchers.
Related pages
Last updated on