Open source accounting, finance, ERP and CRM, for every business

Accounting, finance, tax, your ERP and your CRM, set free.

Ekwo is far more than an accounting tool: one finance, ERP and CRM platform, everything included, that AI can run. Invoices, bank statements, VAT returns, e-invoicing, customers and pipeline live in your own instance, opened in a minute. It runs on Ekwo OS, open source — a foundation your whole company uses, and you and your AI agents build new services on.

Ekwo runs your finance and ERP data, with the AI model you choose. You and your accountant stay in control.

See the app, screen by screenAlready using Claude? Try it on your own books

Works with the model you choose

  • ChatGPT
  • Claude
  • DeepSeek
  • Gemini
  • Kimi
  • Mistral
  • Qwen
  • any MCP client

Names and logos belong to their owners; Ekwo is not affiliated with them.

See it work

Ninety seconds each.

An AI runs the companyAn AI agent keeps the books of a company through Ekwo, and Ekwo Cloud shows the result.
Build your own app on EkwoAn app built in minutes on the books that are already there — invoicing, finance and ERP done.

Every screen of the app

Everywhere

Free and independent data infrastructure, in every country of the world.

No business, anywhere, should have to rent the right to keep its own books. Ekwo works with 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. 169 countries today. The rest of the world is open, and it is yours to write.

A business is data, in every country.

The countries Ekwo has a pack for169 countries have a country pack in this repository. Every other country links to a page that says where it stands. The same information is listed in text below the map.Afghanistan — not yet, see where it standsAlbania — communityAlgérie — communityAngola — communityArgentina — communityAustralia — communityAustria — communityAzərbaycan — communityBangladesh — communityBelarus — not yet, see where it standsBelgium — provenBelize — not yet, see where it standsBénin — communityBhutan — communityBolivia — communityBosna i Hercegovina — communityBotswana — communityBrasil — communityBrunei Darussalam — communityBurkina Faso — communityBurundi — communityCameroun — communityCanada — communityCentrafrique — communityChile — communityColombia — communityCongo — communityCosta Rica — communityCôte d’Ivoire — communityCrna Gora — communityCroatia — communityCuba — not yet, see where it standsCyprus — communityCzechia — communityDanmark — communityDjibouti — communityDominican Republic — communityEcuador — communityEl Salvador — communityEritrea — not yet, see where it standsEspaña — communityEstonia — provenEswatini — communityEthiopia — communityFalkland Islands — not yet, see where it standsFiji — communityFinland — communityFrance — provenFrench Southern Territories — not yet, see where it standsGabon — communityGermany — communityGhana — communityGreenland — not yet, see where it standsGuatemala — communityGuinée — communityGuinée équatoriale — communityGuinée-Bissau — communityGuyana — communityHaiti — not yet, see where it standsHonduras — communityIndia — communityIndonesia — communityIran — not yet, see where it standsIraq — not yet, see where it standsIreland — communityÍsland — communityIsrael — communityItalia — communityJamaica — communityJordan — communityKenya — communityKuwait — communityLao PDR — communityLatvija — communityLebanon — not yet, see where it standsLesotho — communityLiberia — not yet, see where it standsLibya — not yet, see where it standsLietuva — communityLuxembourg — communityMadagascar — communityMagyarország — communityMalawi — communityMalaysia — communityMali — communityMaroc — communityMauritanie — communityMéxico — communityMoçambique — communityMoldova — communityMyanmar (Burma) — not yet, see where it standsNamibia — communityNederland — communityNepal — communityNew Caledonia — not yet, see where it standsNew Zealand — communityNicaragua — communityNiger — communityNigeria — communityNorge — communityNorth Korea — not yet, see where it standsOman — communityPakistan — communityPalestinian Territories — not yet, see where it standsPanamá — communityPapua New Guinea — communityParaguay — communityPerú — communityPhilippines — communityPolska — communityPortugal — communityPuerto Rico — not yet, see where it standsQatar — communityRépublique démocratique du Congo — communityRomania — communityRussia — not yet, see where it standsRwanda — communitySaudi Arabia — communitySchweiz — communitySénégal — communitySierra Leone — communitySlovenia — communitySlovensko — communitySolomon Islands — not yet, see where it standsSomalia — not yet, see where it standsSouth Africa — communitySouth Sudan — not yet, see where it standsSrbija — communitySri Lanka — communitySudan — not yet, see where it standsSuriname — communitySverige — communitySyria — not yet, see where it standsTanzania — communityTchad — communityThe Bahamas — communityThe Gambia — communityTimor-Leste — not yet, see where it standsTogo — communityTrinidad and Tobago — communityTunisie — communityTürkiye — communityUganda — communityUnited Arab Emirates — communityUnited Kingdom — communityUnited States — communityUruguay — communityVanuatu — not yet, see where it standsVenezuela — not yet, see where it standsViệt Nam — communityWestern Sahara — not yet, see where it standsYemen — not yet, see where it standsZambia — communityZimbabwe — communityΕλλάδα — communityБългария — communityКыргызская Республика — communityҚазақстан — communityМонгол Улс — communityСеверна Македонија — communityТуркменистан — communityЎзбекистон Республикаси — communityУкраїна — communityҶумҳурии Тоҷикистон (Республика Таджикистан) — communityსაქართველო — communityՀայաստան — communityمصر — communityประเทศไทย — communityកម្ពុជា — community대한민국 — community中国 — community日本 — community臺灣 — community
169 countries written30 open — yours to write

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 48 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

