Every feature, one platform
From kitchen operations to financial statements — purchasing, inventory, recipes, POS imports, waste, payroll, delivery receivables, and double-entry accounting. Everything connected, nothing manual.
Operations
The daily workflows that keep your restaurant running.
Purchase Tracking
Record vendor invoices with line-item detail. Multi-currency with exchange rates. Tracked items go to stock, expense items hit the P&L. Import purchases from XLSX/CSV.
- Unlimited inventory items on all plans
- Line-item quantities, units, and unit prices
- Multi-currency purchases with exchange rate conversion
- Auto-link to vendors and payment accounts
- Stock movements generated automatically
- Import purchases from BasilBook XLSX/CSV template (Pro)
- Auto-create vendors during import
POS Sales Import
Sync sales directly from HangPopok POS or Loyverse POS — or import any XLSX/CSV spreadsheet. Auto-creates sale items, staff, categories, and delivery platforms.
- One-click Sync HangPopok button on Sales, Sale Items, and Categories pages
- HangPopok and Loyverse sales sync on a schedule — hourly, every 6 hours or daily
- HangPopok POS auto-detection (Sales Report + Product Report)
- BasilBook native XLSX/CSV with 60+ flexible column aliases
- Auto-creates sale items, staff, categories, delivery platforms
- Invoice-level + line-item discount handling with proportional distribution
- Per-channel pricing stored separately (dine-in vs Grab vs FoodPanda)
- Journal entries auto-generated per invoice
- Idempotent — duplicate invoices detected and skipped
Sales XLSX/CSV Import
Import sales from any spreadsheet using the BasilBook template. 60+ flexible column aliases, auto-creates sale items and staff.
- BasilBook native XLSX/CSV with flexible column headers
- Auto-creates sale items, staff, and delivery platforms
- Journal entries auto-generated per invoice
- Downloadable templates in .xlsx and .csv
Sales Entry & Corrections
Record a sale by hand, or fix one that came in wrong — POS sales included. The books are corrected by reversing and replacing, never by rewriting history.
- Enter a sale with its lines and payment method
- Edit any sale, including ones imported from the POS
- The old journal entry is reversed and a corrected one posted
- Stock the old lines consumed is put back first
Purchase Import
Import purchase invoices from XLSX/CSV. Groups line items by reference number, auto-creates vendors, generates stock movements.
- One row per purchase line, grouped by referenceNumber
- Items matched by name (must exist in the system)
- Vendors auto-created when not found
- Stock movements generated for tracked inventory items
- Journal entries auto-generated per purchase
Stock Count
Count stock for today or any past day and compare it with the system balance. Save the count as you go, post it when it is done, and correct a single item without a full count.
- System balance per item, as of the day you count
- Save a draft as you go — anyone on the team can count
- Variance calculated automatically
- Posting records the adjustments as stock movements
- Variance journal posted according to your costing method
- Correct one item with a stock adjustment
Waste Tracking
Record waste by reason — spoilage, overcooking, prep waste, unknown loss. Each entry deducts stock and generates a journal entry. Import waste records from XLSX/CSV.
- Five reasons: spoiled, expired, overcooked, prep waste, unknown loss
- Links to inventory items with quantities
- Auto-generates stock movement and journal entry
- Waste reports by reason, item, and period
- Import waste records from BasilBook template (Pro)
Waste Import
Import waste records from XLSX/CSV. Items matched by name, stock movements and journal entries auto-generated for tracked inventory.
- One row per waste entry with date, item, quantity, reason
- Items must exist in the system (matched by name)
- Stock movements auto-generated for tracked items
- Journal entries auto-generated (Dr Waste Expense, Cr Inventory)
Expense Tracking
Record overhead costs like rent, utilities, and cleaning services. Import expenses from XLSX/CSV. Journal entries auto-generated for every expense.
- Track rent, utilities, services, and other overhead costs
- Expense categories auto-created with usage: expense
- Map to expense and payment accounts from your Chart of Accounts
- Journal entries auto-generated (Dr Expense, Cr Cash/Bank)
- Import from BasilBook XLSX/CSV template (Pro)
Daily Reconciliation
Compare POS totals against cash, bank, QR receipts and delivery receivables every day, on every plan. Close the session when the day is settled.
- One session per business day, prefilled from POS sales and bank receipts
- Actual cash counted in several lines — per shift or per drawer
- Cash variance calculated live and posted to the ledger in one click
- Close to lock the day; reopen it if something needs changing
- Days with activity but no session are flagged
Management
Master data that powers your cost control.
Standard Recipes
Define ingredient composition for every menu item. Recipes are versioned — never overwritten. Your December food cost uses December's recipe.
- Link ingredients with quantities and units
- Multiple recipe versions per sale item
- Effective date ranges for seasonal changes
- Ingredients come off stock as dishes sell, under recipe costing
- Historical recipes preserved — never overwritten
Recipe Cost Analysis
Know what a plate costs you. Cost per serving from your own ingredient prices, food cost percentage against the menu price, and which ingredient is driving it.
- Cost per serving calculated from ingredient prices
- Food cost percentage against the menu price
- Margin per serving, on the recipe version you are reading
- Each ingredient's share of the plate cost
Inventory Valuation
Choose how stock is valued — latest cost, weighted average or FIFO. Every stock movement carries its value, so the Inventory account and the stock report agree.
- Latest cost, weighted average or FIFO
- Every stock movement valued when it is posted
- Switching method revalues stock on hand in one entry; history is never restated
- Movement history for every item
- Inventory valued as of any day in Reports
Built for Your Business Type
Restaurant, retail, service or garage — the chart of accounts, the sidebar and the words on screen follow how the business actually works.
- Restaurant: recipes, waste and POS sales
- Retail: what you buy is what you sell, paired in one step
- Service: invoices, quotes and receivables, nothing to count
- Garage: labour and parts billed together, parts taken off the shelf
- Labels follow the kind — Sale Item, Product or Service
Delivery Platform Management
Configure Grab, FoodPanda, Nham24 and other delivery platforms with commission rates. Track receivables and per-channel pricing per item.
- Add platforms with name + commission rate
- Platforms auto-created during POS import, at a 25% default you then adjust
- Per-channel pricing — each item can have a different price per platform
- Commission expense recorded at time of sale
- Net receivable created and cleared on settlement
- Manage platforms in Settings → Delivery tab
Payroll Management
Calculate payroll using daily wage = monthly salary / 30. Salary is snapshot at payroll time — giving a raise doesn't change past payslips.
- Daily wage: monthly salary / 30
- Staff line items with days worked
- Salary snapshot preserved (raise doesn't change past records)
- Journal entries generated for each period
- Auto-fill days worked from DailyBrew attendance
Attendance Tracking
Sync employee attendance from DailyBrew. Track check-ins, late arrivals, early leaves, and absences with a visual calendar grid. Auto-fill days worked when running payroll.
- Sync on demand, or on a schedule — hourly, every 6 hours or daily
- Visual calendar grid — present, late, early, absent
- Employee summary with hours worked and averages
- Staff linked by DailyBrew public ID, which survives a rename
- Unmatched usernames highlighted for easy linking
- Sync history with detailed stats
- Auto-fill payroll days from attendance records
Team Members
Invite staff by email or public ID. Import staff from XLSX/CSV or auto-create from POS imports.
- Free plan: owner + 1 team member
- Professional plan: unlimited team members
- Role-based access (owner, manager, member)
- Invite by email or shareable public ID
- Import staff from BasilBook template
- Staff auto-created from POS import operator names
- Stable POS username for import matching + editable display name
Telegram Bots
BasilBook works in the Telegram groups your team already uses: send invoices and exports straight to a chat, and ask the bot for the day's takings with /total.
- Official @BasilBook_bot — add it to a group, nothing to install
- Send
/chatid, or press Detect, to link the group - Send invoices and exports to the chat to forward on
/totaltakings snapshot — received, sold and the gap (Professional)- Reminders for overdue customer invoices (Professional)
- Bring your own bot on Professional
Copy from Another Location
Opening a second restaurant? Copy items, vendors, and menu items from an existing location. Today this runs through the REST API — a console screen is still to come.
- Available today through the REST API — a console screen is on the way
- POST /api/v1/organizations/copy — items, vendors and sale items in bulk
- Recipes are not copied yet; master data is, so you do not re-key it
- Each organization is a separate billing unit
Finance
Accounting-grade reporting without the accounting degree.
Chart of Accounts
Every organization starts with a ready-made chart of accounts sized to its business type — restaurant, retail, service or garage. Revenue is split the way the business earns it: food and beverage for a restaurant, labour and parts for a garage.
- Assets, liabilities, equity, revenue, expenses
- System roles: cash, bank, inventory, COGS, payroll, etc.
- Restaurant revenue split into food and beverage by category
- Each delivery platform can post to its own receivable account
- Professional: add unlimited custom accounts
Double-Entry Accounting
Every operational event generates balanced Dr/Cr journal entries, on every plan. The books are correct by design — no manual posting needed.
- Purchase: Dr Inventory/Expense, Cr Cash/Bank/Payables
- Waste: Dr Waste Expense, Cr Inventory
- Cash/Card sale: Dr Cash/Bank, Cr Food Revenue + Cr Beverage Revenue
- Delivery sale: Dr Receivable + Dr Commission, Cr Delivery Revenue
- Posted automatically on every plan
Automated Journal Entries
Purchases, sales, waste, and payroll auto-generate proper Dr/Cr entries. Every entry links to its source transaction for full auditability.
- All plans: auto-generated entries from purchases, sales, and waste
- Professional: manual entries, and corrections that reverse and replace
- Draft / Posted / Reversed status workflow
- Reference link to source (invoice number, purchase ID)
- Full audit trail with timestamps
Bank Receipt Capture & Matching
Your bank's Telegram payment alerts become receipts in BasilBook. Each one is matched to the sale it paid, and the deposit posts from Cash on Hand to Cash at Bank when you confirm.
- ABA, Prassac, ACLEDA and Canadia alerts read in real time
- Direct bank webhook, or a receipt entered by hand
- Auto-match by amount and currency, with time and payer as confidence
- Split and partial payments allocated across sales
- Settle customer invoices from the deposit
/totaltakings snapshot in the bank group
Customer Invoicing
Bill customers and track what they owe, with accounts-receivable aging. Match incoming bank deposits to open invoices to settle them — built for service work and workshops.
- Draft, issue, and record payments against an invoice
- AR aging — current, 1–30, 31–60, 61–90, 90+ days
- Credit notes, including partial: credit the returned part, keep the labour
- Recurring invoices generated on a schedule
- EN 16931 e-invoicing — Factur-X PDF, CII and UBL XML
- Send a copy to your Telegram chat to forward on
Customers & Receivables
Know who owes you and for how long. Record customer payments, apply them to invoices and send statements — with an aging report that ties to the ledger.
- Customer directory with what each one owes
- One payment applied across one or many invoices
- Aging: current, 1–30, 31–60, 61–90, 90+ days
- Customer statements
- Delivery platform receivables cleared on payout
Quotations & Job Cards
For service businesses and workshops: send a quote, turn it into an invoice when the customer agrees, and follow a job from booking to billing.
- Quotes post nothing until they become a draft invoice
- VAT checked again when a quote is converted
- Job cards: vehicle, complaint, technician and parts
- Booked → In progress → Completed → Invoiced
- Parts on the invoice come off stock automatically
Accounts Payable
What you owe each supplier, from purchases on credit and pay-later expenses. Seeing the balance is free on every plan; recording supplier payments is Professional.
- Balance per vendor, tied to Accounts Payable in the ledger
- On-credit purchases and pay-later expenses included
- Vendor ledger: every purchase, expense and payment
- Professional: record payments and apply them to the bills they settle
- Overpayments kept as money on account
Financial Reports
The statements an accountant asks for, for any period: trial balance, general ledger, income statement, balance sheet and cash flow — plus receivables, payables and inventory valued as of any day.
- Trial balance and general ledger, parent and child accounts nested
- Income statement, balance sheet and cash flow for any period or date
- Receivables by customer and delivery platform, payables by vendor
- Inventory valued as of a day, beside the Inventory accounts
- Professional: export any report to Excel
Analytics
See what drives the numbers: daily sales, revenue against cost, your best sellers, and sales split by category, channel and payment method — with deposits by bank beside them.
- Daily sales trend
- Revenue against cost over time
- Top-selling items
- Sales by category and by channel — dine-in or delivery
- Sales by payment method and deposits by bank
- Professional: your own layout, saved views, and charts pinned to the dashboard — arrange it in the mobile app too
Multi-Currency Support
Each organization can accept multiple currencies. Currency is snapshot on every transaction — changing your primary currency never rewrites history.
- Primary currency + accepted currencies per organization
- Currency snapshot on every sale and purchase
- Historical accuracy preserved across currency changes
- Exchange rates kept in Settings and snapshotted on each journal entry
Dashboard & KPIs
Your position at a glance for any period: net revenue, cost of goods sold and margin, with the sales and purchases behind them.
- Period selector: today, yesterday, this week, last week, this month, or any custom range
- Net revenue, COGS, gross margin and margin %
- Daily sales chart and payment method breakdown
- Top 5 selling items and top categories
- Sales, purchases, active items and open reconciliation sessions
- Professional: arrange your own dashboard — move, resize, hide and add charts, on the web or in the mobile app
Insights
Your books, watching themselves — by rules, not AI.
Alerts on your own books
BasilBook compares your purchases, sales, costs and stock with your own history and tells you what stands out. Deterministic rules: no AI, nothing guessed.
- Buying too often: an item bought more often than usual, or a possible duplicate purchase
- Sudden cost changes: a supplier’s price jump, an expense spike, food cost off its usual level
- Sudden income changes: a quiet or busy day for its weekday, missing sales days, a shift in payment mix
- Profit leakage: discounts, voids, waste, stock shortfalls, dishes sold below cost, delivery deductions, unsettled QR money
- Every alert says why it was flagged, against which baseline, with links to the records behind it
- Acknowledge, dismiss or reopen alerts, and mark each one useful or not
You set the thresholds
Switch each check on or off and decide how unusual something must be before BasilBook tells you.
- Per-check thresholds, kept within safe bounds
- The checks that protect the books themselves are always on
- Owners and managers change them; everyone else can read them
- Telegram: one message per run, most serious first, with a daily cap — switch it off in Notifications
Vendor scorecard
Open any vendor and see what you spend with them and how their prices move.
- Share of your spend and twelve months of spending
- Documents and the average document
- Each item’s price against its own usual range
- Every alert raised about the vendor
Item profitability
Every dish with a recipe, ranked by what it really earns, with the ingredients eating the margin.
- Margin, contribution and units sold, sortable
- How each margin moved since the end of last month
- The ingredients driving the cost, and what the margin would be if the biggest returned to its usual price
- Dishes selling below cost stand out
Customization
Every person arranges BasilBook their own way.
Your own dashboard
Move, resize and hide the dashboard’s cards, and add the widgets and charts you want to see first. Your layout is yours: a colleague’s never moves.
- Drag and resize cards on a grid; hide the ones you never read
- Add widgets and charts: expense breakdown, payables by vendor, receivables aging
- Pin any Analytics chart to the dashboard, drawn on the dashboard’s period
- Pick the period the dashboard opens on
- Show, hide and reorder the same widgets in the mobile app
Analytics your way
Arrange the Analytics page, add the charts you need, and save the views you come back to.
- Move, resize, hide and add charts
- Saved views: a name, a layout and a date range
- Relative ranges such as “this month” stay current every time you open the view
- Customize Analytics from the mobile app too
A sidebar in your order
Put the pages you use most at the top, and hide the ones you never open.
- Reorder pages within each group of the sidebar
- Hide a page from your own sidebar without taking anyone’s access away
- Per person and per workspace: each workspace you belong to keeps its own order
- The same order in the mobile app’s menu, which you can edit there too
Data & Integration
Get your data in and out — no lock-in, no friction.
10 Import Types
Import items, sale items, vendors, staff, categories, sales, purchases, waste, expenses, and stock counts. HangPopok POS auto-detected. BasilBook XLSX/CSV with 60+ flexible column aliases.
- Sale items, inventory items, vendors, staff and categories: every plan
- Sales, purchases, expenses, waste and stock counts: Professional
- HangPopok POS: Product List, Sales Report, Product Report
- BasilBook native: flexible column headers, case-insensitive
- Downloadable templates in both .xlsx and .csv
- Auto-creates categories, staff, vendors, delivery platforms
Excel Export
Export items, vendors, purchases, sales, waste, journal entries, and more as .xlsx files. Full data workbook for backups and audits.
- Export any resource individually
- Full data workbook: every resource as a sheet
- Download the file, share it, or send it to Telegram
- Perfect for backups, audits, or migration
Setup Wizard
A guided start: name the business, set its language and currency, add delivery platforms, then bring in your menu and stock — from HangPopok, a spreadsheet or by hand. Replay it any time from the sidebar.
- Business → Locale → Delivery → Ready
- Import a HangPopok product list or a BasilBook spreadsheet
- Add categories, sale items and inventory items as you go
- The same steps in the mobile app
- Replay any time from the sidebar
Snapshot Architecture
Data is frozen at transaction time. Rename products, change currencies, update salaries — historical records never change. Audit-ready by design.
- Product names frozen on sales transactions
- Currency snapshot on every purchase and sale
- Salary snapshot on payroll lines
- Recipe versioning with effective dates
- Immutable stock ledger with source references
- Per-channel price isolation
REST API & POS Push
Everything in the console is available over a versioned REST API — it is what the mobile app runs on. On Professional, your POS can push paid orders straight in, signed with HMAC.
- Versioned /api/v1 for every resource
- Bearer tokens with refresh, for apps and scripts
- POS push API with API keys and HMAC signatures (Professional)
- Orders already received are detected and skipped
- File imports and exports (Professional)
Mobile App (Coming Soon)
A native app for iPhone, iPad and Android with the same workflows as the console — purchases, sales, stock counts, invoices, reconciliation and settings — on the same account and data.
- iPhone, iPad and Android
- Same account, organizations and data as the web
- Every console workflow except design themes
- Sign in with Apple, Google or email
Languages & Themes
Use BasilBook in English, French or Khmer and switch at any time. Customer documents follow your organization's language, not the reader's.
- English, Français, ខ្មែរ
- Switch language from the top bar
- Invoices printed in the organization's language
- Several colour themes, light and dark
Activity Log & Security
See who did what and when, and keep sign-ins safe.
- Activity log of imports, reconciliation and settings changes
- Members read; owners and managers make changes
- Sign-in locked after repeated failed attempts
- New accounts confirm their email address
- Delete your account yourself, on web or mobile

POS sync, seamless
Connect your HangPopok POS to sync products and categories in one click on the Free plan. Upgrade to Professional to sync sales invoices directly via the GraphQL API — on demand or on a schedule — no more manual Excel exports. Sale items, staff, categories, and delivery platforms are created automatically.

Loyverse POS, fully automated
Drop your Loyverse Personal Access Token into Settings → Integrations and BasilBook syncs items and receipts on a schedule. Sale items, staff, categories, and delivery channels are created automatically — invoice-level and line-item discounts handled, journal entries generated.

Staff attendance, automated
DailyBrew tracks when your staff check in and out. BasilBook syncs that data automatically — building a visual calendar of attendance, flagging late arrivals and absences, and pre-filling days worked when you create payroll. No double entry. No spreadsheets.
Ready to take control?
Start free with full operational control. Upgrade to Professional when you need imports, accounting, and delivery management.