Latest changes
What changed, day by day.
New countries, new versions of their rules, releases, features and fixes — newest first, as the repository records them.
featurenot released yet
A machine key reaches the API In the changelog
featurenot released yet
The version of the schema, asked on its own In the changelog
featurenot released yet
A financial statement asked for by kind In the changelog
fixnot released yet
isServiceRoleKey()read no key in a browser. In the changelog
country
New country: United Arab Emirates The country page
country
New country: Austria The country page
country
New country: Schweiz The country page
country
New country: Italia The country page
country
New country: 대한민국 The country page
country
New country: Polska The country page
country
New country: Portugal The country page
country
New country: Saudi Arabia The country page
country
New country: ประเทศไทย The country page
country
New country: 臺灣 The country page
country
New country: Việt Nam The country page
release
Ekwo OS 0.7.0 is released In the changelog
release
Ekwo OS 0.6.0 is released In the changelog
release
Ekwo OS 0.5.0 is released In the changelog
feature
Start with Claude. In the changelog
feature
One installation, companies in several countries, from the command line. In the changelog
feature
ekwo import --accept-suggestionsIn the changelogfeature
npm run e2e:supabase -- --multi-countryIn the changelogfeature
ekwo.jsondescribes the installation In the changelogfeature
instance.countryis nullable In the changelogfeature
An account of the old books is posted to an account of the new chart only once somebody has said so. In the changelog
feature
import_already_donesays what the first import was In the changelogfeature
The
import_bookstool refuses more than 256 KiB of text In the changelogfeature
The documented command of the MCP server carries
@latestIn the changelogfeature
The documented command of the CLI carries
@latesttoo In the changelogfix
ekwo initsends a secret key of the newer form the way Supabase documents it. In the changelogfeature
An install demo in the README. In the changelog
feature
Books kept elsewhere come in with one command. In the changelog
feature
ekwo import camt.053 | coda | cfonb120In the changelogfeature
An import names its source by format or by the software that wrote it. In the changelog
feature
Four country packs more, 44 in all. In the changelog
feature
The MCP server starts with nothing configured. In the changelog
feature
Ready for the official MCP registry. In the changelog
feature
No competing product is named. In the changelog
feature
/multi-country/on the site: several countries, one set of books. In the changelogfeature
A silence a pack states is no longer printed as a gap. In the changelog
feature
A filed return settles outside Belgium and France. In the changelog
feature
ekwo pack checknames a bank statement format nothing reads In the changelogfeature
A posted invoice goes back to draft where its country allows it and nothing about it has left. In the changelog
feature
A posted invoice is cancelled, and a posted entry reversed, in one call. In the changelog
feature
The site can be published, and says where it lives only when it is told. In the changelog
feature
A way in for somebody who already has an account. In the changelog
feature
The site has an icon. In the changelog
feature
The bot
CONTRIBUTING.mdpromised, and what a pull request goes through. In the changelogfeature
ekwo pack describe [<cc>]— the whole of one country, in one object. In the changelogfeature
Three planned modules written down:
carbon,cryptoandsign. In the changelogfeature
What the packs do not say yet, listed in
docs/international.md. In the changelogfeature
A home page for Ekwo, and a world map that is the argument. In the changelog
feature
apps/site— one page per country, prerendered, with no JavaScript. In the changelogfeature
Thirty-four country packs more, from 6 to 40 countries. In the changelog
feature
One SYSCOHADA chart for the OHADA member States. In the changelog
feature
The lists of packs outside
packs/are written frompacks/. In the changelogfeature
A cadence of any whole number of months, and a box frozen at the unit of its form. In the changelog
feature
A supply measured against its seller. In the changelog
feature
The packs of the first countries go further. In the changelog
feature
Ekwo readable by an AI assistant. In the changelog
feature
One record per design decision. In the changelog
feature
The site at ekwo.ai is built outside this repository. In the changelog
feature
The site compares any two countries on one page. In the changelog
feature
ekwo canceland thecancel_documenttool choose, and say which. In the changelogfeature
A posted document has one way out of
posted, andreversedis written at last. In the changelogfeature
The site lets the reader choose its colours, and leaves room for its languages. In the changelog
feature
The statement formats a reader exists for moved to
@ekwo-ai/core. In the changelogfeature
The site is set in two typefaces, self-hosted, on one set of tokens. In the changelog
feature
The country-literal guard reads
apps/too. In the changelogfeature
Ekwo presents itself as open source data infrastructure, and says what it is not. In the changelog
fix
The site froze on the time of day it was opened at. In the changelog
fix
A cancelled invoice could be unmatched from its credit note, and then said
cancelledandnot_paidat once. In the changelogfix
A fresh installation was called behind by the next command. In the changelog
fix
The midrib ran tip to tip, and cut the leaf into a pod. In the changelog
fix
ekwo invoicecreated any kind of document, which is whatekwo docis called. In the changelogfix
The animated demonstration on the home page showed a command that does not run. In the changelog
fix
The mark read as an equals sign. In the changelog
fix
A reader who asked for less motion was shown a heading that said "set free." and nothing else. In the changelog
fix
docs/releasing.mdsaid one approval publishes every package. It took fifteen. In the changelog
country
New country: Australia The country page
country
New country: Burkina Faso The country page
country
New country: Bénin The country page
country
New country: République démocratique du Congo The country page
country
New country: Centrafrique The country page
country
New country: Congo The country page
country
New country: Côte d’Ivoire The country page
country
New country: Cameroun The country page
country
New country: Germany The country page
country
Estonia pack 1.10.0 The country page
country
España pack 0.2.0 The country page
country
New country: España The country page
country
France pack 1.15.0 The country page
country
New country: Gabon The country page
country
United Kingdom pack 0.8.0 The country page
country
New country: Guinée The country page
country
New country: Guinée équatoriale The country page
country
New country: Guinée-Bissau The country page
country
New country: Hong Kong The country page
country
Ireland pack 0.2.0 The country page
country
New country: Ireland The country page
country
New country: 日本 The country page
country
New country: Comores The country page
country
Luxembourg pack 1.9.0 The country page
country
New country: Mali The country page
country
New country: México The country page
country
New country: Niger The country page
country
New country: Nederland The country page
country
New country: New Zealand The country page
country
New country: Singapore The country page
country
New country: Sénégal The country page
country
New country: Tchad The country page
country
New country: Togo The country page
country
United States pack 0.8.0 The country page
country
Belgium pack 1.15.0 The country page
country
New country: United Kingdom The country page
country
New country: United States The country page
release
Ekwo OS 0.4.1 is released In the changelog
release
Ekwo OS 0.4.0 is released In the changelog
feature
The command line is published as
ekwo-os, and the command it installs is stillekwo. In the changelogfeature
A company leaves an installation with its books, and arrives in another one alive. In the changelog
feature
@ekwo-ai/codaand@ekwo-ai/cfonb120— the two formats of fixed positions the packs already named. In the changelogfeature
import_bank_statement()— a statement is imported once. In the changelogfeature
A posted invoice is sendable from the three views, with nothing told to the brick. In the changelog
feature
@ekwo-ai/camt053— the first brick that reads. In the changelogfeature
npm run release:publish— what a release publishes is read from the workspaces. In the changelogfeature
The command line keeps books:
contact,invoice,post,payment,match,doc. In the changelogfeature
@ekwo-ai/peppol-ubl— the invoice the packs already promised. In the changelogfeature
Books at volume: the plans are read, and the build breaks on their shape. In the changelog
feature
docs/firms.md— an accounting firm and its clients, on one page In the changelogfeature
The portfolio: every company somebody keeps, read at once. In the changelog
feature
ekwo login,logout,useandwhoami— the command line learns who it is. In the changelogfeature
@ekwo-ai/vat-consignment0.3.0 — a firm files for its clients, in one file. In the changelogfeature
A
clientpreset: the person whose company it is, in the installation of whoever keeps their books. In the changelogfeature
The CLI answers a program as well as a person. In the changelog
feature
A first country walks the whole chain. In the changelog
feature
The proof, pack by pack. In the changelog
feature
A deposit, and what came back. In the changelog
feature
The file of a periodic VAT return, which existed for no country. In the changelog
feature
What moved after it went. In the changelog
feature
What a declaration owes. In the changelog
feature
A box of a filed declaration is a number and a kind. In the changelog
feature
When a declaration is due. In the changelog
feature
A declaration that was filed is a row, not a report. In the changelog
feature
What the money pays. In the changelog
feature
Who the money came from, and a memory of how we knew. In the changelog
feature
A tax follows the territory of the parties. In the changelog
feature
A box of a declaration may be a rate of another box, and a form may be printed in the order it is printed in. In the changelog
feature
A pack's claims about the arithmetic of its own form are read. In the changelog
feature
A vocabulary for a tax that is not a value added tax. In the changelog
feature
A cadence per declaration, and a ledger line that names its posting. In the changelog
feature
The United States, the first country with no value added tax. In the changelog
feature
A price that already holds its tax. In the changelog
feature
A tax posting names every box the form prints its amount in. In the changelog
feature
The United Kingdom,
packs/gb/, and the first country outside the Union. In the changelogfeature
Ten assertions of the test suite were an unnamed country. In the changelog
feature
The document rules of a country cite the article behind them. In the changelog
feature
The core can say where the common system of VAT applies, and under which two letters. In the changelog
feature
intracom_triangular. In the changelogfeature
A conflict marker cannot be committed. In the changelog
feature
status,doctor,pack statusandpack upgrade --jsonput their report underdata. In the changelogfeature
Wrong arguments to
ekwo initend on 2, not 1 In the changelogfeature
socleCode()moved from@ekwo-ai/mcpto@ekwo-ai/coreIn the changelogfeature
auto_settle()no longer stops on a line it cannot book. In the changelogfix
Row level security cost nine to forty-five times the query it guarded — found by
tests/load/. In the changelogfix
suggest_contacts()scored every contact of the company for every statement line. In the changelogfix
Two
SECURITY DEFINERfunctions checked nobody — found by the sweep above. In the changelogfix
@ekwo-ai/vat-consignment0.2.0 — the schema was read, and it disagreed four times. In the changelogfix
The tax point stopped being a word nobody read, and three packs stopped declaring a derogation as if it were their principle. In the changelog
fix
A chart, a statement and a statement line can be traced to the text they come from. In the changelog
fix
supabase/migrations/README.mdlists every migration again. In the changelogfix
A format library runs its own tests again. In the changelog
fix
An exemption reason code was demanded of a country the list does not reach. In the changelog
fix
packs/gb/0.1.1 In the changelogfix
A VAT category came back padded with a space. In the changelog
fix
A document was reprinted in a language it was never sent in. In the changelog
fix
An entry is posted by
post_entry(), and a document bypost_document(). In the changelogfix
A posted entry is immutable, in an open period too. In the changelog
fix
A posted document is immutable, by the database. In the changelog
fix
A session nobody prepared is not the installer. In the changelog
country
New country: Estonia The country page
country
New country: Luxembourg The country page
release
Ekwo OS 0.3.0 is released In the changelog
feature
The sources of a pack become a register somebody can open. In the changelog
feature
A treatment for a service bought from a supplier who is not established here, and a check that a tax's three code lists agree. In the changelog
feature
A document can be sent to the person it is addressed to, behind a link they open without an account. In the changelog
feature
The recapitulative statement of intra-Community supplies, as one function of the core and four format bricks. In the changelog
feature
A company opens on the part of its chart it actually works with. In the changelog
feature
How often a company files its VAT return is data, and the return reads it. In the changelog
feature
Luxembourg, as
packs/lu/. In the changelogfeature
Estonia, as
packs/ee/, a pack written from the outside in. In the changelogfeature
A pack declares the number its compiled seed carries, and a published number never changes. In the changelog
feature
ekwo doctorcompares the database to an inventory of what the release defines. In the changelogfeature
A golden year of books per country pack, and a legal source on every tax and every box. In the changelog
feature
An end-to-end test: the same release installed two ways, and a whole financial year played out. In the changelog
feature
The country pack is documented end to end, and an installation says what it leaves for its operator to do. In the changelog
feature
A test may book in a country. It may not expect one. In the changelog
feature
A base is written once, and printed as often as the form likes. In the changelog
feature
The code and the type of an account stop moving once it is in use. In the changelog
feature
tax_report_templates.periodis nowperiods, a list, with no default. In the changelogfeature
The real-project end-to-end run times every step. In the changelog
fix
ekwo pack checkrefuses a sign on a statement line computed from other lines. In the changelogfix
ekwo pack upgradeleft a company on the old version when the release changed nothing the difference compares. In the changelogfix
ekwo statusandekwo doctorreported an ordinary installation as ahead of the CLI. In the changelogfix
docs/schema.mdno longer reorders its overloads on its own. In the changelogfix
The schema grants its own rights, and the anonymous role holds none on any table. In the changelog
country
New country: Belgium The country page
country
New country: France The country page
release
Ekwo OS 0.2.0 is released In the changelog
feature
An append-only audit trail, and the first pack upgrade. In the changelog
feature
An amount is rounded at the decimals of its currency, by the method of its country. In the changelog
feature
Every label a user reads, in every language the country pack publishes. In the changelog
feature
The FEC carries its opening balances, and an unclosed year carries its result. In the changelog
feature
Modules: one Postgres schema each, and the ledger only through a function. In the changelog
feature
assets— fixed assets, their depreciation and their disposal. In the changelogfeature
budgets— what was planned, against what was booked. In the changelogfeature
A role is a preset, a capability is what a policy tests, and a company has a face. In the changelog
feature
Invitations. In the changelog
feature
User preferences, and one way to choose a label. In the changelog
feature
A company profile an invoice can be printed from. In the changelog
feature
Numbering reads the country pack. In the changelog
feature
Keys for machines. In the changelog
feature
The first financial year is a parameter. In the changelog
feature
The format libraries live here now, under
packages/formats/, one MIT package per format and never one per country. In the changelogfeature
VAT falls due when the cash moves, and the exchange difference when it settles. In the changelog
feature
What a country requires on a document is data. In the changelog
feature
A country has charts of accounts, not one chart. In the changelog
feature
Financial statements are data. In the changelog
feature
One evaluator for both reports. In the changelog
feature
An appropriation entry is not a closing entry. In the changelog
feature
One tax engine, several kinds of tax. In the changelog
feature
tax_on_base, a posting that books non-deductible VAT on the account of the line. In the changelogfeature
Belgium and France gain the taxes that needed it In the changelog
feature
No currency and no language written into the code either. In the changelog
feature
No default country, anywhere. In the changelog
feature
Five country literals removed from published migrations. In the changelog
feature
Declaration boxes are data, and
vat_return()holds no country. In the changelogfeature
Opening balances and a year-end close that is a parameter, not a branch In the changelog
feature
Ekwo maintains a pack; only an accountant reviews one. In the changelog
feature
Two columns Canada will need, added before Canada. In the changelog
feature
An installation knows which country pack it holds, and each company knows which one it copied. In the changelog
feature
Country packs, and the compiler that turns one into a seed. In the changelog
feature
products, in the core rather than in a module beside it. In the changelogfeature
A bank account at install time, and a tool to add one later. In the changelog
feature
The write path has a test under row level security. In the changelog
feature
npx @ekwo-ai/mcpIn the changelogfeature
post_payment(payment_id)In the changelogfeature
npx ekwo initIn the changelogfeature
ekwo migrate,ekwo status,ekwo doctor,ekwo demo. In the changelogfeature
ekwo register/ekwo unregister. In the changelogfeature
A migration history compatible with the Supabase CLI. In the changelog
feature
The schema travels with the package. In the changelog
feature
.env.exampleIn the changelogfeature
A test suite for the installer In the changelog
feature
The postings of one side of a tax share out the amount of the group In the changelog
feature
document_tax_summary.tax_chargedcountstax_on_basepostings In the changelogfeature
The two constraints on a posting's account become one In the changelog
feature
list_taxesand theekwo://companies/{id}/taxesresource expose the new columns In the changelogfeature
The repository is
Ekwo-ai/ekwo-osIn the changelogfeature
Eighty-five foreign keys had no index on the side that needs one. In the changelog
feature
The additive-migrations rule runs on every push, not only on a pull request. In the changelog
feature
docs/schema.mdis checked to be the output of the generator. In the changelogfeature
@ekwo-ai/core/fecand the FEC re-exports of@ekwo-ai/coreare gone. In the changelogfix
A
jsonbargument crossed the direct-Postgres route as a Postgres array. In the changelogfix
--db-regionbuilt a pooler hostname and called it the answer. In the changelogfix
Three columns of
country_defaultshad no reader. In the changelogfix
A freshly installed company refused its first payment. In the changelog
fix
Nobody but the database owner could post an entry. In the changelog
fix
aged_balancereported any group it did not know as receivable. In the changelogfix
A cash-basis tax whose posting named no declaration box never settled. In the changelog
fix
Seven columns defaulted to
'EUR'and one to'fr'. In the changelogfix
A negative half was rounded three different ways by three packages. In the changelog
fix
A connection that could not declare itself the installer carried on. In the changelog
fix
A machine key could do anything, because it has no session. In the changelog
fix
is_company_owner()andcan_write_company()answered NULL to a stranger, andnot NULLnever raises. In the changelogfix
EKWO_ACCESS_TOKENwas the second door for aservice_rolekey. In the changelogfix
A test now fails if any function of
publicis executable by PUBLIC. In the changelogfix
A function created after
20260911210131was open again. In the changelog
release
Ekwo OS 0.1.0 is released In the changelog
feature
The instance. In the changelog
feature
An instance-level role. In the changelog
feature
Schema. In the changelog
feature
account_typewith eighteen values In the changelogfeature
post_document(id)In the changelogfeature
Numbering In the changelog
feature
Period locks In the changelog
feature
Bilateral matching In the changelog
feature
Reports In the changelog
feature
Country templates In the changelog
feature
Seeds In the changelog
feature
@ekwo-ai/coreIn the changelogfeature
Tests In the changelog
Nothing here is written by hand. Releases, features and fixes are read from the changelog, and countries from the packs themselves, so a country that lands in the repository is on this page the next time the site is built.