Skip to content

One Set of Books — How Money Moves Through Veona

Veona keeps one set of books. There is no separate “accounting system” bolted onto the side of the hospital — the act of billing a patient, dispensing a drug, receiving stock, paying a supplier, running payroll or depreciating equipment is the accounting entry. Each of those events posts into a single General Ledger (the GL — the master record of every financial movement, account by account), and the four core financial statements are computed live from that one ledger. Nothing is keyed twice; nothing drifts.

Who / when: this page is for the Finance Manager and the Accountant who own the books, and for the Administrator who oversees the whole facility. It is the orientation everyone in finance reads first; the rest of this journey then shows each screen in detail. The events that feed the ledger are performed across the hospital — a cashier issues an invoice, a pharmacist dispenses, a storekeeper receives goods — but they all converge here.

We will follow Tunde the finance officer, who has just joined the hospital and wants to understand, end to end, where the money goes.

Every entry in the ledger has two sides that must be equal. A debit (Dr) and a credit (Cr) are simply the two directions a value can move; for every amount that goes one way on one account, an equal amount goes the other way on another. The rule never bends: total debits always equal total credits. That is what makes the books balance.

A bundle of these balanced lines posted together is a journal entry (or voucher). Some you raise by hand (see Post a Manual Journal Entry); the overwhelming majority Veona posts for you, automatically, the moment a clinical or operational event completes. Either way, the same engine writes them, and the same rule holds.

The posting map — every event, one ledger

Section titled “The posting map — every event, one ledger”

Here is the whole hospital expressed as ledger entries. Read each as “when this happens, Veona posts that”. Every single one lands in the same General Ledger.

When a patient (or their insurer) is invoiced for care, Veona posts:

Dr Accounts Receivable (they now owe us) — Cr Revenue (we earned it)

The patient’s balance rises and revenue is recognised, in one balanced entry. See Veona Bill and the Billing journey.

When the patient settles (cash, card or wallet, on the cleared state):

Dr Cash / Bank (money arrived) — Cr Accounts Receivable (they owe us less)

Cash goes up; the receivable comes down. If a balance is never collected and is written off, Veona posts Dr Bad-Debt Expense / Cr Accounts Receivable instead.

When a pharmacist dispenses a drug, two things happen. The stock you consumed is relieved from inventory to cost:

Dr Cost of Goods SoldCr Stock In Hand (at weighted-average cost × quantity, tagged to the consuming cost center)

…and the charge for that drug flows to the patient’s invoice exactly like any other billable event (Dr Accounts Receivable / Cr Revenue, above). So a single dispense both recognises the cost and the revenue, in the one ledger. See the Medication journey and Veona Stock.

When the storekeeper confirms goods arriving from a supplier:

Dr Stock In Hand (inventory rises) — Cr Goods Received Not Invoiced (we received it but the bill hasn’t arrived)

Goods Received Not Invoiced (GRNI) is a temporary “holding” account between receiving the goods and receiving the invoice.

When the supplier’s invoice arrives and is submitted:

Dr Goods Received Not Invoiced (clearing what the receipt parked there) + Dr input VAT + Dr/Cr Purchase Price Variance (if the invoiced price differs from the received price) — Cr Accounts Payable (we now owe the supplier, tagged to that supplier)

GRNI nets to zero against the earlier receipt; what remains is a payable. See the Procurement journey.

When you pay the supplier:

Dr Accounts Payable (we owe less) — Cr Cash / Bank (money left) + a realized FX gain or loss if the invoice was in a foreign currency and the rate moved between invoicing and paying.

When a pay run is approved, Veona posts one balanced accrual:

Dr Salary & Wages Expense (the gross, split by each employee’s department cost center) + Dr Employer Statutory ExpenseCr PAYE Payable (tax withheld) + Cr Pension Payable (employee + employer pension) + Cr Net-Salary Payable (what staff take home)

The gross cost hits expense; everything withheld becomes a payable you later remit. See the HR Pay-Run journey.

When the monthly depreciation run posts (from the Assets module):

Dr Depreciation ExpenseCr Accumulated Depreciation (a contra-asset that reduces the asset’s net book value)

Each capitalised asset wears down a little, as expense, every period. See the Assets journey.

When a unit of blood is issued for transfusion, it behaves like any sold good — both sides post:

Cr Revenue (via the billing Accounts-Receivable seam — the patient is charged) AND Dr Blood Cost of Goods Sold / Cr Blood Inventory (at the unit’s acquisition cost)

If a unit is instead discarded or expires, Veona relieves it to a loss head: Dr Inventory-Loss / Cr Blood Inventory. See Blood Bank.

Every one of those postings — whether Veona raised it automatically or Tunde typed it by hand — goes through the same posting engine, which enforces, in order:

  1. It must balance. Total debits equal total credits in the transaction currency, and each line is one-sided (a debit or a credit, never both). An unbalanced voucher is rejected and never saved.
  2. The period must be open. The posting date must fall inside an open accounting period. A closed or locked period (or a date with no period at all) is refused. See Fiscal Years and Periods.
  3. Currency is converted to base. If the entry is in a foreign currency, the engine looks up the exchange rate effective on the posting date and stores the base-currency value on every line. A foreign posting with no rate on file is rejected — Veona never silently mis-states the base ledger. See Multi-Currency and Exchange Rates.
  4. The ledger is immutable. Ledger lines are insert-only. You never edit or delete a posted entry — a correction is a reversing voucher (debits and credits swapped), so the audit history is complete and tamper-evident.
  5. Re-posting is safe. If the same source event tries to post twice, the engine recognises it and does nothing the second time — a retried dispense or payment can never double-count.

The four statements — computed live, never stored

Section titled “The four statements — computed live, never stored”

Tunde does not assemble the financial statements by hand, and Veona does not keep pre-rolled totals that could go stale. Every statement is computed live from the immutable General Ledger, in your base currency, the moment you open it:

  • The Trial Balance lists every account’s net balance and proves total debits equal total credits — the books’ internal consistency check. See Trial Balance.
  • The Income Statement (Profit & Loss) is income less expense over a chosen period. See Income Statement.
  • The Balance Sheet is assets, liabilities and equity as of a date, with profit to date folded into Retained Earnings. See Balance Sheet.
  • The Cash Flow is the direct money-in / money-out of your cash and bank accounts over a period. See Cash Flow.

Because they are derived from the one ledger, they can never disagree with it — or with each other.

When a fiscal year is closed, Veona posts a final entry that zeroes every income and expense account into Retained Earnings (a profit credits Retained Earnings; a loss debits it). The year’s performance rolls into equity, the income/expense accounts start the next year at zero, and the Balance Sheet carries forward. See Fiscal Years and Periods.

Now that Tunde sees the shape of the whole thing — every event, one ledger, four live statements — he can work each screen with confidence. The natural next step is the chart of accounts: the named accounts every one of those postings lands in. Set that up (or browse what provisioning seeded), make sure Finance Settings maps each account the subledgers post against, and the automatic postings above will simply flow.