Changelog
Specification and library share one version. Until 1.0, any version may change what an earlier one specified.
Unreleased
- 0001 Base types: the currency table of version 0.1,
spec/data/currencies.json– every ISO 4217 currency with a minor unit (list of 2026-09-17), andx-btc,x-eth; typecurrency_table. - 0004 Chart of accounts: balances per owner, account and currency on a date, and the trial balance rolled up the hierarchy.
- 0004 Chart of accounts: the harmonised chart of version 0.1,
spec/data/chart.json– six roots by kind, one account for every account of the French PCG (version of 1 January 2026), groups of mixed kind split – with the translationfr-pcgand names in English and French; the kindmemofor commitments and the opening and closing balance sheet. - 0001 Base types: translation data as root objects of type
names; tax codes on postings, per country in atax_table– the German one inspec/data/tax/de.json. - 0004 Chart of accounts: seven accounts the HGB distinguishes and the PCG does not (affiliated companies, companies linked by participating interests, reserve for shares in a controlling company).
- 0009 Reports: report mappings per country and version, from accounts and from tax codes; the German balance sheet (HGB § 266), profit and loss account (§ 275 Abs. 2) and VAT return of 2026, as drafts for review by tax advisers.
- Library:
CurrencyTable::v0_1(),EventSet::balances,EventSet::trial_balance,Balances,Chart::v0_1(),ChartTranslation::fr_pcg(),Names,AccountKind::Memo,TaxCode,TaxTable,ReportMapping,EventSet::tax_report,EventSet::account_report.
0.1.0 – 2026-10-28
The first draft of the protocol.
Specification
- 0001 Base types: money as an exact count of a currency’s base unit
(
{"currency": "EUR", "base_units": "1240"}); currency codes from ISO 4217 or beginning withx-; definitions of how a currency divides –subdivisions, e.g.[100]for EUR – as reference data, names by language as keys<code>/<stage>; decimal numbers for prices and rates; amounts and numbers in one written form only; dates, account identifiers, postings that name their owner, bookings that balance for every owner in every currency. - 0002 Events and synchronisation: immutable events as root objects with a
kind, hybrid logical clocks, a hash chain per device, merging by union, forks, gaps and broken links reported rather than resolved; the chart a set of books uses (chart_selected) and accounts of its own (account_opened), with postings on unknown accounts for review. - 0003 Canonical encoding: byte-exact JSON after RFC 8785 as the basis of event
hashes, taken over the event as received so that members of later versions survive; objects and their types
(
typeon root objects,kindfor varieties); one form of “none”; no duplicate members; strings not normalised (NFC recommended). - 0004 Chart of accounts: the form of the harmonised chart – accounts identified by UUIDs, without names, in a hierarchy with attributes – and translations of national charts. The accounts themselves are not yet specified.
- 0005 Documents: invoices, credit notes, receipts and bank statements as records of their
own – identity, kind, number, date, day received – with the file they came as, the original, as an artefact
identified by its hash; no document without its original, a note on the posting instead. Every hash is written
sha256:…. - 0006 Encryption: proposal, inspired by any-sync – an ordered list of members and keys beside the unordered events, a books key wrapped per member, a chain of keys that keeps the history readable.
- 0007 Filings: proposal – filings derived from a recorded state of the books, never changed but corrected, answers of authorities as documents, adapters over HTTPS, credentials outside the protocol.
- 0008 Parties: every set of books belongs to at least one organisation or person – organisations with legal form, registers, tax numbers and their capital in whole shares of a nominal amount, persons with tax numbers, roles and the shares they hold.
Library
librotenado0.1.0 implements 0001–0005 and 0008 (Money,Currency,CurrencyDefinition,Decimal,Booking,Event,EventSet,Chart,Document,Organisation,Person, …), with the examplequickstart.
Documentation
- The documentation site (
docs/, built with mdBook) for librotenado.dev: introduction, specification, a guide to the library and the API documentation.