Compatibility

Ekwo and Xero

Ekwo works on top of Xero — or keeps the books on its own.

Both keep double-entry books. Ekwo reads what Xero exports and works from it to the chart of accounts and the standards of each country pack: it collects, checks, prepares what the country asks for, and lets an agent do the work. It can also keep the books by itself.

With Xero

Your team keeps the books in Xero. Ekwo reads its exports and works on top of them: a copy in your own database, the reports and files the country asks for, the checks, and an agent on all of it.

What works today

Ekwo on its own

Ekwo keeps the books by itself: invoices and e-invoices, bank statements, returns and financial statements. The history kept in Xero comes in with one import, whole or not at all.

How Ekwo keeps them

What Ekwo does.

The same five things, whatever software the books come from. Each links to the file of Ekwo OS that makes it true.

Collects

Reads the exports of other ledgers and the bank statements in the formats the packs name, and keeps the invoices it issues itself.

The file: packages/cli/src/commands/import.ts

Brings the data to the standards

Maps every account to the country’s chart and writes the files the country expects: e-invoices to the profile the pack declares, the FEC where the country asks for it, the XBRL of the annual accounts where the pack names a taxonomy.

The file: packages/formats/README.md

Checks

Refuses books that do not balance, rehearses every import before it writes, and checks that posted entries balance and that statements tie to their lines.

The file: packages/cli/src/doctor.ts

Prepares the obligations

Prepares the VAT return from the books it keeps, the financial statements on the country’s scheme and the list of what falls due. It files nothing on its own.

The file: packages/mcp/src/server.ts

Works with your agents

Each of these is a tool of its MCP server: an agent can run it, show you the result and ask you before it writes.

The file: packages/mcp/README.md

The standards, read from the country packs.

Nothing in this list is written by hand: it is what the 44 country packs declare, at this build of the site.

E-invoicing profiles
factur-x-en16931ksef-fa3peppol-bis-3pint-aepint-aunzpint-jppint-sgxrechnung
Bank statements read
camt.053cfonb120coda
XBRL taxonomies
nbb-cbso:26.0
Financial statements
89 schemes
Charts of accounts
45 charts, in 44 countries

What Ekwo reads from Xero.

One export, one command. Nothing is written until you have read what Ekwo proposes.

  1. 1In Xero, open the Journal Report or the General Ledger Detail report and, in its column picker, add the Journal ID and the Account Code columns.
  2. 2Export the report to a spreadsheet, then save it as CSV.
  3. 3For the names and types of the accounts and the details of the contacts, export the chart of accounts and the contacts, which Xero exports as CSV. Each file is recognised by its header, in any order.
  4. 4Where the report writes dates in digits, give their order with --date-order dmy, mdy or ymd: the file does not say it.

Official documentation: General Ledger Detail report · Journal report · Export or print your chart of accounts · Export contacts out of Xero

Rehearse first. Nothing is written: Ekwo shows the correspondence of accounts it proposes, each suggestion with its reason, and saves it for you to complete.

ekwo import xero journal-report.csv chart.csv contacts.csv --dry-run --save-mapping mapping.json

Then import for real, with the correspondence completed. Everything is written in one transaction, or nothing is.

ekwo import xero journal-report.csv chart.csv contacts.csv --mapping mapping.json

From an agent, the same import is the MCP tool import_books, with the source xero: a dry run first, and the agent asks you before the real call.

What comes in

  • Every posted entry, with its journal, its date, its lines and their labels.
  • The accounts, each mapped to an account of the company’s chart — proposed by Ekwo, confirmed by you.
  • The partners, found by their code or their name, or created.
  • The old entry number, kept as the reference.

What does not

  • Tax. An imported line carries an account and an amount, not the tax that produced it: it feeds the ledger and the statements, not a VAT return.
  • Reconciliation marks. They are read, not re-applied: an open item is matched again in Ekwo.
  • Accounts the chart does not have. Each old account is mapped to one that exists; none is created.
  • Documents. Invoices and bills arrive as the entries they were posted as, not as documents that can be sent again.

With Xero

With Xero, today.

What works now, from the exports Ekwo reads.

A copy of the books in your own database

Each import brings the posted entries into an Ekwo company, on your country’s chart. The copy is as recent as the last export imported: nothing is synchronised continuously, and the same files twice are refused.

The file: docs/import.md

The reports and files, from that copy

General ledger, trial balance, financial statements on the country’s scheme, and the FEC with the checks an inspector applies first, where the country asks for it.

The file: packages/mcp/src/tools/read.ts

Bank statements, in the standard formats

Statements in camt.053, cfonb120, and coda are read into Ekwo as lines waiting to be matched.

The file: packages/cli/src/commands/import.ts

An agent on all of it

The import, the trial balance, the statements and the FEC are tools of the MCP server. An agent rehearses the import, shows you the correspondence and asks you before it writes.

The file: packages/mcp/src/tools/import-books.ts

Not from that copy: the VAT return, since imported lines carry no tax, and e-invoices, since invoices arrive as entries rather than as documents.

Ekwo on its own

Ekwo on its own.

Ekwo can keep the books by itself. The history comes in with the import above; from then on, everything is kept in Ekwo.

Invoices and e-invoices

Invoices and credit notes are issued in Ekwo and posted by the database. The format libraries write a posted invoice to the e-invoicing profile the pack declares, with every published rule it breaks; sending it goes through the access point you choose.

The file: packages/formats/peppol-ubl/README.md

Bank statements and payments

Statements in camt.053, cfonb120, and coda come in as lines; each is matched to the invoice it pays, and the payment is booked.

The file: packages/cli/README.md

Returns and financial statements

The VAT return is prepared from the tax each posted line carries, the financial statements follow the country’s scheme, and a return that has been filed keeps the proof of it.

The file: docs/filing.md

Leave whenever you want

ekwo company export writes the whole company in a format that needs nothing of Ekwo to be read. The trial balance and the FEC are one call away.

The file: docs/company-archive.md

What Ekwo is.

Open source

The whole engine is public, under AGPL-3.0: the schema, the command line, the MCP server and every country pack.

Your data, in your own database

The books live in a Postgres database you own, on your own Supabase project.

Driven by AI

An MCP server with 56 tools: an agent reads and keeps the books with you.

Country packs you can read

44 country packs, made of files anybody can open, each citing the texts it was written from.

Several countries, one installation

A company per country, each on its own pack, side by side.

Or hosted

Ekwo Cloud is the hosted edition, for those who would rather not run it themselves.

Compatibility

Try it on your own books.

Open an Ekwo Cloud account and import an export of Xero, or install Ekwo on your own project with one command.

Or install it yourself

npx ekwo-os init