Skip to content
Automation
Skill

/merit-palk-employees

How to onboard employees and maintain contracts, contacts, and base salary agreements in Merit Palk via `elnora-merit palk`. Covers the sendemployees-vs-sendpayterms distinction, required import codes, and reading the employee / agreement lists. Use when: adding a new employee,

From plugin
merit-aktiva-workspace
1018 skills3 agents5 commands1 MCP

Claude Code

$ npx -y skills add Elnora-AI/elnora-merit-aktiva --skill merit-palk-employees --agent claude-code

SKILL.md

merit-palk-employees.SKILL.md
name: merit-palk-employees
version: 1.0.0
description: >
  How to onboard employees and maintain contracts, contacts, and base salary agreements in
  Merit Palk via `elnora-merit palk`. Covers the sendemployees-vs-sendpayterms distinction,
  required import codes, and reading the employee / agreement lists.
  Use when: adding a new employee, creating a first contract, setting or updating a base
  salary agreement, adding an employee's bank/contact details, or listing employees/agreements.
  TRIGGERS: "add employee", "onboard employee", "new hire", "create contract", "tööleping",
  "base salary agreement", "palgakokkulepe", "change salary", "update salary agreement",
  "employee bank account", "employee contact", "list employees", "employee list".

Merit Palk — Employees, Contracts & Agreements

Endpoints: `palk employees create` (sendemployees), `palk base-salary create` (sendpayterms), `palk contacts add` (sendcontacts), `palk employees list` (getemployees), `palk base-salary list` (getpayterms). All POST. **No API delete/update** — corrections are manual in Merit Palk.

> If your workspace keeps a company books reference (the GL account, department/cost-centre > codes, salary-type import IDs actually configured in Merit Palk), load it from the > references dir (`MERIT_REFERENCES_DIR`) before building a payload. Note: `profile sync` > covers Aktiva reference data only — Palk import IDs are not in `company-profile.json`.

sendemployees vs sendpayterms — pick the right one

  • **New person joining** → `palk employees create` (sendemployees). Adds the employee, their

**first contract**, AND their **first base salary agreement** in one call.

  • **Changing pay for someone already in Merit** → `palk base-salary create` (sendpayterms).

Adds a NEW base salary agreement (new `StartDate`) to an existing contract.

  • You **cannot** use sendpayterms to add the first agreement at the contract's start date — that

one is auto-created with the contract. Two agreements can never share the same `StartDate`.

Add a new employee (sendemployees)

Required (\*): `PersonalCode`, `SurName`, `FirstName`, `TypeId`, `StartDate`, `SalaryTypeImpCode`. `SalaryTypeImpCode` must already exist on the Base Salary type card in Merit Palk (numeric).

elnora-merit palk employees create --data '{
  "PersonalCode": "39001011234",
  "FirstName": "Mari", "SurName": "Maasikas",
  "TypeId": 1,
  "StartDate": "2026-07-01",
  "SalaryTypeImpCode": 100,
  "Hours": 8.00, "Amount": 12.0000,
  "AutoTimeKeeping": true, "FullWorkingTime": true,
  "GLAccountCode": "5000", "DepartmentCode": "ADMIN"
}'
  • `TypeId`: 1 Employment contract · 2 Board member · 3 Other · 5 Contract of services · 4 No contract.
  • `Hours` = hours/day (8.00 full-time, 4.00 half). `Amount` = base salary tariff (the rate; e.g.

the hourly amount for hourly pay, or the monthly amount for monthly pay).

  • `AutoTimeKeeping`: `true` lets Merit auto-reduce hours for absences. Set `false` if you import

or hand-enter hours each month.

  • `GLAccountCode` / `DepartmentCode` / `CCCode` / `ProjectCode` are optional but recommended;

each must already exist in Merit Palk or it is ignored. (Posted-register fields: `NRStartDate`, `NREndDate`, `NRState` ISO2, `NRHasCert` — for the TÖR employment registration.)

Unpaid work & volunteers (TÖR type 501)

Registering someone who works for the company without pay is a **töötamise register (TÖR)** matter, not a payroll run — there is no salary to calculate in Palk. Register it directly in e-MTA before the person starts.

  • The TÖR has a dedicated employment type **501 "Tasuta töötamine"** (unpaid work), defined by

EMTA as *work in the economic interests of a company or sole proprietor (FIE) without remuneration* (Maksukorralduse seadus § 251(3) p1). No TSD/payroll taxes follow, because nothing is paid.

  • **It must be exceptional and short.** EMTA: unpaid work in the profit-oriented sector "can

still be only exceptional… not realistic for anyone to work for a longer period without being paid for it."

  • **You cannot disguise an employment relationship.** Töölepingu seadus § 1 defines a tööleping

as work done *for remuneration*; if the work is of a kind normally expected against pay, it is legally presumed to be an employment contract — triggering minimum wage and social tax retroactively. A "volunteer" label gives no protection if the substance is ordinary work.

  • **Genuine volunteering is different.** Public-benefit volunteer work is for non-profits and

foundations (which by nature have no economic interest) and is **not** registered in the TÖR at all. A for-profit OÜ has no true volunteers in that sense.

  • **Consequence:** type 501 carries no social tax, therefore **no health insurance**

(ravikindlustus) for the person.

  • For real, ongoing work use a proper contract instead: `TypeId` 1 (employment) or 5 (services).

Update a base salary agreement (sendpayterms)

elnora-merit palk base-salary create --data '{
  "ContractId": "39001011234",
  "StartDate": "2026-09-01",
  "Hours": 8.00, "Amount": 15.0000,
  "AutoTimeKeeping": true, "FullWorkingTime": true,
  "SalaryTypeImpCode": 100, "GLAccountCode": "5000"
}'
  • `ContractId` (required, non-empty, not `0`) = the contract import code **or** the employee's

Personal ID code. `StartDate` must differ from every existing agreement's start date.

Add / set contact details (sendcontacts)

Required: `PersonalCode`. Then any of `Address`, `PhoneNo`, `Email`, `BankAccountNo` (IBAN), `BankAccountHolderName`, `Language` (`et`/`en`/`ru`, default `et` — drives payslip language).

elnora-merit palk contacts add --data '{
  "PersonalCode": "39001011234",
  "Email": "mari@example.ee", "BankAccountNo": "EE471000001020145685",
  "BankAccountHolderName": "Mari Maasikas", "Language": "et"
}'

Read employees and agreements

elnora-merit palk employees list                                  # all (max 100)
elnora-m
Read more
@elnora-ai
Ships withmerit-aktiva-workspace

Do your Merit Aktiva accounting from the command line — or let Claude Code do it for you. Merit Aktiva is Estonia's cloud accounting platform.

1018 skills3 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
10
Star history of Elnora-AI/elnora-merit-aktiva on GitHub, a chart by star-history.com

Other skills on merit-aktiva-workspace.

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n10d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

browser-usetoday120k
@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about merit-palk-employees.

Which coding agents can use merit-palk-employees?
merit-palk-employees installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.