Plain Text Accounting Standards: Specifications for Beancount, Ledger, and hledger formats.
Note
This project is in early development. Contributions welcome!
This repository contains formal specifications for plain text accounting formats:
| Format | Version | Status |
|---|---|---|
| Beancount | v3 | Draft |
| Ledger | v1 | Planned |
| hledger | v1 | Planned |
pta-standards/
├── core/ # Shared foundations (data model, types, numerics)
├── formats/ # Individual format specifications
│ ├── beancount/ # Beancount v2, v3
│ ├── ledger/ # Ledger v1
│ └── hledger/ # hledger v1
├── tests/ # Conformance test suites
├── tooling/ # CLI, LSP, error code specifications
└── meta/ # RFCs, ADRs, governance
- Precise: Unambiguous specifications that can be implemented correctly
- Testable: Comprehensive test suites for conformance verification
- Interoperable: Enable format conversion and tool compatibility
- Community-driven: Open process for evolution and extension
- Grammars: EBNF and ABNF formal grammars
- Schemas: JSON Schema and Protocol Buffers for AST
- Tree-sitter: Editor integration grammars
- Formal models: Alloy specifications for invariants
- Test vectors: Conformance test suites
See CONTRIBUTING.md for guidelines.
- rustledger - Rust implementation of Beancount
- beancount - Original Python implementation
- ledger - C++ implementation
- hledger - Haskell implementation