Six things a business should never have to rent.

Freedom

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.

No lock-in

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.

Your data stays yours

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, in the open

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.

Security

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.

Privacy

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

The work that no longer needs typing.

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.

Electronic invoices, written and checked

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.

Statements in, matched

camt.053, CODA and CFONB 120 import once however often you replay the file; a payment finds the invoice it settles by its reference.

Every report is one call away

Trial balance, aged balance, the VAT return and what is due when — for a person, a script or an agent, through the same functions.

From a PDF to a draft

Ekwo reads any supplier invoice, in any language, with the AI model you choose, 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 the entry is booked when somebody posts it.

command line — ekwo
% 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-run
account debit credit
1100 10500.00
4010 10000.00
2100 500.00
balanced — nothing posted, --dry-run
% ekwo company export
manifest.json + data/*.jsonl — your books, yours to take

Replayed from the United Arab Emirates pack’s golden year.

agent — ekwo
› 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 · AE
Drafting 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 AED
This is the entry it would write:
account debit credit
1100 10500.00
4010 10000.00
2100 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 open
And the declaration for 2026-Q1:
% vat_return { "period": "2026-Q1" }
box d1 108000.00
box d2 400.00
Booked 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 — ekwo
gather every PDF invoice in my local Drive folder and load them into the books
Search(pattern: "**/*.pdf", path: "~/Drive/Invoices")
Found 1 file
I’ll read the invoice and draft what it says. A draft books nothing.
Read(~/Drive/Invoices/2026-01-18 Deira Office Supplies LLC.pdf)
Read PDF
Deira Office Supplies LLC, 2026-01-18: Office supplies and stationery, 3000.00 before tax.
ekwo - search_contacts (MCP)(query: "Deira Office Supplies LLC")
Deira Office Supplies LLC · supplier · AE
ekwo - create_document (MCP)(doc_type: "purchase_invoice", document_date: "2026-01-18", client_ref: "2026-01-18 Deira Office Supplies LLC.pdf", lines: [{ name: "Office supplies and stationery", unit_price: "3000.00", account_code: "6220", tax_code: "AE-P-SR" }])
draft · purchase_invoice · nothing booked
One draft. It carries the file name as its reference, so running this again drafts nothing twice. The PDF stays in your folder: this release has no tool that stores a file against a document.
I read it from the PDF, so check it against the file. Shall I post it?

Claude Code with the Ekwo MCP server. Ekwo reads the PDF with the model chosen here, Claude, and keeps the draft and the rules; the file stays with you. The invoice is from the United Arab Emirates pack’s golden year.

Example session. Commands and results are real output from this release.

Your model, your rights

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 agent 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.

Built on open foundations

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.

Works with the accounting software you already use

Keep yours: Ekwo reads its exports and works on top of it — collecting, bringing the data to the standards, checking, preparing what the country asks for. Or let Ekwo keep the books on its own.

All the software Ekwo works with

