Charge, collect, and account for every peso
Billing & Cashier handles the money side of the clinic — what each patient owes, what they have paid, and what is still outstanding. It keeps the cashier's day clear and the books in order.
What it does
- Records charges for consultations, services and items.
- Bills from what the visit says the patient availed — the appointment's availed-items checklist is the single source of truth, so the bill always matches the record of care (see below).
- Charges a package as one agreed amount, showing the difference against its parts as a discount on the bill.
- Pulls up the charges for a whole visit by its reference number, so the cashier settles everything from that encounter together.
- Settles several of a patient's charges in one payment, in full or in part, and prints a single receipt that lists each charge and notes any balance still owing.
- Lets the cashier swap a dispensed medicine to another available brand on a charge line, with the brand shown on the receipt.
- Takes payments and issues a record of what was paid.
- Tracks outstanding balances so nothing slips through the cracks.
- Handles cash going out as well as coming in.
- Keeps a clear trail of every transaction.
Where charges come from
Charges are raised on the visit itself, from the availed-items checklist on the appointment: tick what the patient received and it goes on the bill; untick it and it comes off. Reception, nurses and doctors can all do this, so a bill is never held up waiting for one person.
Because the checklist is the single source of truth, a patient is only ever charged for what was recorded as given — nothing is added behind the scenes. Completing a visit does not raise a charge by itself, so a visit that was never billed simply has nothing owing; record what the patient availed and it appears on their balance.
The cashier's screens are unchanged: charges arrive on the patient's balance the same way, are settled together by reference number, and print on one receipt.
The visit shows its whole bill, not just the open one. Because charges are gathered by the visit's reference number, the appointment lists every charge raised against that visit — settled, voided, or still open, and whether it came from the availed-items checklist or from the laboratory, imaging or the pharmacy counter during the same visit. Each is shown with its lines, discounts, total, amount paid and balance, under a billed/paid/balance summary for the visit, with links through to view or take payment. Nobody has to piece a day together from separate screens to answer what a patient still owes.
A lab test is billed once per visit, however it gets there
A lab test can be billed to a visit from more than one place — a lab order, a repeat order, a checklist service that includes the test, or a package with that service among its components. All of these can happen in any order, including after the fact (ticking a linked service once a test has already been ordered, or unticking it again later).
CareClinic keeps the invariant simple from the cashier's side: one visit is charged for one test once. Whichever line would otherwise double the charge keeps its description and unit price, is marked "billed on another line for this visit", and totals ₱0.00 for that test, so the full record of what was done still appears — nothing is hidden, only the second charge is. A package counts each lab test it includes at that test's share of the package price, not its full list price, so marking a package line never takes off more than the package actually charged for the test. Untick or remove the line that is currently paying for the test and the charge moves to the next eligible line automatically; a re-saved checklist nets out to the same total every time.
The line that keeps the charge is decided in a fixed order, so the answer is always the same for the same set of facts:
- A line that has already collected money for it wins outright. Once a charge is partly or fully paid, its lines are not silently discounted out from under the payment.
- Otherwise, a checklist service or package pays for it — the price the clinic set on that catalogue item.
- Otherwise, the lab order pays for it. A repeat order of a test already billed elsewhere adds nothing further.
Sometimes every line for a test sits on a bill that has already been paid, and each of them was marked "billed on another line" — for instance the checklist service that was paying for it was later zeroed at the cashier. Those paid lines are never changed, so CareClinic adds one new lab line for the test to the visit's open bill instead. The test is then billed exactly once rather than not at all.
A checklist can't rewrite a bill that already has a payment. If the visit's open bill is partly paid, saving the availed-items checklist changes nothing — neither the checklist nor the bill — and shows: "This visit's bill already has a payment, so its lines can't be changed here. Void or refund at the cashier." Removing or replacing a line under a payment would change what the patient has already paid for, so that correction belongs to the cashier. The same applies when a checklist line sits on an earlier bill rather than the visit's current one — a checklist first saved before the visit had a reference number, or a visit whose bill has since been paid in part or in full. If that bill has a payment, the save is refused with the same kind of message. If it has no payment, the old line is removed from it and that bill's total drops accordingly, so re-saving never charges the patient for the same item twice. Lines on a voided bill are left alone. A bill with no payment yet updates as usual. Saving the checklist also gives a visit its reference number if it has none yet, so the lines always land on that visit's own bill.
This applies to lab tests specifically — imaging studies have no equivalent linked-service overlap to guard against.
Why it helps
For the clinic
A reliable record of income and outstanding balances means healthier cash flow and far less guesswork at the end of the day.
For doctors
Doctors can focus on care, confident that the charges for their services are captured accurately.
For staff
The cashier sees exactly what each patient owes and what has been settled, making collections faster and disputes rarer.
For patients
Clear, itemized charges and proper records mean no surprises and an easy way to see what they paid for.
The cashier and outstanding-balance views remain available to your team even if other optional billing features are switched off, so day-to-day collections never stop.
The Cashier role
Cashiers sign in at their clinic's normal subdomain and work from Cashier (/cashier). A Tenant Admin adds one through Staff → New, selects Cashier, and either links the existing user account or creates an account with a temporary password. The staff profile and cashier role are assigned together, so the account can sign in immediately.
The default Cashier role can search patients, review and create charges, collect payments, print receipts, and view or export its transaction list. It can use the billable service and pharmacy lines already presented in the cashier flow, but it cannot browse or manage Pharmacy inventory, change prices or discounts, void charges, manage disbursements, view revenue reports, or open clinical records. A Tenant Admin may create a separate custom role when a clinic deliberately needs a different separation of duties.
Where a clinic also runs Pharmacy Counter, the cashier gets a Pharmacy Queue of counter orders waiting to be paid, oldest first, with the amount due already worked out. A pharmacist who does not hold the cashier's payment permission cannot settle at the counter, so the order comes here instead — which is how a clinic keeps selling and collecting in different hands. A pharmacist who does hold both settles on the spot, and nothing reaches this queue.
Counter takings appear in the revenue report broken out from patient charges, because a walk-in sale is settled in its own right rather than against a patient's account. A sale is only ever one or the other, so nothing is counted twice.
The transactions page, the revenue report and their PDF exports also break takings down by line type — services, packages, laboratory, imaging, pharmacy and miscellaneous. Lab and imaging lines are billed straight from their orders and have their own rows.
When a patient's records are deleted
Charges, payments and receipts survive a patient deletion. The clinic's books have to balance, and accounting obligations outlive a request to be forgotten.
What changes is the name: the patient becomes "Deleted patient #4" everywhere the record appears — invoices, receipts, the outstanding list and revenue reports. Totals are unaffected, so a report run before and after a deletion shows the same figures.
Because of this, a patient with an unpaid balance cannot be deleted. Settle it or void the charge first. The system refuses the request and tells you the amount outstanding, rather than quietly leaving you a balance you can no longer chase or write off against a named patient.
Deploying this update
Run tenant migration 089 on every tenant before deploying this code. Every charge line the new code inserts or updates writes three new columns, so on an un-migrated tenant all of these fail, not just lab billing: adding an item or creating a charge at the cashier, changing a line's brand, pharmacy, imaging and consultation charges, the charge API, the accounting screens and the availed-items checklist. The migration only adds nullable columns and widens the item-type list, so the code being replaced runs unchanged on a migrated database. Migrate first, then deploy. See Laboratory for the details.