Every sale posts its own journal entry
Not a summary assembled at month-end — a double-entry posting written when the bill saves. Minimum two lines, and the debits have to equal the credits exactly or the write is rejected.
- What a sale actually posts
- It debits the accounts the payments landed in — cash into Cash, card and bank transfer into Bank, and whatever the customer left unsettled into Accounts Receivable, which is the khata case — credits Sales Revenue for the net and Tax Payable for the tax, then debits Cost of Goods Sold and credits Inventory at what those exact batches cost.
- Debits equal credits, or nothing is written
- An entry needs at least two lines and has to balance to the rupee; an unbalanced write is refused. Underneath that, a database check constraint makes it physically impossible for one line to carry both a debit and a credit, or to carry a negative — the rule holds even against a write that goes straight at the table.
- A retried sale cannot post twice
- A partial unique constraint allows one active entry per source record. The same bill posting a second time is refused by the database, not caught later by someone reading a report and noticing the revenue doubled.
- Corrections are reversals, not edits
- A wrong entry is corrected with a mirror entry — every line the same, debit and credit swapped. The original stays exactly as it was posted, so the record shows both what happened and what was done about it.
- 13 accounts and 11 journal source types on day one
- Cash, Bank, Accounts Receivable, Inventory, Accounts Payable, Goods Received Not Invoiced, Tax Payable, Store Credit Liability, Owner Equity, Sales Revenue, Cost of Goods Sold, Discounts Given and Operating Expenses are created with your organisation. 12 of them are bound to system keys, so postings resolve an account by its role rather than by a name someone typed. Every entry is stamped with one of 11 source types — sale, customer payment, purchase receipt, refund, expense accrual, reversal and the rest.