{
  "markdown": "# Merit Aktiva for AI Agents\n\n> Plug **Merit Aktiva** — Estonia's most-used accounting software — into Claude, ChatGPT, Cursor and any AI agent. Bookkeeping, invoicing, VAT (KMD), and the full **Merit Aktiva API** in six Claude Code skills. Bilingual: **English · Eesti keeles**.\n\n[![Plugin](https://img.shields.io/badge/Claude_Code-plugin-blue)](https://code.claude.com/docs/en/plugins.md)\n[![Version](https://img.shields.io/badge/version-0.1.0-green)](https://github.com/arturl95/merit-aktiva-skills/releases)\n[![License](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE)\n[![Rates verified](https://img.shields.io/badge/rates_verified-2026--05--12-success)](skills/estonian-bookkeeping/SKILL.md)\n[![Made in Estonia](https://img.shields.io/badge/made_in-Estonia%20🇪🇪-blue)](#merit-aktiva-ai-agentidele--eestikeelne-juhend)\n\n**[Eesti keeles allpool ↓](#merit-aktiva-ai-agentidele--eestikeelne-juhend)**\n\n---\n\n## What is this?\n\n**Merit Aktiva for AI Agents** is an open-source [Claude Code](https://code.claude.com) skills plugin that lets AI agents — Claude, ChatGPT, Cursor, or anything that can read instructions — operate [Merit Aktiva](https://www.merit.ee/), Estonia's #1 accounting software (majandustarkvara). It wraps the official [Merit Aktiva API](https://api.merit.ee/) with HMAC-SHA256 authentication, the complete v2 endpoint surface, and — critically — the **2026 Estonian tax rules** (käibemaks 24%, distributed-profit CIT, payroll, KMD codes). Use it to automate sales invoicing, purchase invoices, e-arve import, bank reconciliation, GL adjustments, and month-end VAT (KMD) reporting from any LLM.\n\nThis plugin does **not** ship code. It ships *instructions* — six skills your AI reads to learn the API, the gotchas, and the Estonian bookkeeping rules. Your agent talks to `api.merit.ee` directly over HTTPS.\n\n## Quick start\n\nIn any Claude Code session:\n\n```bash\n# 1. Add this repo as a plugin marketplace\n/plugin marketplace add arturl95/merit-aktiva-skills\n\n# 2. Install the plugin\n/plugin install merit-aktiva-skills@merit-aktiva-skills\n```\n\nThen set credentials (from Merit Aktiva → Settings → API Settings) in your shell:\n\n```bash\nexport MERIT_API_ID=\"your-api-id-guid\"\nexport MERIT_API_KEY=\"your-api-key-secret\"\n```\n\nSee [Installation](#installation) below for alternative install methods (local clone, marketplace.json, etc.).\n\nThen ask Claude:\n\n> \"List Acme OÜ's unpaid invoices this month.\"\n> \"Post a €1,000 + 24% VAT consulting invoice to Acme OÜ for May.\"\n> \"Import last week's Swedbank statement and reconcile.\"\n> \"Verify the April KMD reconciles before I file.\"\n\nClaude loads the right skill(s), resolves customer/item/tax codes, builds the API payload, shows it to you for confirmation, and posts it on your \"yes\".\n\n## Features\n\n- **Sales invoicing** — `sendinvoice` v2 with all the rounding and TaxId rules baked in. Credit invoices, e-arve dispatch via Omniva / Telema / bank, PDF retrieval, email delivery.\n- **Purchase invoicing** — supplier bills, expense claims, approval queue, reverse-charge VAT for intra-EU and non-EU transactions.\n- **Payments & bank reconciliation** — payments, prepayments, settlements, **camt.053** bank statement import with auto-matching via viitenumber.\n- **General ledger & reports** — `sendglbatch` for adjustments, P&L, balance sheet (`getfinpos`), AR aging, sales/purchase reports, VAT reconciliation.\n- **Estonian tax compliance** — 2026 rates (VAT 24% / 13% / 9%, CIT 22/78, social tax 33%, II pillar 2/4/6%), KMD line mapping, fringe-benefit math, deadlines, board-member-fee specifics. All citations to [emta.ee](https://www.emta.ee/en).\n- **HMAC-SHA256 request signing** — verified against the official spec and four open-source clients (Go, TS, two PHP). Worked example included.\n- **Confirmation guardrails on every write** — show the payload, wait for \"yes\". Optional batch-confirm mode for repetitive jobs.\n\n## Authentication — HMAC-SHA256\n\nEvery Merit Aktiva API call carries three query parameters: `ApiId`, `timestamp` (UTC, `yyyyMMddHHmmss`), and `signature`.\n\n```\ntimestamp  = UTC now formatted yyyyMMddHHmmss\ndataToSign = utf8(apiId + timestamp + httpBody)\nsignature  = base64(hmac_sha256(apiKey, dataToSign))   # standard alphabet\nurl        = base + endpoint + \"?ApiId=\" + apiId\n             + \"&timestamp=\" + timestamp\n             + \"&signature=\" + urlencode(signature)\n```\n\nCommon gotchas (full list in [`skills/merit-aktiva-core/references/authentication.md`](skills/merit-aktiva-core/references/authentication.md)):\n\n- **URL-encode** the signature before appending — `+` becomes a space otherwise.\n- **UTC**, not Tallinn local. Sync to NTP.\n- **Sign the exact bytes** you POST. Re-serializing after signing breaks the signature.\n- **HMAC-SHA256**, not plain SHA-256. Standard base64 alphabet, not URL-safe.\n\nSee [API seadistus on support.merit.ee](https://support.merit.ee/et/articles/368840-api-seadistus) for getting your API ID and API Key.\n\n## The six skills\n\n| Skill | What it does |\n|---|---|\n| **`merit-aktiva-core`** | Authentication, conventions, error handling. Foundation skill. |\n| **`merit-aktiva-masters`** | Customers, vendors, items, tax codes, chart of accounts. Resolves names to GUIDs. |\n| **`merit-aktiva-sales`** | Sales invoices, credit notes, e-invoicing (Omniva/Telema/bank), PDFs. |\n| **`merit-aktiva-purchases-payments`** | Purchase invoices, expense claims, payments, camt.053 bank import. |\n| **`merit-aktiva-ledger-reports`** | GL journal entries, P&L, balance, customer-debt, sales/purchase, VAT reports. |\n| **`estonian-bookkeeping`** | 2026 Estonian tax rules — VAT, CIT, payroll, KMD codes, fringe benefits. Standalone (no Merit dependency). |\n\nPlus a bundled subagent **`merit-bookkeeper`** for batch jobs (a stack of receipts, monthly retainers, bank reconciliation).\n\n## Installation\n\nPick whichever method fits your setup.\n\n### A — Add as a marketplace (recommended)\n\nIn any Claude Code session:\n\n```bash\n/plugin marketplace add arturl95/merit-aktiva-skills\n/plugin install merit-aktiva-skills@merit-aktiva-skills\n```\n\nThe first command registers this repo as a [plugin marketplace](https://code.claude.com/docs/en/plugin-marketplaces). The second installs the `merit-aktiva-skills` plugin from it. Updates land via `/plugin update`.\n\n### B — Local clone (for development or air-gapped use)\n\n```bash\ngit clone https://github.com/arturl95/merit-aktiva-skills.git\nclaude --plugin-dir ./merit-aktiva-skills\n```\n\n`--plugin-dir` loads the plugin for the current session without installing it system-wide. You can stack multiple plugin directories.\n\n### C — Persist as a known marketplace in `~/.claude/settings.json`\n\n```json\n{\n  \"extraKnownMarketplaces\": {\n    \"merit-aktiva-skills\": {\n      \"source\": { \"source\": \"github\", \"repo\": \"arturl95/merit-aktiva-skills\" }\n    }\n  }\n}\n```\n\nThen `/plugin install merit-aktiva-skills@merit-aktiva-skills`. Useful if you want the marketplace available without re-adding it each time.\n\n### Verifying installation\n\n```bash\n/plugin list\n```\n\nYou should see `merit-aktiva-skills` enabled. Try `merit-aktiva-core` in your next prompt:\n\n> \"Show me what merit-aktiva-core knows about authentication.\"\n\nClaude should load the skill and summarise the HMAC signing recipe.\n\n## How it compares\n\n| Approach | Pros | Cons | Best for |\n|---|---|---|---|\n| **`merit-aktiva-skills`** (this) | Up-to-date 2026 tax rules baked in; AI-native; works in any LLM that reads instructions; bilingual | Requires Claude Code or compatible AI host | AI-driven bookkeeping, agent workflows |\n| **[`KasparKipp/merit-aktiva`](https://github.com/KasparKipp/merit-aktiva)** (Node/TS) | Strongly typed; modern stack | Manual coding; no tax knowledge | Node integrations |\n| **[`akosmarton/merit-aktiva-api-go`](https://github.com/akosmarton/merit-aktiva-api-go)** (Go) | Performant | Manual coding; uses URL-safe base64 (non-canonical) | Go backends |\n| **Raw HTTP** | Maximum control | You write every signature, every payload, every error path | Custom one-offs |\n\n## Use cases\n\n- **AI bookkeeper for an Estonian OÜ** — process supplier invoices from email, decide accounts and VAT codes, post on confirmation.\n- **ChatGPT KMD assistant** — pull period invoices, build the KMD line totals, cross-check against GL, surface discrepancies before filing.\n- **e-arve sync** — read incoming e-invoices, route to approval queue, notify the responsible employee.\n- **Monthly recurring invoices** — list of customers × monthly retainer → 30 `sendinvoice` calls with one batch confirm.\n- **Bank reconciliation co-pilot** — daily camt.053 import + interactive matching of unmatched lines.\n\n## FAQ\n\n### What is the Merit Aktiva API?\nThe official REST API for [Merit Aktiva](https://www.merit.ee/), Estonia's most-used accounting software. Documented at [api.merit.ee](https://api.merit.ee/). Supports sales invoices, purchase invoices, customers, vendors, items, payments, bank statements, GL transactions, and reports.\n\n### How do I get a Merit Aktiva API ID and API key?\nLog into Merit Aktiva → **Settings → API Settings → Create Key**. You'll get an `ApiId` (GUID) and an `ApiKey` (HMAC secret). Step-by-step at [API seadistus](https://support.merit.ee/et/articles/368840-api-seadistus). Requires Pro or Premium license.\n\n### Does Merit Aktiva have a sandbox?\nNo. The [official FAQ](https://api.merit.ee/faq/) confirms it: *\"We don't have the sandbox. Just create a test company. Trial license allows you to create up to 100 documents.\"* Use a trial company for testing.\n\n### How does HMAC signing work?\nSee the [Authentication](#authentication--hmac-sha256) section above and the full recipe in [`skills/merit-aktiva-core/references/authentication.md`](skills/merit-aktiva-core/references/authentication.md). It's HMAC-SHA256 over `apiId + timestamp + body`, base64-encoded and URL-encoded into the query string. UTC timestamp.\n\n### Can I file KMD via API?\nNo. EMTA's KMD submission happens at [emta.ee](https://www.emta.ee/) (e-MTA portal). Merit Aktiva exposes the figures (via report endpoints) but does not push to EMTA. Manual filing remains.\n\n### Is this official?\n**No.** This is a community plugin, not affiliated with AS Merit Tarkvara. Cross-check rates and rules against [emta.ee](https://www.emta.ee/en) before filings.\n\n### What if my LLM isn't Claude?\nThe skills are Markdown files. Any LLM that can read text and follow instructions can use them — copy the relevant SKILL.md into your system prompt or context. The plugin format is Claude Code's, but the content is portable.\n\n### Why \"AI agents\" and not \"MCP server\"?\nThis plugin is a set of Claude Code *skills* (Markdown instructions), not an MCP server (a running process). The naming reflects what it actually is. The keywords `merit aktiva mcp` and `accounting mcp server` are addressed by the AI-agent framing because the use case overlaps.\n\n## Security & disclaimer\n\n- **Credentials**: only set `MERIT_API_ID` / `MERIT_API_KEY` as environment variables. Never paste them into chat. Never commit them to git.\n- **Trial-first**: test against a Merit trial company before connecting to production. The skill prompts your AI to confirm before any first write in a session.\n- **Tax accuracy**: tax rates in this plugin are last verified on the date in each skill's `last-verified` frontmatter. Estonia legislates frequently; cross-check current rates at [emta.ee](https://www.emta.ee/en) before filings.\n- **Not an official Merit Tarkvara product.** Provided \"as is\" under [MIT License](LICENSE).\n\n## Contributing\n\nIssues and PRs welcome at [github.com/arturl95/merit-aktiva-skills](https://github.com/arturl95/merit-aktiva-skills). When updating tax rates, change the `last-verified` date in the affected SKILL.md and update the cited emta.ee URLs.\n\n---\n\n# Merit Aktiva AI agentidele — eestikeelne juhend\n\n> Ühenda **Merit Aktiva** — Eesti enimkasutatav majandustarkvara — Claude'i, ChatGPT, Cursori ja teiste AI agentidega. **Merit Aktiva API**, raamatupidamise automatiseerimine, müügiarved, ostuarved, e-arved, käibedeklaratsioon (KMD) — kõik see on pakendatud kuude Claude Code'i oskusesse (skill).\n\n## Mis see on?\n\n**Merit Aktiva AI agentidele** on avatud lähtekoodiga Claude Code'i plugin, mis õpetab AI agentidele (Claude, ChatGPT, Cursor jt) selgeks **Merit Aktiva integratsiooni**: ametliku [Merit Aktiva API](https://api.merit.ee/) HMAC-SHA256 autentimise, kõik v2 endpoint'id ja — mis kõige tähtsam — **2026. aasta Eesti maksureeglid**: käibemaks 24%, jaotatud kasumi tulumaks 22/78, palgamaksud, KMD koodid ja erisoodustused.\n\nSee plugin ei ole MCP server ega kooditeek — see koosneb kuuest **Markdown-failis kirjeldatud oskusest**, mida AI loeb ja omandab, et **Merit Aktiva liidesega** korrektselt suhelda. Sinu agent suhtleb `api.merit.ee`-ga otse üle HTTPS-i.\n\n**Kasutusjuhud**: AI raamatupidamine ja AI-toega raamatupidamine, e-arvete import, ostuarvete automaatne sisestamine, KMD koostamine ChatGPT abil, pangaväljavõtete automaatne kooskõlastamine ja igakuiste korduvate arvete genereerimine.\n\n## Kiire alustamine\n\nKäivita Claude Code'is:\n\n```bash\n# 1. Lisa see repo plugina-turuplatsina\n/plugin marketplace add arturl95/merit-aktiva-skills\n\n# 2. Paigalda plugin\n/plugin install merit-aktiva-skills@merit-aktiva-skills\n```\n\nSeejärel sea API andmed terminalis (Merit Aktiva → Seaded → API seadistus):\n\n```bash\nexport MERIT_API_ID=\"sinu-api-id-guid\"\nexport MERIT_API_KEY=\"sinu-api-võti-salasõna\"\n```\n\nAlternatiivsete paigaldusviiside (kohalik kloon, `--plugin-dir`, `settings.json` kaudu) jaoks vaata [Installation](#installation) sektsiooni inglisekeelses osas.\n\nSeejärel küsi Claude'ilt:\n\n> \"Näita Acme OÜ selle kuu tasumata arveid.\"\n> \"Koosta Acme OÜ-le mai eest konsultatsiooniteenuse arve summas 1000 € + 24% käibemaks.\"\n> \"Impordi eelmise nädala Swedbanki pangaväljavõte ja kooskõlasta laekumised.\"\n> \"Kontrolli aprilli KMD-d enne esitamist.\"\n\n## Funktsioonid\n\n- **Müügiarved** — `sendinvoice` v2; ümardamised, TaxId, kreeditarved, e-arvete väljastamine Omniva, Telema või pangakanalite kaudu, PDF-ide ja e-kirjade genereerimine.\n- **Ostuarved** — hankija arved, kuluaruanded, kinnitusringid, **pöördkäibemaks** EL-i ja kolmandate riikide tehingutel.\n- **Maksed ja pangaväljavõtted** — laekumised, tasumised, ettemaksud, kooskõlastamised, **camt.053** automaatne import ja sidumine viitenumbri alusel.\n- **Pearaamat ja aruanded** — `sendglbatch` käsitsi kannete tegemiseks, kasumiaruananne (`getprofitloss`), bilanss (`getfinpos`), ostjate tasumata arved, KMD kontroll.\n- **Eesti maksureeglid (2026)** — käibemaks 24% / 13% / 9%, sotsiaalmaks 33%, tulumaks 22%, maksuvaba tulu 700 €, II sammas 2/4/6%, KMD ridade kaardistamine, juhatuse liikme tasu eripärad.\n- **API allkirjastamine (HMAC-SHA256)** — testitud ja valideeritud ametliku spetsifikatsiooni ning nelja avatud lähtekoodiga kliendi (Go, TS, 2× PHP) põhjal.\n- **Kinnitusnõue andmete muutmisel** — enne API päringu teele panemist kuvatakse *payload* ja oodatakse kasutaja kinnitust (\"jah\"). Toetab ka partii-režiimi (*batch mode*).\n\n## Autentimine (API ID, API võti, HMAC allkiri)\n\nIga **Merit Aktiva API** päring sisaldab kolme URL-i parameetrit (*query parameter*): `ApiId`, `timestamp` (UTC, `yyyyMMddHHmmss`) ja `signature`.\n\n```\ntimestamp  = praegune UTC kell formaadis yyyyMMddHHmmss\ndataToSign = utf8(apiId + timestamp + httpBody)\nsignature  = base64(hmac_sha256(apiKey, dataToSign))\nurl        = base + endpoint + \"?ApiId=\" + apiId\n             + \"&timestamp=\" + timestamp\n             + \"&signature=\" + urlencode(signature)\n```\n\nAPI ID ja API võtme genereerimiseks ava: Merit Aktiva → Seaded → API seadistus. Vaata ka samm-sammulist juhendit: [API seadistus](https://support.merit.ee/et/articles/368840-api-seadistus). API kasutamine eeldab Pro või Premium paketi olemasolu.\n\n## Kuus oskust (skills)\n\n| Oskus | Kirjeldus |\n|---|---|\n| **`merit-aktiva-core`** | Autentimine, API konventsioonid ja veakäsitlus. Baasoskus, millele toetuvad teised. |\n| **`merit-aktiva-masters`** | Kliendid, hankijad, artiklid, KM-koodid ja kontoplaan. Nimede vastendamine GUID-ideks. |\n| **`merit-aktiva-sales`** | Müügiarved, kreeditarved, e-arvete väljastamine ja PDF-ide genereerimine. |\n| **`merit-aktiva-purchases-payments`** | Ostuarved, kuluaruanded, maksed ja pangaväljavõtete import. |\n| **`merit-aktiva-ledger-reports`** | Pearaamatu kanded, finantsaruanded ja KMD andmete kontroll. |\n| **`estonian-bookkeeping`** | 2026. aasta Eesti maksureeglid — käibemaks, tulumaks, palgamaksud ja KMD koodid. |\n\nLisaks on saadaval **`merit-bookkeeper`** alamagent (*subagent*) massandmete töötlemiseks (suurem hulk tšekke, igakuised korduvad arved, mahukad pangaväljavõtted).\n\n## Kasutusnäited\n\n- **AI-raamatupidaja väikeettevõttele** — AI agent loeb e-kirjadest hankijate arveid, määrab õiged kulukontod ja KM-koodid ning sisestab need pärast inimese kinnitust raamatupidamisse.\n- **ChatGPT KMD-assistent** — perioodi arvete summeerimine KMD ridade lõikes, andmete võrdlemine pearaamatuga ja lahknevuste tuvastamine enne EMTA-le esitamist.\n- **E-arvete sünkroniseerimine** — sissetulevate e-arvete suunamine kinnitusringi ja vastutavate töötajate teavitamine.\n- **Igakuiste arvete masskoostamine** — kliendinimekiri × kuutasu → 30 `sendinvoice` päringut, mis saadetakse teele üheainsa koondkinnitusega.\n- **Pangaväljavõtete assistent** — igapäevane **camt.053** failide import ja interaktiivne abi tundmatute laekumiste sidumisel.\n\n## KKK\n\n### Mis on Merit Aktiva API?\nSee on ametlik [Merit Aktiva](https://www.merit.ee/) REST API. Dokumentatsioon asub aadressil [api.merit.ee](https://api.merit.ee/). API toetab müügi- ja ostuarveid, klientide ning hankijate haldust, artikleid, makseid, pangaväljavõtteid, pearaamatu kandeid ja finantsaruandeid.\n\n### Kuidas saada Merit Aktiva API võti?\nAva Merit Aktiva ja liigu: **Seaded → API seadistus → Loo võti**. Sealt saad `ApiId` (GUID) ja `ApiKey` (HMAC salasõna). Loe lähemalt juhendist: [API seadistus](https://support.merit.ee/et/articles/368840-api-seadistus). API kasutamiseks on vajalik Pro või Premium pakett.\n\n### Kas Merit Aktival on testkeskkond?\nEi ole. Ametlik KKK ütleb: *\"Meil ei ole sandboxi. Loo testfirma — prooviversioon lubab 100 dokumenti.\"* Testimine toimub tavalises prooviversiooni (*trial*) ettevõttes, kasutades sama API aadressi.\n\n### Kuidas ühendada ChatGPT Merit Aktivaga?\nSelle plugina sisu töötab iga keelemudeliga (LLM), mis suudab juhiseid järgida. ChatGPT puhul kopeeri vajalike `SKILL.md` failide sisu süsteemiviipa (*system prompt*) — seejärel oskab agent otse `api.merit.ee`-ga suhelda. Claude Code'i kasutajad saavad plugina lihtsalt käsurealt paigaldada.\n\n### Kuidas töötab HMAC-allkiri?\nVaata [autentimise sektsiooni](#autentimine-api-id-api-võti-hmac-allkiri) ja täielikku tehnilist kirjeldust failist [`skills/merit-aktiva-core/references/authentication.md`](skills/merit-aktiva-core/references/authentication.md). Lühidalt: tehakse HMAC-SHA256 räsiallkiri stringist `apiId + timestamp + body`, mis kodeeritakse Base64 formaati ja lisatakse URL-kodeerituna päringu parameetritesse. Ajatempel peab olema UTC ajavööndis.\n\n### Kas saab KMD-d API kaudu esitada?\nEi saa. KMD esitamine toimub jätkuvalt [emta.ee](https://www.emta.ee/) e-MTA portaali kaudu. Merit Aktiva API kaudu saab kätte eeltäidetud andmed, kuid tarkvara ei saada neid automaatselt EMTA-sse.\n\n### Kas see on ametlik AS Merit Tarkvara toode?\n**Ei.** Tegemist on kogukonna loodud pluginaga, mis ei ole AS-iga Merit Tarkvara seotud. Enne KMD/TSD esitamist kontrolli alati maksumäärad ja reeglid üle [emta.ee](https://www.emta.ee/) lehelt.\n\n## Vastutus\n\n- Maksumäärad on viimati kontrollitud kuupäeval, mis on märgitud iga oskuse `last-verified` väljale. Kuna Eesti maksuseadusandlus võib muutuda, kontrolli andmeid enne deklaratsioonide esitamist alati [emta.ee](https://www.emta.ee/) lehelt.\n- Enne toodangukeskkonnas (*production*) kasutamist testi lahendust kindlasti prooviversiooni (*trial*) ettevõttes. Agent küsib sessiooni alguses alati kinnitust, enne kui teeb API kaudu esimese andmeid muutva päringu.\n- API ID ja API võti on konfidentsiaalsed andmed — ära kunagi lisa neid versioonihaldusesse (nt Git) ega jaga avalikes vestlustes.\n\n## Litsents\n\n[MIT](LICENSE) · Autor: Artur · Kogukonna projekt, **tegemist ei ole ametliku AS Merit Tarkvara tootega**.\n\n---\n\n*Made for Estonian businesses. Built with [Claude Code](https://code.claude.com), the [Model Context Protocol](https://modelcontextprotocol.io) ecosystem, and the patience required to read every page of [api.merit.ee/connecting-robots/reference-manual/](https://api.merit.ee/connecting-robots/reference-manual/).*",
  "bytes": 20608,
  "sha": "b4847f47757b6aa8a55fc489f93b2fbfde85cb4d9c2f4a72e06a1cc271dda35a",
  "repo_slug": "arturl95/merit-aktiva-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_arturl95_merit_aktiva_skills_merit_aktiv_ca617a27/readme"
}