The Snapshot Style System
BasilBook freezes data at the moment it happens. Rename a product, change a salary, switch currencies — your historical records stay exactly as they were. This is what makes BasilBook audit-ready by design.
Why snapshots matter
Most restaurant software stores references — a sale points to a product, and when you look up the sale, it pulls the product's current name and price. This means changing anything today silently rewrites your history. BasilBook takes a different approach: every transaction captures the data as it was at that exact moment.
Reference-based (most software)
Sale → points to Product #42 → looks up current name "Premium Beef Pho". But in February it was called "Beef Noodle". Your February report now shows a product that didn't exist yet.
Snapshot-based (BasilBook)
Sale stores productName: "Beef Noodle", currency: "USD", price: $5.50 — frozen forever. Rename the product, change currencies, update prices — this record never changes.
Transaction Currency Freezing
Every sale and purchase stores the currency at the moment it happens. If your restaurant switches from USD to KHR next month, all your past records still show the original currency. No retroactive confusion.
Product Name Preservation
When a sale is recorded, the product name is frozen on the transaction. Rename "Beef Noodle" to "Premium Beef Pho" — your February reports still say "Beef Noodle" because that's what was sold.
Recipe Versioning
Recipes are never overwritten. Each change creates a new version with an effective date. Your December food cost analysis uses December's recipe, even if you changed ingredients in January.
Payroll Salary Snapshots
Each payroll line captures the monthly salary and staff name at that point in time. Give someone a raise — their past payslips still show the old salary. Exactly as it happened.
Per-Channel Price Isolation
Each delivery platform has its own price per item. Grab price changes don't affect your dine-in price, and importing a Grab report doesn't overwrite your FoodPanda pricing.
Purchase Price Snapshot
Every purchase line captures the unit price at the time of purchase. If your vendor raises prices next week, your February purchase records still show what you actually paid. Cost calculations stay accurate.
Sales Amount Freezing
Each sale transaction freezes the gross amount, discount, and net amount at the time of sale. Price changes to menu items never affect past sales records.
Immutable Stock Ledger
Stock is never edited directly. Every movement — purchase, recipe consumption, waste, stock count adjustment — is a separate entry with a reference to its source. You can always trace why stock changed.
Design Principles
The rules behind the system
Never overwrite, always version
Recipes, prices, and configurations create new versions instead of modifying existing records.
Freeze at transaction time
Currency, product names, salary rates, and staff identities are captured when the event occurs — not looked up later.
No direct stock editing
All inventory changes flow through typed movements (purchase, waste, consumption, adjustment) with source references.
Separate stable keys from display names
POS usernames are immutable import keys. Display names can be edited without breaking import matching.
Account resolution, not duplication
Items link to their GL accounts. Journal entries are generated from these links — the accounting logic is never duplicated per transaction.
Full audit trail
System logs capture before/after snapshots of every import, price change, and name update. Nothing is lost.
Your data deserves better than references
BasilBook's snapshot architecture means your financial records are always accurate, always auditable, and never silently rewritten.