Frappe Books is a free, offline-first desktop accounting app for small businesses. It is not a Frappe Framework web app — it's a standalone Electron application that uses the Frappe design language but runs entirely on your laptop with a local SQLite database. Invoices, payments, journal entries, a general ledger, and financial reports — for the business where ERPNext is too much and a spreadsheet stopped being enough.
Frappe Books is not the Frappe Framework. This is the most important thing to understand. It doesn't run on a Frappe bench, doesn't use MariaDB or Postgres, doesn't have doctypes in the Frappe sense, and doesn't expose a REST API. It's an Electron app — a desktop application built with Vue on the frontend and a local SQLite database on the backend. The "Frappe" in the name refers to the team that built it and the design language it shares, not the runtime.
What it does: double-entry accounting for a single company, on a single machine, without an internet connection. You create sales invoices, purchase invoices, payments, and journal entries. The app maintains a general ledger, trial balance, profit and loss, and balance sheet. It handles GST (India), VAT (generic), and basic tax reporting. It prints invoices. That's the scope — and it's intentional.
Frappe Books exists for the business that has outgrown spreadsheets but doesn't need (or want) the overhead of ERPNext, Sage, QuickBooks, or Xero. One person, one company, one laptop. If you need multi-user, multi-company, inventory, manufacturing, or payroll — you've outgrown Books and should look at ERPNext or another full accounting system.
These aren't Frappe doctypes — they're local SQLite tables. But the mental model is similar: each concept is a record type with fields, validations, and linked reports.
| Concept | Purpose | Notes |
|---|---|---|
Sales Invoice | Bill a customer for goods or services | Line items, taxes, due date, payment status |
Purchase Invoice | Record a bill from a supplier | Mirrors sales invoice structure |
Payment | Record money received or paid | Links to invoices for reconciliation |
Journal Entry | Manual double-entry adjustment | Debit/credit rows against any account |
Chart of Accounts | The account tree (assets, liabilities, equity, income, expense) | Pre-configured templates for several countries |
General Ledger | Every transaction, every account, chronological | The source of truth for all reports |
Financial Reports | P&L, Balance Sheet, Trial Balance | Generated from the ledger in real time |
Since Books is a desktop app, there's no server API to call. Instead, here's how the app works internally and how you interact with it.
# The data layer — SQLite, not Postgres # Books stores everything in a single .db file on disk # Location (macOS): ~/Library/Application Support/FrappeBooks/ # Location (Windows): %APPDATA%/FrappeBooks/ # Location (Linux): ~/.config/FrappeBooks/ # Each company is a separate .db file # You can back up by simply copying the file # You can move between machines by copying the file
# Import/Export patterns # Books supports CSV import for: # - Customers and Suppliers (Party) # - Items # - Opening balances via Journal Entry # # Export: all reports can be exported to PDF or CSV # Print: invoices render to PDF using built-in templates
# The tech stack under the hood # Electron — desktop runtime (Chromium + Node.js) # Vue 3 — frontend framework # SQLite — local database (via better-sqlite3) # Frappe UI — component library (shared design language) # # No server, no network dependency, no login # The app works fully offline from first launch
Books is designed for one person managing one company's books. There's no multi-user access, no role permissions, and no concurrent editing. If two people need to enter data, you need a different tool.
You can't install it with bench get-app. It doesn't run on a Frappe site. It doesn't have doctypes, hooks, or a REST API. If you're looking for web-based accounting on the Frappe stack, that's ERPNext's accounting module.
Books tracks money, not stock. You can create items and invoice them, but there's no warehouse, no stock ledger, no reorder points. If you sell physical goods and need to track inventory, this isn't the tool.
GST (India) and generic VAT are supported. Country-specific tax reporting (SARS for South Africa, HMRC for UK, IRS for US) is not built in. You get the numbers; formatting them for your tax authority is on you.
The data lives in a local SQLite file. There's no cloud sync, no automatic backup. If your hard drive dies and you haven't copied the .db file somewhere safe, the data is gone. Set up your own backup routine.