Open source data infrastructure for accounting, finance and sustainability
Every business on earth keeps books. Ekwo is building the open source infrastructure they are kept on — in a database you own, under rules anyone can read, with tools for you and for your accountant.
AI at the keyboard. You and your accountant stay in control.
Already using Claude? Try it on your own books
Works with the model you choose
Names and logos belong to their owners; Ekwo is not affiliated with them.
Everywhere
No business, anywhere, should have to rent the right to keep its own books. Ekwo does not replace the accountant: it gives businesses and their accountants open schemas, the rules of each country as data, and the tools to work on them. It is written country by country, by the people who know the rules of each one — accountants, tax advisers, developers — and given back to everyone. 44 countries today. The rest of the world is open, and it is yours to write.
A business is data, in every country.
How it works: the rules of a country are files, not code — a chart of accounts, its taxes, the boxes of its return, its financial statements, the sentences its law puts on an invoice. An accountant can read them, a contributor can propose them, a test can prove them. Adding a country touches no engine. Write the pack for your country
A country that levies no value added tax at all, with a tax that follows the territory of the parties.
A country outside the common system of VAT, and one inside it, from the same engine.
Several charts of accounts in one country — for companies, and for non-profits.
Amounts carry the decimals of their currency rather than assuming cents, and the rounding method of their country.
Exchange differences booked to the accounts the pack names.
Charts and labels in 14 languages, translated in the packs themselves.
EN 16931 and Peppol where they apply, and nothing where they do not.
No country, currency or language anywhere in the code — a check in continuous integration refuses one.
What you get
Free and open source. Read it, run it, change it, and take it with you. The core is AGPL-3.0 and the format libraries are MIT, so what is built on it stays open.
It installs on a database you own — an ordinary Postgres — and your books leave whole, as an open archive, whenever you want them to. It keeps working whoever disappears.
The books live in your own database, not on somebody else’s servers. You hold the keys, and you decide who reads them.
The rules each country pack encodes are published, sourced to the law and dated — charts of accounts, taxes, the boxes of the return, statutory statements and electronic invoicing — so that you and your accountant can check them. Every country page says when it was last checked.
Access is enforced by the database itself, on every row of every table. A posted entry cannot be altered. Every change leaves an audit trail.
Your numbers are in your database and nowhere else. This site sets no cookie, loads nothing from anyone and serves its own typefaces. The hosted edition is your own instance.
Automation
An agent or a script calls the same functions a person does, with the same rights and under the same rules. Nothing has a private way in.
A brick writes the Peppol BIS 3 or Factur-X file and validates it against the standard. Sending and receiving over the network is the operated edition — the file itself is yours either way.
camt.053, CODA and CFONB 120 import once however often you replay the file; a payment finds the invoice it settles by its reference.
Trial balance, aged balance, the VAT return and what is due when — for a person, a script or an agent, through the same functions.
Your model reads the supplier invoice and calls the same tools a person would: the contact, then the draft with its lines, accounts and taxes. The database works out the totals, and nothing is booked until somebody posts it. Ekwo carries no reader of its own and does not need one.
% ekwo doc new --contact "Marasi Consulting Services LLC" --date 2026-01-15 \ --line "name=Management consulting services — January engagement,quantity=1,price=10000.00,account=4010,tax=AE-S-SR"INV-AE-SR-1 draft 10500.00 AED% ekwo post INV-AE-SR-1 --dry-runaccount debit credit1100 10500.004010 10000.002100 500.00balanced — nothing posted, --dry-run% ekwo company exportmanifest.json + data/*.jsonl — your books, yours to take
Replayed from the United Arab Emirates pack’s golden year.
› Invoice Marasi Consulting Services LLC for 1 × Management consulting services — January engagement, and tell me what it does to this quarter's VAT.Finding the customer.% search_contacts { "query": "Marasi Consulting Services LLC" }Marasi Consulting Services LLC · customer · AEDrafting the invoice. Nothing is booked by a draft.% create_document { "doc_type": "sale_invoice", "document_date": "2026-01-15", "lines": [{ "name": "Management consulting services — January engagement", "quantity": 1, "unit_price": "10000.00", "account_code": "4010", "tax_code": "AE-S-SR" }] }INV-AE-SR-1 draft 10500.00 AEDThis is the entry it would write:account debit credit1100 10500.004010 10000.002100 500.00› This books the invoice and cannot be undone. Post it?› y% post_document { "document_id": "INV-AE-SR-1" }posted · entry balanced · period openAnd the declaration for 2026-Q1:% vat_return { "period": "2026-Q1" }box d1 108000.00box d2 400.00Booked 10500.00 AED to 1100, and box d2 of 2026-Q1 now reads 400.00.
The agent stops and asks before anything is booked. The figures are the United Arab Emirates pack’s golden year, to the cent.
Claude Code with the Ekwo MCP server. Claude reads the PDF; Ekwo extracts nothing from a file and stores no file from here — it keeps the draft and the rules. The invoice is from the United Arab Emirates pack’s golden year.
Ekwo embeds no model and imposes none. It exposes its tools over the open Model Context Protocol and a command line a program can read, so an assistant works on the books with the rights of the person it acts for — never with a key of its own — and you can change your mind about which one.
Ekwo installs on your own Supabase project: your database, your keys, your bill. The schema is ordinary PostgreSQL, and the files it writes and reads are published standards rather than formats of its own.
Names and logos belong to their owners. Ekwo is not affiliated with any of them; compatibility is through the open Model Context Protocol and published standards.
Where it stands
Free software under AGPL-3.0.
Draft, number and post an invoice or a credit note under the numbering rule the country prescribes.
The same documents the other way round, with the tax recovered — or not — as the country says.
Customers and suppliers, with their VAT number, the electronic address the pack names, and how each appears on a bank statement.
The return is computed from the books, frozen box by box, filed, and settled to the account the pack names.
Opening balances, closing the year into the accounts the country uses, and opening it again when you must.
Trial balance, general ledger, aged balance, and the statutory statements of the country — one call each.
Write and validate a Peppol BIS 3 or Factur-X invoice, with the sentences the country puts on it.
Every operation from a terminal or a script, with JSON output and exit codes a program can read.
The same operations exposed over the Model Context Protocol, under the rights of the person the agent acts for.
Import a statement, match a payment against what it settles, and let the reference do it for you.
When each return is due, from the pack’s rule and the company’s cadence, for every company you keep — and a corrective once one has gone.
Depreciation schedules and disposals, on the durations and conventions the country pack declares.
A budget per year and per account, and the variance against what the books actually hold.
A firm keeps forty clients in six countries as forty rows, each with its own chart, locks and pack.
A company exports whole — books, declarations and the proof they were filed — and imports into another installation.
A tonne of CO₂ accounted for as strictly as a euro: emission factors loaded as versioned, sourced data the way a country pack is, from the purchases already booked or from physical quantities, each tonne tied to the entry that justifies it.
Not one more bank account: wallets and venues, acquisition lots, fair value at the close, realised gains by the method the country allows — with the exchange exports read by format libraries, like every other file.
A document, its signatories and where each of them stands, with the trail of proof written as somebody signs. Which level of signature a deed needs is the law of a country, so it is pack data; the qualified part is a trust provider you choose, the way the bank and the network already are.
Accounting is where Ekwo starts. Everything else a business runs on comes as a module on the same books — each one free, each one in the open. How a module works
Two ways to run it
Free, for ever. One command points it at your own Supabase project and it applies the schema, seeds the country rules and creates the first company. Nothing is gated.
Install Ekwo OSThe hosted edition, Ekwo Cloud: the web application and your own instance, run and watched for you. What is sold is the operating — the application and the models and agents it includes, bank connections, sending and receiving over Peppol, the channels to the administrations, backup and sync. It is infrastructure, and it keeps no one’s books: yours and your filings stay yours and your accountant’s. It never gates the core, and what comes back from a filing is yours.
Get started with usA network, not a vendor
No company can know the accounting rules of the world. A network can. Accountants and tax advisers review the pack for their country and put their name on it; developers write a format library, a bank parser or the module their clients need; translators make a chart of accounts readable in their language. A pack is reviewed when a named professional has read it against the law they apply — not when anybody says so.
Every other country on the map is open. Here is the pack to write.
Latest changes
Read from the repository at every build: the countries, the releases, what was added and what was fixed.
release
Ekwo OS 0.8.0 is released In the changelog
feature
A machine key reaches the API In the changelog
feature
The version of the schema, asked on its own In the changelog
feature
A financial statement asked for by kind In the changelog
feature
The schema of this release is 0.8.0, and the packages refuse an older database by name In the changelog
feature
The web application has a name: Ekwo Cloud, the hosted edition on ekwo.ai. In the changelog
feature
The contributor licence agreement is governed by the law of Estonia. In the changelog
fix
isServiceRoleKey() read no key in a browser. In the changelog
The data belongs to the business.