Journal and Chart of Accounts
The clinic keeps proper double-entry books, and it keeps them by itself. Booking an appointment, taking a payment or recording an expense each writes its own journal entry. These two screens are where you read them.
No journal entry is typed here by hand. The one thing you can change is the chart itself: you may add your own accounts and file them under a parent. Find both screens under Journal Entries.
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 a {id} or {token} need a specific record, so they are shown but not linked.
| Screen | Address |
|---|---|
| Journal entries | /all-journal |
| One journal entry | /journal/{id} |
| Chart of accounts and ledger | /chart-of-accounts |
| Payments without entries | /payments-without-entries |
What a Journal Entry Is
You do not need to be an accountant to use these screens, but a few words make everything else on this page readable. Start here.
A journal entry is the clinic's written record of one thing that happened with money. It always has two sides, because money never simply appears: it moves from somewhere to somewhere. One side records where it went, the other where it came from.
Debit and credit are just the two sides
| The word | What it actually means here |
|---|---|
| Debit | One column of the entry. Money arriving into something, or something the clinic is owed |
| Credit | The other column. Money leaving something, or the reason the clinic earned it |
The two columns always add up to the same total. That is the only rule, and the system enforces it: an entry that does not balance is never written.
WARNING
In everyday Arabic, مدين means "someone owes". In the books it does not. Debit and credit here are only the left and right sides of the entry — neither one means good or bad, owed or paid. An expense is a debit and a payment received is also a debit.
One patient, start to finish
Take a patient with a 300 fee. Nothing here is typed by anyone — this is what the system writes on its own:
| What you do | The entry it writes |
|---|---|
| Book the appointment, fee 300 | debit Patient Receivables 300 · credit Clinic Service Revenue 300 |
| Patient pays 300 in cash | debit Clinic Cash 300 · credit Patient Receivables 300 |
Now read it back in plain words:
- After the first entry, the clinic has earned 300 but is holding nothing — the patient owes it.
- After the second, the clinic is holding 300 and nobody owes anything — the debt was replaced by cash.
That is the whole of double entry. Every other entry in the system is a variation on those two lines.
Why the clinic bothers
Because every question about money then has one answer instead of three:
- How much do patients owe us? — one account holds it, and it updates itself with every booking and every payment.
- Did we make money last month? — revenue and expenses are already separated, so Profit & Loss is a reading, not a calculation.
- Where did this number come from? — View Source on any entry jumps back to the appointment, receipt or expense that caused it. No figure in this system is unexplainable.
The words used on these screens
| Word | Meaning |
|---|---|
| Journal entry | One recorded event, made of two or more lines |
| Line | One row inside an entry: one account, one amount, on one side |
| Account | A named box that money is counted in — Clinic Cash, Rent Expense, and so on |
| Debit / Credit | The two sides of an entry. Always equal in total |
| Normal balance | Which side increases that account. Cash grows on the debit side; revenue grows on the credit side |
| Posted | Final and counted. Balances and reports use posted entries only |
| Draft | Written but not counted yet |
| Cancelled | Undone, but kept visible so the history stays honest |
| Chart of accounts | The list of all the accounts, grouped by kind |
| Ledger | Everything that ever moved through one single account, in order |
TIP
Nobody types journal entries in this system. Your job is to record the appointment, the payment or the expense correctly; the entry follows by itself. These two screens are for reading the result.
One Set of Books, With a Branch on Every Entry
A clinic with three locations is still one business with one tax file, so there is one chart of accounts and one journal — not a separate ledger per branch. What changes with a second location is that every entry records which branch it happened in.
On Journal Entries that shows up in two places: a Branch filter beside the date range, and the branch shown next to each entry's code. Filter to one branch and the account balances you see are that branch's — including what the account was carrying before the period you asked for. Clear the filter and you are back to the whole clinic.
Two things people ask about:
- Journal codes are not per branch.
JE-00001onwards is one sequence for the whole clinic, and it does not restart or split when you open a location. Each code is simply displayed with its branch. - A patient's entries always cross branches. Open the journal from a patient's file and you see everything for that patient, wherever it was posted — a patient belongs to the clinic, not to one location.
What Gets Posted, and When
| What you do | What the books record |
|---|---|
| Book an appointment with a fee | Debit Patient Receivables, credit Clinic Service Revenue — the patient owes the clinic |
| Change the fee to zero | The entry is cancelled |
| Record a payment | Debit the cash account for that payment method, credit Patient Receivables — the debt is settled |
| Edit a payment | The entry is re-synced |
| Delete a payment | The entry is cancelled, not erased |
| Post an income transaction | Debit the cash account, credit the account you chose |
| Post an expense transaction | Debit the account you chose, credit the cash account |
| Set a transaction back to Draft | Its entry is removed |
| Mark a payroll as Paid | Debit Staff Salaries Expense, credit Clinic Cash — see Contracts and Payroll |
| Put a visit on a payer's contract | The patient's half stays on Patient Receivables; the company's half moves to Payer Receivables — revenue is untouched, only who owes it changes |
| Record what a company paid on a claim | Debit the cash account for that payment method, credit Payer Receivables — exactly as a patient's payment settles theirs |
| Bill a refused share back to the patient | Debit Patient Receivables, credit Payer Receivables — the debt moves between the two, nothing is created |
| Write a refused share off | Debit Payer Write-offs (5700), credit Payer Receivables — an expense, never a reversal of the revenue you earned on the day |
| Give a patient a discount on what they owe | Debit Discounts & Adjustments (5600), credit Patient Receivables — the price and the revenue stay as they were. See Patient Dues |
| Write off a patient's debt | Debit Patient Bad Debts (5710), credit Patient Receivables — kept apart from discounts so the profit and loss reads bad debt on its own line |
| Undo a discount or write-off | Its entry is cancelled; reversed with an entry dated today if its month has closed |
The payment method decides which cash account moves:
| Method | Account |
|---|---|
| Credit/Debit Card, Bank Transfer | Clinic Bank Account |
| Check | Digital Wallet |
| Cash, Other | Clinic Cash |
| A method your clinic added | The ledger account chosen for it on Payment Methods |
A payment is never saved without its entry
When the journal is on, every payment is saved together with its journal entry, or not at all: on an appointment, a session, a desk invoice, while booking a visit, and on the dues page. Edits and deletes follow the same rule. If the entry can't be posted, the payment isn't saved and the form names the account to fix. Typical causes:
- Patient Receivables (1100) is inactive;
- a method your clinic added has no ledger account.
Every refused attempt is written to the activity log with the person and the reason. Before this rule, a payment could be saved while its entry failed, and the failure only reached the log. Those payments are what the next section finds.
Payments without entries
Journal Entries → Payments without entries lists every payment in the clinic that has no posted journal entry. It covers appointment and session payments, and completed payments on desk invoices. Each row gives the date, patient, record, method and amount, and opens the record the money was taken on. The total at the top is the cash your books are short of.
Filter it by date or branch. Post each one by hand, then check the list again: an empty list means every payment is in the books. The report needs Settings → View, and it only exists when the journal is on.
A date in a closed month
A payment, or a discount, may be dated in a month that has already closed. The payment keeps that date. Its journal entry is dated today, because a closed month has already been read and reported. Correcting or deleting something from a closed month works the same way: instead of rewriting the old entry, a new entry dated today posts the difference.
TIP
Two facts worth internalising: cancelled entries stay in the journal, and only posted entries count towards balances and reports. That combination is what lets you correct a mistake without the books ever losing their history.
Journal Entries
Journal Entries → Journal Entries is the ledger of everything the clinic has recorded. Nothing here is typed by hand: each row was written by an appointment, a payment, a session or an income/expense transaction.
The header counts how many entries exist and how many are posted. Four chips filter by state — All, Posted, Draft, Cancelled — and under Search & Filter there is more:
| Filter | Notes |
|---|---|
| Search | Matches the entry code or its description |
| Patient | Every financial movement for one person, in one screen |
| Status | Posted · Draft · Cancelled |
| Date | A range over the entry date, not the date it was created |
Sort by newest or oldest first, or by entry date ascending or descending. Page sizes are 10, 20, 50 and 100.
The columns
| Column | What it shows |
|---|---|
| Code | The automatic JE-… reference |
| Date | The accounting date of the entry |
| Description | What created it, in words |
| Lines | How many account lines it holds — two for a simple payment, more for a mixed entry |
| Total debit and Total credit | Always equal. That equality is double entry; an entry that failed to balance was never written |
| Status | Posted, Draft or Cancelled |
Opening a patient from their file lands here pre-filtered, with the patient's name in the header and a Clear button to widen back out.
One Journal Entry
The entry page has two tabs: Details and Activity Log.
The header block carries the code, the date, the status, the entity type that produced it (appointment, payment, physio session, income, expense, payroll), the patient where one is involved, and the description.
Then the lines — the entry itself:
| Column | What it shows |
|---|---|
| Account | Which account moved, with its code |
| Patient | The person the line belongs to, where relevant |
| Description | The line's own note |
| Debit / Credit | The amount, on one side only |
View Source is the important button. It jumps to whatever created the entry — the appointment, the receipt, the invoice, the physiotherapy session, the income or expense transaction, the payroll, the goods receipt or purchase return, the supplier, or the payer claim. A record with no page of its own opens the page it is read on: a stock movement opens its item's movements, a supplier payment its supplier. That is how any figure in a report is traced back to the thing that happened.
The way back works too. An appointment, a physiotherapy session, a payment, an invoice, a payroll, a goods receipt and a purchase return each show a small Journal Entry JE-… link at the end of the line under their title, after the branch and date, once they have put something on the books. It opens that entry. A record that has posted nothing, or a clinic with the journal switched off, shows no link.
TIP
Two facts worth internalising: cancelled entries stay in the journal, and only posted ones count toward balances and reports. That combination is what lets you correct a mistake without the books losing their history.
Chart of Accounts
Journal Entries → Chart of Accounts opens on the clinic's whole position in one line, then the account tree beside a panel.
The equation across the top
The top of the page prints the accounting equation with your own figures:
Assets = Liabilities + Equity + Revenue − Expenses
Each term is the total of one type of account, on that type's usual side. Underneath, one line says whether the two sides agree. They always do when every entry balances; if they ever do not, the line says by how much.
A figure in brackets, such as (156,000.00), sits on the opposite side to its type's usual one — owner capital that is a debit, for example. Bookkeepers read brackets as negative.
Click any term to open that type in the panel. On a phone the equation is written down the page as a sum: liabilities, equity, revenue and expenses, a rule, then the assets they add up to.
The tree
The tree on the side lists accounts by type — Assets, Liabilities, Equity, Revenue, Expenses — each with the range of codes the system's accounts use. Every row is an icon, a code and a name:
| Icon | What it is |
|---|---|
| Folder | A parent account. It holds other accounts and takes no entries; its balance is the total of what is under it |
| Page | An account. Entries are posted to it |
Accounts nothing was ever posted to are greyed out; the switch at the bottom of the tree hides them. Search matches a name or a code and opens the branches above whatever it finds. Expand all and Collapse all open or shut every parent.
The tree carries no balances: it is for finding an account. The figures are in the panel.
Every account has a level: 1 for an account at the top of its type, one more for each parent above it. The panel shows it beside the code, and the form tells you the level a new account will sit at.
The panel
What the panel shows depends on what you pick:
| You pick | The panel shows |
|---|---|
| A type | Every account in it, indented as the tree has them, with entries, balance and each account's share of the type. Parent rows are shaded and carry their subtotal |
| A parent account | The same table for what it holds, with the path above its name (Assets › Current assets › …). Each step of the path opens that level |
| An account | Its ledger |
Balances come from posted entries only, with the side they fall on.
Above every panel, a path starts at Chart of accounts and names each level down to what you are reading. Each step opens that level.
A date range
The Date field in the panel narrows the whole page to a period:
| Figure | With a range |
|---|---|
| Entries, Debit, Credit | What moved inside the range |
| Balance, and the equation at the top | What each account held at the end of the range, including what it carried in |
| The ledger | Only the lines inside the range, starting from the balance it opened the range with |
Clear the field to go back to the whole of the books. The range is kept with the branch filter and after adding or editing an account.
The ledger
Picking an account opens every posted line that touched it:
| Column | What it shows |
|---|---|
| Transaction | Date, entry code and description, linked to the entry |
| Debit / Credit | The movement |
| Balance after | A running balance in the account's own direction, so a debit account rises on debits |
The first row is the opening balance: what the account held before the window you are looking at, so a filtered page still adds up. On a later page it says what was carried from the page before. The ledger reads the page's date range and shows 20 rows at a time.
WARNING
Both the panel balances and the ledger read posted entries only. A draft transaction is invisible here — which is the point of Draft, but it does mean an expense you left as a draft never reaches Profit & Loss either.
Adding Your Own Accounts
The accounts the clinic was created with cover what the system posts automatically. You may add your own beside them — one cash box per branch, a separate account for each bank, an expense line your clinic tracks — and group them under parent accounts of your own.
Use Add account at the top of the page, the Add an account to … row under any table, or ⋯ → Add an account under it on a row. The form asks for:
| Field | What to put |
|---|---|
| Account kind | Account if entries will be posted to it. Parent account if it only groups others |
| Account name | One name, in the language your staff read |
| Filed under | A type, or a parent account. Type a name or a code to find it. Each place shows where it sits |
| Code | Suggested as the next free code there. Digits only, and no two accounts share one |
| Normal side | Filled in from the type. Change it only for an account that runs against its type, the way owner withdrawals is a debit inside equity |
After saving, the page comes back open where the account was filed, with the new row highlighted.
Edit on an account's page, or ⋯ → Edit on its row, opens the same form.
What cannot change, and why
| Rule | Why |
|---|---|
| Entries are never posted to a parent account | Its balance is the sum of what is under it. A line posted to it directly would be counted by none of them |
| The system's own accounts keep their code | Payments, invoices and sessions post to them by code. You may still rename one, or file it under a parent of its type |
| Nothing is filed under a system account | The system posts to it directly, so it must stay an account |
| Once an account has entries, its kind and normal side are fixed, and it moves only within its own type | Its entries were read against them. Changing either would restate months already reported |
| Filing an account under one of your own accounts that has no entries makes that one a parent | The form warns you before you save |
Parent accounts never appear in the account list of Income and Expense, on a payment method, or on an item category. Only accounts that take entries do.
INFO
Adding and editing accounts needs a connection. Offline, the chart can still be read, but the buttons wait until you are back online. On the desktop app it works the same way.
The Account Categories
Categories group accounts for the filter and for reporting. Ten ship with the system:
| Category | Arabic | Accounts | Tied to |
|---|---|---|---|
| Cash & Bank | النقدية والبنوك | 1000, 1010, 1020 | — |
| Receivables | الذمم المدينة | 1100, 1110 | — |
| Inventory & Equipment | المخزون والمعدات | 1200, 1300 | — |
| Patient Liabilities | التزامات المرضى | 2000 | — |
| Payables & Accruals | الموردون والمصروفات المستحقة | 2100, 2200, 2900 | — |
| Equity | حقوق الملكية | 3000, 3100 | — |
| Appointment Revenue | إيرادات المواعيد | 4000, 4100 | appointments |
| Physio Revenue | إيرادات الجلسات الطبيعية | 4200 | physiotherapy sessions (reserved — see below) |
| Operating Expenses | المصروفات التشغيلية | 5000, 5300, 5400, 5500, 5600, 5700, 5710 | — |
| HR Expenses | مصروفات الموارد البشرية | 5100, 5200 | — |
The two revenue categories carry an entity type, which is how the system knows a session's income belongs somewhere different from a consultation's.
Every Account
All twenty-three, as shipped, and what each one is for.
This is the table to consult when recording something in Income and Expense: that form lists every active account that takes entries in one dropdown — your own included, parent accounts left out — so the choice is yours. Two rules make it easy:
- Pick the account that names the reason for the money — rent, supplies, salaries, owner withdrawal.
- Never pick a cash account there. The cash side is chosen for you by the payment method.
Normal balance tells you which side increases the account. The last column says whether the system moves it on its own, or only when you choose it.
Assets — what the clinic has
| Code | Account | Normal | What it is for | Moves |
|---|---|---|---|---|
| 1000 | Clinic Cash · النقدية | Debit | Physical money in the drawer | Automatic |
| 1010 | Clinic Bank Account · الحساب البنكي للعيادة | Debit | Money in the clinic's bank account — where card payments land | Automatic |
| 1020 | Digital Wallet · المحفظة الرقمية | Debit | Vodafone Cash, InstaPay, an uncleared cheque — the clinic's money, but not in the drawer | Automatic |
| 1100 | Patient Receivables · مديونيات المرضى | Debit | What patients owe right now. Booking a fee raises it, a payment lowers it. The basis of the receivables report | Automatic |
| 1110 | Payer Receivables · مديونيات جهات الدفع | Debit | What insurers and companies owe you — the payer's half of every covered visit, until a claim is settled. Deliberately apart from 1100: patients and companies are chased in completely different ways | Automatic |
| 1200 | Medical Inventory · المخزون الطبي | Debit | Stock bought and not yet used — the value of what is on the shelf | You pick it |
| 1300 | Medical Equipment · المعدات الطبية | Debit | Things bought to keep and use for years: a chair, an X-ray unit, a laptop | You pick it |
Liabilities — what the clinic owes
| Code | Account | Normal | What it is for | Moves |
|---|---|---|---|---|
| 2000 | Patient Advance Payments · دفعات المرضى المقدمة | Credit | Money taken before the service exists — a deposit on a treatment plan. It is the patient's money until the work is done | You pick it |
| 2100 | Suppliers Payable · الموردون | Credit | Invoices received from suppliers and not yet paid | You pick it |
| 2200 | Accrued Expenses · المصروفات المستحقة | Credit | Costs already incurred but unbilled — this month's electricity before the bill arrives | You pick it |
| 2900 | Tax Payable · الضريبة المستحقة | Credit | Tax collected or due and not yet handed over | You pick it |
Equity — the owner's stake
| Code | Account | Normal | What it is for | Moves |
|---|---|---|---|---|
| 3000 | Owner Capital · رأس مال المالك | Credit | Money the owner puts into the clinic from outside — the opening float, an injection to cover a bad month | You pick it |
| 3100 | Owner Withdrawals · سحوبات المالك | Debit | Money the owner takes out for personal use. Not an expense — the clinic did not spend it on anything | You pick it |
Revenue — what the clinic earns
| Code | Account | Normal | What it is for | Moves |
|---|---|---|---|---|
| 4000 | Clinic Service Revenue · إيرادات خدمات العيادة | Credit | The clinic's own work: appointment fees, consultations, and the service part of a physiotherapy session | Automatic |
| 4100 | Medical Consultation Revenue · إيرادات الاستشارات الطبية | Credit | Physical products sold during a visit or a session — despite the name, this is the product-sales account | Automatic |
| 4200 | Procedure Revenue · إيرادات الإجراءات الطبية | Credit | Reserved for procedures. Nothing posts here today: sessions credit 4000 and 4100 instead, so it stays at zero unless you pick it yourself | Not used yet |
Expenses — what the clinic spends
| Code | Account | Normal | What it is for | Moves |
|---|---|---|---|---|
| 5000 | Clinic Rent Expense · مصروف إيجار العيادة | Debit | Rent for the premises | You pick it |
| 5100 | Staff Salaries Expense · مصروف رواتب الموظفين | Debit | Wages and salaries. Marking a payroll Paid posts here by itself; you can also record a salary by hand | Automatic + you pick it |
| 5200 | Doctor Commission Expense · مصروف عمولات الأطباء | Debit | A doctor's share of what they brought in | You pick it |
| 5300 | Medical Supplies Expense · مصروف المستلزمات الطبية | Debit | Consumables used up in the work: gloves, anaesthetic, gauze | You pick it |
| 5400 | Utilities Expense · مصروف المرافق | Debit | Electricity and water | You pick it |
| 5500 | Internet & Communication Expense · مصروف الاتصالات والإنترنت | Debit | Internet, phone lines, mobile credit | You pick it |
| 5600 | Discounts & Adjustments · الخصومات والتسويات | Debit | A goodwill discount or a rounding difference — so that what patients owe on paper matches what you will actually collect. A discount given on the dues page posts here | Automatic + you pick it |
| 5700 | Payer Write-offs · إعدامات جهات الدفع | Debit | A share a company refused and you decided to stop chasing. An expense, never a reversal of revenue | Automatic |
| 5710 | Patient Bad Debts · ديون معدومة - مرضى | Debit | A patient's debt written off as uncollectable from the dues page. Apart from 5600, so bad debt and goodwill read separately | Automatic |
TIP
Supplies vs inventory, in one line: if it is used up in the work, it is Medical Supplies Expense (5300). If it is sitting on a shelf with value, it is Medical Inventory (1200). If it will still be here in three years, it is Medical Equipment (1300).
TIP
Accounts are picked by code, not by name, so renaming one — or translating it — never breaks the automatic posting behind it.
Using This to Answer Real Questions
| Question | Where to look |
|---|---|
| How much cash should be in the drawer? | Chart of Accounts → Clinic Cash balance |
| How much do patients owe us in total? | Chart of Accounts → Patient Receivables — or Patient Receivables report for the ageing breakdown |
| Where did this figure come from? | Open the journal entry and use View Source |
| What has this patient ever paid or owed? | Journal Entries filtered by that patient |
| Did we make money last month? | Profit & Loss |