Accounting in Fexl Lite
Fexl Lite is a POS that happens to keep a ledger. Every flow that touches money — selling a product, refunding a customer, paying a supplier, logging an expense, moving cash between drawers — writes a balanced journal entry through one chokepoint, and every report (P&L, Balance Sheet, Cash Flow, Trial Balance, GL) reads from those entries. This section is the manual for that ledger.
Double-entry, made unobtrusive
The cashier doesn’t see journal entries. They see invoices, receipts, refund dialogs, expense forms. Behind every one of those user actions is a balanced JE — DRs equal CRs, sources linked, dates aligned to the business day. The bookkeeping isn’t an opt-in module; it’s the thing that lets the rest of the system answer questions consistently.
A cash sale of one product:
DR 1010-006 cash sub-account 65.00 CR 4010 Sales Revenue 65.00DR 5010 COGS — Products 28.00 CR 1200 Inventory 28.00Two debits, two credits, balanced. Four lines that ten different reports will aggregate differently — one for the cash drawer, one for revenue, one for cost of goods sold, one for the inventory valuation. They all reconcile because they’re all reading the same JE.
The accounts, the costing, the prepaid runner, the migration
This section breaks down into five areas:
Chart of accounts
Every code Fexl Lite seeds — 1010 cash, 1100 AR, 1200 inventory, 2010 AP, 4010 revenue, 5010 COGS, the 6xxx expense block — and what posts where.
Journal entries
The shape of every JE: header, lines, source linkage, the balanced-entry invariant, and the canonical patterns by flow.
FIFO costing
How inventory_transactions.qty_remaining carries the open layer, how egress drains oldest-first, how the per-egress unit cost gets stamped at sale time.
Prepaid expenses
Capitalise the up-front payment to 1300, recognise to 6xxx on a monthly schedule. The runner that posts amortisations automatically.
Retroactive migration
Backfill journal entries on a tenant whose data started without them. Idempotent; safe to re-run; the Settings → Accounting → Run Retroactive Migration button.
Where the ledger surfaces
Every report listed below reads journal_entries directly:
- Trial Balance — the cheapest place to detect an unbalanced JE.
- General Ledger — every line, every account, every date.
- Balance Sheet — assets, liabilities, equity at any moment.
- Profit & Loss — revenue and expenses across a period.
- Cash Flow — direct method, sourced from cash-account legs.
The Inventory Valuation, AR / AP Aging, and Cash Drawer reports read more specialised tables but reconcile to ledger totals — for the line-by-line, every road leads to the GL.
The “comp” exception
A standard chart, a stable code system
Fexl Lite seeds a fixed chart of accounts when a tenant boots — 1010 cash, 1100 AR, 1200 inventory, 2010 AP, 2020 VAT, 4010 revenue, 5010 COGS, the 6xxx expense block, the 1010-* sub-account block per cashier. Every handler posts by code, never by name or ID — so renaming “Sales Revenue” to “Retail Income” in your locale doesn’t break anything; the GL still aggregates the same lines under the same code.
The full reference, by code, is on the Chart of accounts page.