Experimental, unofficial project — use at your own risk

Let AI handle the bookkeeping routine.

The e-arveldaja MCP server connects your AI assistant straight to Estonia's e-arveldaja (RIK e-Financials). Invoices from PDFs and images, bank imports, month-end close and Estonian taxes — in plain language. You review and approve.

120 tools
15 ready workflows
7+ AI clients supported

What it is

A bridge between AI and e-arveldaja

e-arveldaja is the Estonian state's accounting software (RIK e-Financials). An MCP server is a small connector that links it to your AI assistant — be it Claude, ChatGPT/Codex, Gemini, Cursor, or another client.

The result: you talk to your assistant in plain language and it does the work in e-arveldaja — reading invoices from PDFs and images, importing bank statements, matching payments, creating sales invoices, generating reports and computing taxes. You stay the decision-maker; the assistant handles the routine. It works with both VAT-registered and non-registered companies.

It doesn't do absolutely everything, though. The server covers the everyday routine, but some tasks — such as the VAT return (KMD), the TSD payroll-tax return, and other Tax and Customs Board (EMTA) matters — you still handle in the e-arveldaja web environment.

The server is free and open source (Apache 2.0). The code and full documentation live on GitHub.

01

Speak plainly

"Import the LHV statement and match it to invoices." No export-import dance, no hunting through menus.

02

The assistant shows a preview

Every batch operation runs in dry-run mode first — you see exactly what will happen before anything changes.

03

You approve

Records are written only after your approval. Every change goes into a readable Markdown audit log.

Why I built this

It started as a classic "scratching my own itch" — I wanted to make Wise and Lightyear imports, and entering invoices, easier for myself. It grew from there.

It's starting to come together. It doesn't do everything — VAT and TSD returns still live in the e-arveldaja web UI — but it does quite a lot: it reads PDFs and images as invoices, imports bank statements, ties it all together, creates sales invoices, and checks limits and accounting rules where it can. And you can ask, in plain language, how your company is doing.

I run a couple of my own micro-companies on it and I'm already pretty happy with it. It hasn't been tested extensively yet, so always double-check. If you keep your micro-company's books in e-arveldaja, I think it'll genuinely help.

Indrek Seppo creator of e-arveldaja MCP

What it can do

Features

The everyday accounting routine through natural conversation — the final check is yours.

01

Purchase invoices from PDFs and images

OCR reads the invoice from a PDF or image (JPG/PNG), resolves the supplier from the business registry, fills the VAT rate and account from past bookings, creates the purchase invoice and matches it to the bank payment. OCR can misread, so check the fields.

02

Bank import (CAMT.053)

Import statements from LHV, Swedbank, SEB, Coop or Luminor. Re-imports preserve CAMT references and counterparty-account metadata even when the API drops dedicated fields, making duplicate review safer.

03

Wise transactions

Import the Wise transactions CSV — incoming and outgoing payments, with fees split into separate entries for proper expense accounting.

04

Bank reconciliation

Matches incoming and outgoing payments to the right invoices. Conservative with transfers — when unsure, it skips rather than guesses.

05

Month-end & reports

Month-end checklist, profit & loss, balance sheet, receivables and payables aging — by date range, as of any chosen date.

06

Estonian taxes

Dividend package with 22/78 income tax, retained-earnings and net-asset checks (ÄS §157).

07

Lightyear investments

Creates journal entries from Lightyear trades, dividends and interest, and computes capital gains from the FIFO report.

08

Accounting "inbox"

Scans your working folder and tells you what can be done automatically, what needs one decision, and what needs an accountant's eye. It returns a recommended next step, review questions and approval previews.

09

Sales invoices

Create and send sales invoices, manage clients, articles and invoice series. Incoming payments are later matched to these invoices by the bank import.

You don't need to memorize these — the assistant picks the right workflow from your request. But if you'd like to see what's there:

All 15 workflows (MCP prompts)
accounting-inboxStart here: scans the folder, detects inputs and suggests the next safe steps.
book-invoicePurchase invoice from PDF: extract, validate, resolve supplier, preview, create, upload, confirm.
receipt-batchReceipt batch: create and upload project purchase invoices (separate approval).
import-camtCAMT.053 statement: preview, then create entries after approval.
import-wiseWise CSV preview: fees, duplicates, skips.
reconcile-bankMatch bank rows to invoices, then auto-confirm or review.
classify-unmatchedGroup unmatched bank rows, preview, apply after approval.
month-end-closeMonth-end: checklist, trial balance, P&L, balance sheet.
company-overviewFinancial overview: balance sheet, P&L, receivables, payables.
new-supplierCreate a supplier via business-registry lookup.
lightyear-bookingBook Lightyear trades and distributions from CSV.
resolve-accounting-reviewTurn a review item into a concrete action plan.
prepare-accounting-review-actionPrepare the next action for a resolved item.
setup-credentialsVerify and import the API key from apikey.txt.
setup-e-arveldajaExplain API-credential setup in setup mode.

Trust & privacy

The final word is yours

It only touches live data when you allow it — and leaves a trail.

Dry-run by default

Bank import, Wise, Lightyear, receipt batches and auto-confirm all preview first. Records change only after your explicit approval.

Audit log

Every mutating operation is written to a Markdown log (logs/{company}.audit.md) — a short action sentence, a clear field table, accounts, amounts and dimensions when present.

