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.

123 tools
16 ready workflows
7+ AI clients supported

News

News & announcements

Notable changes and fixes. The tool is under active development.

2026-07-21 New · v0.24.0

Warns about duplicate payments and closing-balance mismatches

The tool now warns when the same bank payment is already in the books — no matter how it got there — and checks that the bank statement's closing balance reconciles with the accounting. It never deletes anything on its own — it only flags.

2026-07-20 Fixed · v0.22.1

Incoming receipts could be recorded as outgoing payments during a short window

In version 0.22.0, incoming receipts (including deposits and refunds) could be recorded as an outgoing payment instead. Fixed in version 0.22.1. This could only affect those who happened to create new bank transactions overnight into 20 July, roughly 22:30–04:15 (Estonian time).

If in doubt, compare the bank-account balance e-arveldaja shows against your real balance; if they differ, re-import the affected statements.

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 16 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.
vat-registration-thresholdCheck the 40 000 € VAT registration threshold (finance, insurance and real-estate turnover separated).
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 to this project, 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 123 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 123 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?
The e-arveldaja API doesn't expose the opening balance, but you can import it once: copy the „Algbilansi kanded“ (opening-balance entries) from e-arveldaja and ask your assistant to import them (the import_opening_balances tool). The server checks that total debit equals total credit, shows a preview (dry-run) and only stores them after you confirm. From then on the opening balance is folded automatically into account balances, the trial balance, balance sheet, P&L, the annual report and the dividend § 157 checks. This step is optional — everything still works without it, just without opening balances.