# Set up a company in France with Ekwo OS

Ekwo OS is open source software for keeping double-entry books in a database you own. This page is generated from the France pack, version 1.15.0; every code on it is read from the pack.

The France pack is **maintained**: written and kept up to date by Ekwo, and not reviewed by an accounting professional.

> Ekwo is software, not an accountant and not tax advice: a pack is a reading of the rules at the date of its version, and it can be wrong for your situation. Have a qualified professional in France check your set-up and your first declarations. See [what Ekwo is, and what it is not](https://ekwo.ai/disclaimer/).

## 1. What you need

- A [Supabase](https://supabase.com) 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.

```sh
npx ekwo-os init --country FR
```

- One chart of accounts: PCG — plan comptable général, 394 accounts.
- The books 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:

```sh
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](https://ekwo.ai/docs/install/#before-you-go-live-four-things-on-your-project) explains each.

## 4. A first invoice

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

```sh
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 assistant

The MCP server lets an assistant keep the books as you, under your own row level security, and never with the `service_role` key. [Configuring it](https://ekwo.ai/docs/mcp/), and [what an assistant must and must not do](https://ekwo.ai/docs/agents/).

## What the France pack carries

- Charts of accounts: PCG — plan comptable général (394).
- 46 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.
- 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.
- 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](https://github.com/Ekwo-ai/ekwo-os/tree/main/packs/fr).
