# Set up a company in Bangladesh with Ekwo OS

Ekwo keeps double-entry books in a database you own, with the rules of Bangladesh as data. On [Ekwo Cloud](https://cloud.ekwo.ai/account) the Bangladesh 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 Bangladesh pack, version 0.1.0; every code on it is read from the pack.

The Bangladesh pack is **community**: contributed, and reviewed by nobody.

> Your accountant works in the same books, with their own access, and the pack carries its sources, its version and its status. To find an accountant who works with Ekwo in Bangladesh, see [the directory](https://ekwo.ai/partners/directory/) or [our partners](https://ekwo.ai/partners/). What Ekwo is, and its limits: [the disclaimer](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 BD
```

- One chart of accounts: Bangladesh reference chart of accounts (IFRS-inspired), 154 accounts.
- The books can be kept in `en`, `bn`; the installer asks. Without a terminal, pass `--language <code>`.
- The Value Added Tax return (form Mushak 9.1) is filed on one of these cadences: `month`, `quarter`. The default is `quarter`. 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 BD \
  --language en \
  --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 BD --ref customer-1
ekwo doc new --contact "First Customer" --ref invoice-1 --line "name=Consulting,price=1000.00,account=4000,tax=BD-S-15"
ekwo post invoice-1 --dry-run
ekwo post invoice-1
```

A line names its account and its tax by code, never by rate. `4000` 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 |
|---|---|---|
| `BD-S-15` | Sale, standard rate — VAT 15 % | 15 % |
| `BD-S-15-SD5` | Sale, VAT 15 % on a value including supplementary duty at 5 % | 20.75 % |
| `BD-S-15-SD10` | Sale, VAT 15 % on a value including supplementary duty at 10 % | 26.5 % |
| `BD-S-15-SD30` | Sale, VAT 15 % on a value including supplementary duty at 30 % | 49.5 % |
| `BD-S-5` | Sale at the truncated rate of 5 % | 5 % |
| `BD-S-7.5` | Sale at the truncated rate of 7.5 % | 7.5 % |
| `BD-S-10` | Sale at the truncated rate of 10 % — construction | 10 % |
| `BD-S-5-ADV-DIGITAL` | Sale of digital advertising at 5 % | 5 % |
| `BD-S-TRADE-7.5` | Trader sale at 7.5 % | 7.5 % |
| `BD-S-TRADE-3` | Trader sale of medicine at 3 % | 3 % |
| `BD-S-TRADE-2` | Trader sale of petroleum products at 2 % | 2 % |
| `BD-S-TRADE-1.5` | Wholesale sale at 1.5 % | 1.5 % |
| `BD-S-ZR-DEEMED` | Deemed export and other zero-rated supply | 0 % |

## 5. With an AI agent

The MCP server lets an agent 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 agent must and must not do](https://ekwo.ai/docs/agents/).

## What the Bangladesh pack carries

- Charts of accounts: Bangladesh reference chart of accounts (IFRS-inspired) (154).
- 31 taxes, at 0 %, 1.5 %, 2 %, 3 %, 5 %, 7.5 %, 10 %, 15 %, 20.75 %, 26.5 %, 49.5 %.
- The Value Added Tax return (form Mushak 9.1) (`BD-MUSHAK-9.1`), 34 boxes, filed month, quarter.
- Financial statements: Statement of financial position, Statement of profit or loss.

## What it does not do

- No library of this repository writes the file of the BD-MUSHAK-9.1 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/bd).
