Borrows from the EBNF format described at plain-text-accounting-formats, which covers the formal grammar, format comparison (Beancount, Hledger, Ledger), and directive types.
Accounts follow a hierarchical path: Type:Product:AccountID:Address
The five account types are Asset, Liability, Equity, Income, and Expense.
Each account address can also be :Pending.
Example: Liability:InterestAccount:0000-111:
Pacioli had Credit // Debit. Movements replace the traditional transaction+postings model.
All arrow variants are equivalent:
2026-02-07 *
Asset:Cash → Equity:Capital 200 GBP
2026-02-07 *
Asset:Cash // Equity:Capital 200 GBP
2026-02-07 *
Asset:Cash > Equity:Capital 200 GBP
2026-02-07 *
Asset:Cash -> Equity:Capital 200 GBP
Including a description:
2026-02-07 *
Asset:Cash → Equity:Capital "Dividend" 200 GBP
Subsequent related movements are prefixed with + (TigerBeetle-inspired batch linking):
2026-02-07 *
Asset:Cash → Expense:Purchases 5.00 GBP
+Asset:Cash → Expense:Tax 1.00 GBP
Use ! instead of * to mark a transaction as pending:
2026-03-01 ! Pending invoice
Asset:Bank → Expense:Food 15.50 GBP
Not all data is movements.