Names belong to their owners. Ekwo is not affiliated with, endorsed by or sponsored by any of them; compatibility is through the exports they publish.

At a glance

The questions a CFO asks, answered in the cockpit.

For the CFO and the business owner: the Ekwo Cloud cockpit answers each question from the posted entries, scored on a published scale. Nothing to set up, no spreadsheet.

  1. How long would the cash last?

    Days of cash

  2. Do we earn money on what we sell?

    Net margin

  3. Can we pay what falls due this year?

    Current ratio

  4. How much of the company do we own?

    Equity ratio

  5. How fast do customers pay us?

    Days of sales outstanding

  6. How fast do we pay suppliers?

    Days of payables outstanding

  7. Do we sell more than last year?

    Revenue growth

Each figure is read from the aggregates the country pack defines. How the figures are read

See the cockpit

Where it stands

countries
169countriesone pack each, written as data
languages
48languagescharts and labels translated in the packs
legal formats
20legal formatswritten or read, as independent libraries
tools an agent can call
81tools an agent can callthe same ones a person uses
texts of law cited
1758texts of law citedeach with the day it was last opened

Everything a business needs, all free.

Free software under AGPL-3.0.

Accounting

Sales and invoices

Draft, number and post an invoice or a credit note under the numbering rule the country prescribes.

Purchases and suppliers

The same documents the other way round, with the tax recovered — or not — as the country says.

Contacts

Customers and suppliers, with their VAT number, the electronic address the pack names, and how each appears on a bank statement.

VAT, from the box to the filing

The return is computed from the books, frozen box by box, filed, and settled to the account the pack names.

Year-end close

Opening balances, closing the year into the accounts the country uses, and opening it again when you must.

Reports and statements

Trial balance, general ledger, aged balance, and the statutory statements of the country — one call each.

Electronic invoicing

Write and validate a Peppol BIS 3 or Factur-X invoice, with the sentences the country puts on it.

A command line, and an API

Every operation from a terminal or a script, with JSON output and exit codes a program can read.

A server for agents

The same operations exposed over the Model Context Protocol, under the rights of the person the agent acts for.

Finance

Bank and reconciliation

Import a statement, match a payment against what it settles, and let the reference do it for you.

Declarations

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.

Fixed assets

Depreciation schedules and disposals, on the durations and conventions the country pack declares.

Budgets

A budget per year and per account, and the variance against what the books actually hold.

Many companies, one installation

A firm keeps forty clients in six countries as forty rows, each with its own chart, locks and pack.

Leave whenever you like

A company exports whole — books, declarations and the proof they were filed — and imports into another installation.

Digital assets and proofs

Proofs on Bitcoin

A return, the annual accounts, any document: its hash anchored on Bitcoin. The file never leaves.

Checked by anyone

Whoever holds the file checks it against the block — no account, no Ekwo in between.

Yours to keep

Only the company stamps its filings, and every proof leaves with its archive.

planned

Digital assets

Wallets, lots, fair value at the close and realised gains, on the same books.

Documents & signature

planned

Signing, in the open

A document, its signatories and the trail of proof. The qualified level comes from the trust provider you choose.

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

Own it, or have it operated.

On your own

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.

npx ekwo-os init

Every release runs its suite on three versions of Node: the accounting rules, each country pack replayed against a year of books, and the installer, against real Postgres.

Install Ekwo OS

Operated for you

The 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 us

A network, not a vendor

Bring your expertise.

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.

Latest changes

Latest changes

Read from the repository at every build: the countries, the releases, what was added and what was fixed.

  1. country

    New country: Papua New Guinea The country page

  2. country

    New country: Samoa The country page

  3. release

    Ekwo OS 0.21.1 is released In the changelog

  4. release

    Ekwo OS 0.21.0 is released In the changelog

  5. featurenot released yet

    What a schema newer than the floor brought, named once: SCHEMA_FEATURES and supports(installed, feature) In the changelog

  6. featurenot released yet

    tests/schema_floor.test.ts, and the CI job schema-floor that runs it with the full history. In the changelog

  7. featurenot released yet

    The schema floor of the packages is 0.19.0, and it is no longer the release number. In the changelog

  8. feature

    An agent posts in the mode its company chose, or its session chose In the changelog

The data belongs to the business.

Read the manifesto