OCR is sandboxed

Text from scanned invoices is wrapped in security delimiters so a malicious document cannot smuggle hidden instructions to your assistant (prompt-injection protection).

Local and narrow

Documents are parsed locally by default. The server only reaches out to the e-arveldaja API and your chosen AI model — plus the business registry for supplier lookups.

Follows past bookings

It first checks how similar entries were booked before, then does the same. It doesn't invent VAT treatment on its own.

Multiple companies

Several API keys side by side; switch with one command. Switching clears the cache so data doesn't get mixed between companies.

Important — use at your own risk

This is an experimental, unofficial project — tested, but not extensively. It is not affiliated with, endorsed by, or connected to RIK or the e-arveldaja / e-Financials service. The software works with live data and can create, modify, confirm and delete accounting records. Always verify the results. The author accepts no responsibility for data loss or incorrect bookings.

Technical setup

Up and running in ~5 minutes

You need an e-arveldaja account, an MCP-capable AI assistant and Node.js 18+.

1

Get an API key from e-arveldaja

Log in to e-arveldajaSettings → General settings → Add new access token. Add your public IP address and save. Download the apikey.txt file. Never commit this file to git.

2

Add the MCP server

Most AI assistants can set the server up for you — just say: "Add the e-arveldaja MCP server, the npm package is e-arveldaja-mcp."

If you prefer to do it manually — in Claude Code, one line is enough:

$ claude mcp add e-arveldaja -- npx -y e-arveldaja-mcp

In other clients (Cursor, Windsurf, Cline, Gemini CLI, Codex CLI, Antigravity) add the same to your MCP config — or let the assistant create the file for you:

{ "mcpServers": { "e-arveldaja": { "command": "npx", "args": ["-y", "e-arveldaja-mcp"] } } }

Tip — install the server per project. The e-arveldaja MCP loads 120 tools into the model's context by default at the start of every session; that's a fixed token cost per session. So add the server only in the folder where you do your accounting. claude mcp add does this by default — the server applies to this project only. Avoid a global install (-s user): otherwise every tool loads into context in every project, including ones unrelated to accounting, wasting tokens. In other clients, prefer a project-local config (e.g. .cursor/mcp.json in Cursor) over a global one.

You can trim context by disabling unused feature groups: EARVELDAJA_DISABLE_LIGHTYEAR=1, EARVELDAJA_DISABLE_TAX_TOOLS=1, EARVELDAJA_DISABLE_REFERENCE_ADMIN=1, EARVELDAJA_DISABLE_ANNUAL_REPORT=1, EARVELDAJA_DISABLE_SALES=1 and EARVELDAJA_DISABLE_PRODUCTS=1. A purchase-side-focused setup with every trim lands near 80 tools; set EARVELDAJA_EXPOSE_GRANULAR_TOOLS=1 if you need the hidden low-level tools back.

3

Import the key and start

Put apikey.txt in your working folder. The server detects it and offers to import — or tell your assistant: "Import my API key from apikey.txt." Then try: "Scan this folder and tell me what can be done automatically."

Claude Code Codex CLI Gemini CLI Cursor Windsurf Cline Antigravity

Want to try it before touching live data? Set EARVELDAJA_SERVER=demo to run against the e-arveldaja demo server.

Need help setting it up or tailoring it? Email Indrek.

Frequently asked questions

FAQ

What is the e-arveldaja MCP server?
An open-source tool (MCP server) that connects your AI assistant (Claude, Codex, Gemini, Cursor and others) to Estonia's e-arveldaja (RIK e-Financials) API. In plain language it can enter purchase invoices from PDFs and images, import bank statements, match payments and generate reports.
Is this an official RIK tool?
No. It is an experimental, unofficial project. It is not affiliated with, endorsed by, or connected to RIK or the e-arveldaja / e-Financials service. Use it at your own risk — always verify the results.
Do I still need an accountant?
The tool handles the routine, but the responsibility is yours alone. It's wise to have an accountant review the entries from time to time; at the very least, ask the assistant whether anything looks off. Some accounting knowledge definitely helps — without it, the results are hard to judge.
Is my accounting data safe?
Documents are parsed locally by default, and the server only reaches out to the e-arveldaja API and your chosen AI model. Batch operations run in dry-run mode first (a preview); records change only after your approval, and every change is written to a Markdown audit log. Text from scanned invoices is protected against prompt injection with security delimiters.
How much does the e-arveldaja MCP server cost?
The server itself is free and open source (Apache 2.0). You only pay for your AI assistant (for example Claude) if it is a paid service. Good to know: the server loads 120 tools into context by default each session, so add it per project (not globally) — that way you don't spend tokens in projects unrelated to accounting.
Which AI clients does it work with?
Any MCP-capable client: Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf, Cline, Antigravity and others. Node.js 18+ is required.
Which banks and data does it support?
Bank statements in CAMT.053 format (LHV, Swedbank, SEB, Coop, Luminor) and the Wise transactions CSV, plus Lightyear investments. On top of that: purchase invoices from PDFs and images, reports and Estonian taxes (dividends 22/78, owner expenses).
Can it see my opening balance?
Not automatically — the e-arveldaja API doesn't expose the opening balance (along with a few other things). The simplest fix: paste the opening balance to your assistant and ask it to remember it. From then on it can take it into account.