Patient Dues
Patient dues is one page that lists everything a patient still owes: unpaid appointments, treatment sessions and invoices, from every branch. Each line has its own Add payment button. Use it when a patient at the desk asks "what do I owe?". You don't need to open each visit to find out.
Where to Find It
Click an address to open that screen on your own clinic. The first click asks which clinic you are, then remembers it. Addresses holding an {id} need a specific record, so they are shown but not linked.
| Screen | Address |
|---|---|
| A patient's dues | /patient/{id}/dues |
| A patient's statement | /patient/{id}/statement — see Patient Statement |
| Discount reasons | /due-adjustment-reasons |
From a patient's file there are three ways in:
- Add payment in the page header.
- The balance figure under the patient's name.
- The bar at the top of the Payment information tab.
What the Page Shows
The total at the top
The top of the page gives the Total owed. Under it:
- how many records are unpaid;
- the date of the oldest;
- how much of the total is more than 30 days overdue;
- a bar that splits the total between appointments, sessions and invoices. Click a part of the bar to list only that kind.
The list
Each line is one record: an appointment, a session or an invoice. It shows the date, the total, what is paid, what is remaining and the payment status. Click a line to open the record itself.
- Today's records come first. The patient in front of you is usually paying for today's visit. Older debts follow under Earlier dues, oldest first.
- Overdue tags mark a line that is more than 30, 60 or 90 days old. These are the same buckets as the receivables report.
- Another branch's records are listed too, tagged with that branch's name. A patient owes the clinic, not the desk they happen to be standing at.
- Use the chips to show Appointments, Sessions or Invoices only. Recently paid lists the records settled in the last 30 days.
The figures are the patient's share. If the visit is on an insurance contract, the company's part is not listed here, because the patient doesn't owe it.
What is not listed
- A cancelled appointment owes nothing. A payment taken on it before it was cancelled stays on the patient's account (see the statement).
- A session booked ahead as one of a course's dates owes nothing until it takes place.
- A draft invoice is not owed until it is issued.
- An invoice written from a visit or a session is not listed separately. The visit or session already carries that money.
The page's Total owed is the same figure as the balance on the patient's file.
Taking a Payment
On one record
Click Add payment on the line. The dialog shows what the record costs, what is paid and what is left. Click the remaining amount to fill it in.
| Field | Notes |
|---|---|
| Amount * | Never more than what is left on the record. If the patient pays extra, take only what is owed |
| Payment method | Your clinic's payment methods |
| Date | Today by default. See A date in a closed month |
| Note, Attachments | As on any payment |
Under the amount, the dialog tells you what will be left on the record after saving.
Pay all, or pay several
- Pay all (in the header) takes one amount and spreads it over every owed record.
- Pay selected works on the records you ticked in the list. The bar above the list shows how many you ticked and what they owe.
The amount is spread oldest first: the oldest record is settled before the next one gets anything. The dialog lists every record with what it will take and what will be left on it, so you can check the split before you save.
- Untick a record in the dialog to leave it out. It takes nothing, and the amount box follows what the remaining records owe.
- Typing a smaller amount is fine. It settles the oldest records first and stops when it runs out.
- If someone else pays one of these records while your dialog is open, saving refuses and shows the new figures. Check the split and save again.
The money is saved as one ordinary payment on each record it reached, so each visit, session and invoice still shows its own payments. In the patient's Payment information tab these rows are marked Part of one payment over N records. Deleting one of them deletes the whole payment from every record, and the delete asks you first.
The receipt
After saving, a bar at the top of the page confirms what was taken and offers two buttons:
- Print receipt prints who paid, how much, which records it covered, and what the patient still owes after it. The receipt is a print template (Payment receipt), so you can change its wording and layout.
- Send on WhatsApp opens a WhatsApp message to the patient's number with the same details. You press send in WhatsApp yourself. The button is missing if the patient has no phone number.
Which drawer and which branch
- The drawer is yours. The payment goes into the cashier shift you have open, in the branch you are working in, even when the record belongs to another branch.
- The income is the record's. Revenue and its journal entry stay with the branch that did the work.
Discounts and Write-offs
Use this when the clinic decides the patient will not pay the full price: a goodwill discount, a staff discount, a pricing mistake, or a debt nobody will ever collect. Don't edit the price on the appointment or session. That rewrites what the service cost, and afterwards nobody can tell who decided it or why.
On the dues page, the % button beside Add payment opens Discount on this record. On a phone it is labelled Discount.
| Choice | What it does |
|---|---|
| Discount | Takes part of what is left off. Type an amount, or switch to % for a percentage of what is left. The dialog shows the amount taken off and what remains before you save |
| Write off | Closes the record for everything that is left. The record leaves the owed list and reads Written off under Recently paid |
Both need a reason from your clinic's list, plus an optional note. The date defaults to today.
- The price never changes. The record still says what the service cost. The discount is a line of its own, shown with who gave it, when and why, on the dues page, on the visit, session or invoice page, and in the patient's Payment information tab.
- It can't go past what is owed. A discount larger than the remaining amount is refused, and the dialog says what the most is.
- A percentage is rounded once, to the piastre, when you save. That same amount appears everywhere afterwards.
- A written-off record takes no more payments. If the patient comes back and pays it, undo the write-off first, then take the payment.
Undoing one
Each discount line has an Undo button. Undoing it puts the amount back on the record. The discount itself is kept in the record's activity log, marked as undone. It is never deleted.
Who can give one, and how much
- Giving and undoing discounts is its own permission: Payments → Discounts and write-offs. It goes to roles that can edit the clinic's settings. Give it to anyone else on purpose. See Staff and Roles.
- A limit per person. On an employee's form, Discount limit (% of record total) caps what that person may take off one record, counting what was already taken off it. With a limit of 10%, a receptionist can give 10% of a 300.00 visit (30.00), in one go or as two smaller discounts, and nothing more. Leave the field empty for no limit. Above the limit the discount is refused; nothing goes to anyone for approval.
The reasons list
Every clinic starts with four reasons, named in Arabic: خصم مجاملة (courtesy discount), خصم موظفين (staff discount), تعذّر التحصيل (could not be collected) and خطأ في التسعير (pricing error). A reason has one name, so rename them as you like. Edit the list on Discount reasons. The reason dropdown in the dialog also ends with a link to it.
- Use the arrows to change the order. The dropdown follows it.
- Each reason has its own page, listing the discounts given for it.
- A reason that has been used is never deleted. Switch it off and it disappears from the dropdown but stays on the discounts that already name it.
What Happens in the Books
If your clinic uses the journal, every action here posts its own entry, and the dialog previews it before you save (Journal entry, folded under the form):
| Action | Entry |
|---|---|
| A payment on one record | Debit the payment method's account, credit Patient Receivables (1100) |
| A spread payment | One such entry for each record it reached |
| A discount | Debit Discounts & Adjustments (5600), credit Patient Receivables |
| A write-off | Debit Patient Bad Debts (5710), credit Patient Receivables |
| Undoing a discount | Its entry is cancelled, or reversed today if its month has closed |
Revenue already booked on the day of the visit is never touched, and a discount moves no cash.
Saved together or not at all
A payment or a discount is saved only together with its journal entry. If the entry can't be posted, nothing is saved, and the dialog says why. For example, account 1100 may be inactive, or a payment method your clinic added may have no ledger account yet. Anyone who can open the chart of accounts gets a link to it. See Accounting: a payment is never saved without its entry.
A date in a closed month
You may date a payment or a discount in a month that has already closed. The payment or discount keeps the date you typed. Its journal entry is dated today, because a closed month has already been reported and nothing new may land in it. The dialog warns you before you save.
When the page and the books disagree
The page's Total owed should always equal the patient's balance on Patient Receivables. If it doesn't, users who can open the chart of accounts see a warning with both figures and the difference. That means an entry is missing or wrong somewhere: check the Payments without entries report first.
Who Can Do This
| To | Permission |
|---|---|
| Open the dues page | Patients → View Patient Payments |
| Take a payment | Payments → Add (an invoice also needs Invoices → Record Invoice Payments) |
| Delete a payment | Payments → Delete |
| Give or undo a discount, edit the reasons | Payments → Discounts and write-offs |
Without Internet
The dues page, discounts and the statement need a connection.