The Auto-Journal Engine
Every operational action generates balanced double-entry journal entries. Your books are always correct — by design, not by effort.
The problem with restaurant accounting
Most restaurant operators face the same impossible choice: spend hours on manual bookkeeping or accept that your financials are always behind, incomplete, or wrong.
Restaurant operators aren’t accountants — they shouldn’t have to be.
Manual journal entry is error-prone and time-consuming.
Most restaurant software doesn’t do accounting at all.
You end up with operations in one system and accounting in another.
Month-end reconciliation becomes a nightmare.
BasilBook's approach
You never write a journal entry. You record a purchase, import sales, log waste, run payroll — and the system generates every Dr/Cr entry automatically. Balanced, classified, and linked to its source. Accounting happens as a side effect of doing your job.
Purchase Journals
Every purchase line resolves its own GL account based on item configuration. Tracked inventory items debit the asset account; expense items hit the P&L directly.
- Each purchase line resolves its own account based on item configuration
- Payment account determined by purchase payment method
- Total always balances (Dr = Cr enforced before posting)
Sales Journals
Every imported invoice generates a balanced journal entry. Revenue is classified automatically by sale item category — food vs beverage, dine-in vs delivery.
- Food items → Food Revenue (4000) or Delivery Food Revenue (4210)
- Beverage items → Beverage Revenue (4100) or Delivery Beverage Revenue (4220)
- Commission = gross amount × platform commission rate
- Per-invoice entries with reference to invoice number
Waste Journals
When tracked inventory is wasted, the cost moves from the asset account to a waste expense. Each entry links back to the waste record for full traceability.
- Only for tracked inventory items (expense items have no stock to deduct)
- Links back to the waste record via referenceId
- Waste reasons preserved: spoiled, expired, overcooked, prep waste, unknown loss
Expense Journals
Overhead costs like rent, utilities, and services are recorded as direct expenses against a payment account.
- Not tied to inventory items
- Expense account selected per transaction
- Payment account defaults to Cash on Hand
Payroll Journals
When a payment account is selected, salaries are recorded as an immediate expense. Without a payment account, an accrual is created against the Payroll Payable liability.
- Most restaurants pay immediately — Dr Expense, Cr Cash
- Deferred accrual only when no payment account is provided
- Pro feature — requires active staff with monthly salary set
Inventory Behavior
Each inventory item has a behavior that determines how purchases, waste, and recipe usage are recorded in the books. The auto-journal engine adapts automatically.
Tracked Inventory
TRACKED_INVENTORY
Purchase
Dr Inventory Asset
Cr Cash / Bank
Waste
Dr Waste Expense
Cr Inventory Asset
Recipe Use
Dr COGS
Cr Inventory Asset
e.g. Beef, rice, beer, cooking oil
Expense on Purchase
EXPENSE_ON_PURCHASE
Purchase
Dr Expense
Cr Cash / Bank
e.g. Cleaning supplies, disposables, rent, utilities
Revenue Classification
Sale items are automatically classified by category keywords. This gives you four distinct revenue streams in your income statement — without any manual tagging.
Delivery channels use sub-accounts (4210, 4220) separate from dine-in (4000, 4100). This gives you four revenue streams in your income statement automatically.
Safety Rails
The auto-journal engine is designed to prevent the mistakes that manual accounting makes easy. Every safeguard is enforced in code, not by policy.
Balance enforcement
Every journal entry must balance (Dr = Cr) — enforced in writeJournal() before any entry is persisted.
Status workflow
DRAFT → POSTED → REVERSED. Posted entries are never deleted — only reversed with a counter-entry.
Source reference
Every auto-generated entry links to its source transaction: invoiceNumber, purchaseId, or wasteRecordId.
Read-only journalsFREE
View all auto-generated journal entries. Manual entries require Pro.
Full journal controlPRO
Create manual journal entries, edit drafts, and reverse posted entries.
Audit trail
Every entry records who created it, when, and why. System logs track imports, price changes, and account modifications.
Accounting that runs itself
Stop wrestling with journal entries. Record your operations and let BasilBook handle the accounting — balanced, classified, and audit-ready.