Get started

Set up Ekwo for France

Two ways in, and both end the same way: the rules of France installed in a database you own.

Create your Ekwo Cloud account

The hosted edition, operated for you: the web application and your own instance. No password — Ekwo Cloud sends a code to your address.

Country

FranceAnother country?

You are
Already have an account? Log in

Run it yourself

Free, for ever. One command on your own Supabase project applies the schema, installs the France pack and creates your first company. Nothing is gated.

npx ekwo-os init --country FR

It asks for the rest as it goes: the connection to your project, the chart of accounts where there is a choice, your organisation and your first administrator.

Read the installation guide

Step by step

The same path as text: every command with France already on it, and the codes a first invoice is written with. An AI agent helping you reads the same text as Markdown, at /countries/fr/set-up.md.

Ekwo keeps balanced accounts in a database you own, with the rules of France as data. On Ekwo Cloud the France pack is ready to use, with an account opened in a minute; this page is the other way in, Ekwo OS, the open source core, installed on your own project. It is generated from the France pack, version 1.23.0; every code on it is read from the pack.

Your accountant works on the same data, with their own access, and the pack carries its sources, its version and its status. To find an accountant who works with Ekwo in France, see the directory or our partners. What Ekwo is, and its limits: the disclaimer.

1. What you need

  • A Supabase project of your own. The free plan is enough to start; Ekwo does not create it, pay for it or have access to it.
  • From its dashboard: the connection string (Connect → Session pooler), the Project URL and the service_role key (Project Settings → API). The key is used once, to create your first administrator, and is written nowhere. The anon (publishable) key, on the same page, is what you sign in with afterwards.
  • Node 20 or later on your machine. Nothing else: no Supabase CLI, no Docker, no clone.

2. Install

One command. It asks for the rest as it goes.

npx ekwo-os init --country FR
  • One chart of accounts: PCG — plan comptable général, 401 accounts.
  • The accounts can be kept in fr, en; the installer asks. Without a terminal, pass --language <code>.
  • The Déclaration de TVA 3310-CA3 is filed on one of these cadences: month, quarter. The default is month. Pass --vat-period <cadence> to set yours.
  • A financial year follows the calendar unless you pass --fiscal-year-start YYYY-MM-DD.

The same, with no question asked — every value your own:

npx ekwo-os init \
  --country FR \
  --language fr \
  --db-url "postgresql://postgres.<ref>:<password>@<pooler host>:5432/postgres" \
  --supabase-url "https://<ref>.supabase.co" \
  --service-role-key "$SUPABASE_SERVICE_ROLE_KEY" \
  --org "Your Organisation" --company "Your Company" \
  --admin-email "you@example.com" \
  --yes

3. Before you go live

Four settings of your project no installer can reach: turn off self sign-up, keep two administrators, keep the service_role key off every other machine, and read the disclaimer. init prints them; the installation guide explains each.

4. A first invoice

Sign in as the administrator you just created, pick the company, and write a draft. --dry-run shows what the database would write, and writes nothing; post records it.

ekwo login --supabase-url https://<ref>.supabase.co --anon-key <publishable key> --email you@example.com
ekwo use "Your Company"
ekwo contact add "First Customer" --country FR --ref customer-1
ekwo doc new --contact "First Customer" --ref invoice-1 --line "name=Consulting,price=1000.00,account=706000,tax=FR-S-20"
ekwo post invoice-1 --dry-run
ekwo post invoice-1

A line names its account and its tax by code, never by rate. 706000 is the account the pack names for sales; the chart may carry a closer one for what you sell — services, a reduced rate — and list_accounts lists them.

What the invoice says about your company — its address, its VAT number — comes from the company’s profile, which the MCP tool update_company_profile fills; ekwo init sets only the name.

The domestic sale taxes the pack carries today. Which one a sale carries is a question about that sale, for you or your accountant: the list is the pack’s, not advice.

Tax code Name Rate
FR-S-20 Vente 20 % 20 %
FR-S-20-ENC Prestation de services 20 % — TVA sur les encaissements 20 %
FR-S-10 Vente 10 % 10 %
FR-S-10-ENC Prestation de services 10 % — TVA sur les encaissements 10 %
FR-S-055 Vente 5,5 % 5.5 %
FR-S-055-ENC Prestation de services 5,5 % — TVA sur les encaissements 5.5 %
FR-S-021 Vente 2,1 % 2.1 %
FR-S-085-GP Vente 8,5 % en Guadeloupe 8.5 %
FR-S-085-MQ Vente 8,5 % en Martinique 8.5 %
FR-S-085-RE Vente 8,5 % à La Réunion 8.5 %
FR-S-085-ENC-GP Prestation de services 8,5 % en Guadeloupe — TVA sur les encaissements 8.5 %
FR-S-085-ENC-MQ Prestation de services 8,5 % en Martinique — TVA sur les encaissements 8.5 %
FR-S-085-ENC-RE Prestation de services 8,5 % à La Réunion — TVA sur les encaissements 8.5 %
FR-S-021-GP Vente 2,1 % en Guadeloupe 2.1 %
FR-S-021-MQ Vente 2,1 % en Martinique 2.1 %
FR-S-021-RE Vente 2,1 % à La Réunion 2.1 %

5. With an AI agent

The MCP server lets an agent act as you, under your own row level security, and never with the service_role key. Configuring it, and what an agent must and must not do.

What the France pack carries

  • Charts of accounts: PCG — plan comptable général (401).
  • 47 taxes, at 0 %, 2.1 %, 5.5 %, 8.5 %, 10 %, 20 %.
  • The Déclaration de TVA 3310-CA3 (FR-CA3), 35 boxes, filed month, quarter.
  • The Déclaration annuelle de TVA 3517-S-SD (CA12) (FR-CA12), 38 boxes, filed year.
  • Electronic invoices as factur-x-en16931.
  • Financial statements: Bilan — liasse fiscale 2050 et 2051, Compte de résultat — liasse fiscale 2052 et 2053.

What it does not do

  • No library of this repository writes the file of the FR-CA3 yet: the return is computed and frozen here, and typed on the administration’s portal.
  • No library of this repository writes the file of the FR-CA12 yet: the return is computed and frozen here, and typed on the administration’s portal.
  • Nothing is sent to an administration, a Peppol network or a bank by the open source software: transmission is yours, or an operator’s you appoint.
  • What the pack leaves out on purpose is in its README.