# Mzdy · API DameDokladu

> Operace ve skupině Mzdy.

Source: https://damedoklad.cz/docs/api-reference/payroll/

# Mzdy

Operace ve skupině Mzdy.

## Statutory employer liability insurance of a year (vyhláška 125/1993 Sb.), by quarter: what is raised, what would be raised, and why not yet. The decree has no advances and no annual settlement: each quarter stands on the previous quarter's bases

GET `/v1/payroll/accident-insurance`

Statutory employer liability insurance of a year (vyhláška 125/1993 Sb.), by quarter: what is raised, what would be raised, and why not yet. The decree has no advances and no annual settlement: each quarter stands on the previous quarter's bases

Nástroj MCP: `get-payroll-accident-insurance`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`year` integer povinné

`insurer` null | string povinné

`okec` null | string povinné

`ratePermille` null | number povinné

`quarters` object\[\] povinné

`quarter` integer | null povinné

`premium` any povinné

Null in every recorded response.

`preview` null | object povinné

`year` integer povinné

`quarter` integer | null povinné

`basis` string povinné

`baseHaler` integer | null povinné

`ratePermille` number povinné

`amountHaler` integer | null povinné

`minimumApplied` boolean povinné

`dueDate` null | string povinné date

`problems` string\[\] povinné

`totalHaler` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/accident-insurance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/accident-insurance', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/accident-insurance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Raise a quarter's premium as an Ostatní závazek to the insurer: MD 548 / D 325 in double entry, an expense when paid in the cash book. Goes on a payment order like any other payable. A company that moved here mid-year states the previous quarter's base

POST `/v1/payroll/accident-insurance`

Raise a quarter's premium as an Ostatní závazek to the insurer: MD 548 / D 325 in double entry, an expense when paid in the cash book. Goes on a payment order like any other payable. A company that moved here mid-year states the previous quarter's base

Nástroj MCP: `create-payroll-accident-premium`

### Tělo požadavku

`year` integer povinné min 2000 max 2100

`quarter` integer povinné min 1 max 4

`baseHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`issueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`year` integer povinné

`quarter` integer povinné

`insurer` string povinné

`basis` string povinné

`baseHaler` integer povinné

`ratePermille` number povinné

`amountHaler` integer povinné

`dueDate` string povinné date

`documentId` string povinné

`documentNumber` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/accident-insurance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "quarter": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/accident-insurance', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "quarter": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/accident-insurance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "quarter": 1
    },
)
data = response.json()
```

## Overview of a year's premiums as PDF. An employer must be able to prove what was paid and how it was worked out (§ 12 odst. 7 vyhlášky 125/1993 Sb.)

GET `/v1/payroll/accident-insurance.pdf`

Overview of a year's premiums as PDF. An employer must be able to prove what was paid and how it was worked out (§ 12 odst. 7 vyhlášky 125/1993 Sb.)

Nástroj MCP: `get-payroll-accident-insurance-pdf`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/accident-insurance.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/accident-insurance.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/accident-insurance.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Withdraw a raised premium, so a wrong quarter can be raised again: cancels its Ostatní závazek, which must not be paid

POST `/v1/payroll/accident-insurance/{id}/cancel`

Withdraw a raised premium, so a wrong quarter can be raised again: cancels its Ostatní závazek, which must not be paid

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `cancel-payroll-accident-premium`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/accident-insurance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/accident-insurance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/accident-insurance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Figures for the annual tax settlement (Vyúčtování daně) by month, from locked runs

GET `/v1/payroll/annual/tax`

Figures for the annual tax settlement (Vyúčtování daně) by month, from locked runs

Nástroj MCP: `get-payroll-annual-tax`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`year` integer povinné

`months` object\[\] povinné

`runId` null | string povinné

`month` integer | null povinné

`employeeCount` integer povinné

`taxableHaler` integer povinné

`advanceHaler` integer povinné

`bonusHaler` integer povinné

`advancePayableHaler` integer povinné

`withholdingTaxHaler` integer povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/tax \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/tax",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Working paper for the annual tax settlement as PDF. The EPO file is \`tax.xml\`

GET `/v1/payroll/annual/tax.pdf`

Working paper for the annual tax settlement as PDF. The EPO file is \`tax.xml\`

Nástroj MCP: `get-payroll-annual-tax-pdf`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/tax.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/tax.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Vyúčtování daně z příjmů ze závislé činnosti as EPO XML (DPZVD6 09.03.01) for a whole year, with Přílohy 1 to 4. Valid against the official XSD; the portal runs further checks. Refused from 2027, when the Vyúčtování is abolished. A dodatečné one is a separate operation

GET `/v1/payroll/annual/tax.xml`

Vyúčtování daně z příjmů ze závislé činnosti as EPO XML (DPZVD6 09.03.01) for a whole year, with Přílohy 1 to 4. Valid against the official XSD; the portal runs further checks. Refused from 2027, when the Vyúčtování is abolished. A dodatečné one is a separate operation

Nástroj MCP: `get-payroll-annual-tax-xml`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`type` "B" | "O"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/tax.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/tax.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Corrections of advances, tax, and bonuses under § 38i ZDP that go on Příloha 3 and 4 of the Vyúčtování

GET `/v1/payroll/annual/tax/corrections`

Corrections of advances, tax, and bonuses under § 38i ZDP that go on Příloha 3 and 4 of the Vyúčtování

Nástroj MCP: `list-payroll-tax-corrections`

### Parametry dotazu

`year` integer min 2000 max 2100

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_tax\_correction" povinné

`id` string povinné

`employeeId` null | string povinné

`subject` string povinné

`wrongYear` integer povinné

`wrongMonth` integer | null povinné

`dueDate` null | string povinné date

`correctedYear` integer povinné

`correctedMonth` integer povinné

`settledOn` null | string povinné date

`bonusRequestedOn` string | null povinné

`amountHaler` integer povinné

`note` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/tax/corrections \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/corrections', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/corrections",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record a correction under § 38i ZDP. A returned amount is negative, a debt positive, as the annex states it. It does not change a locked run or pay anything

POST `/v1/payroll/annual/tax/corrections`

Record a correction under § 38i ZDP. A returned amount is negative, a debt positive, as the annex states it. It does not change a locked run or pay anything

Nástroj MCP: `create-payroll-tax-correction`

### Tělo požadavku

`employeeId` string | null

ID of the employee.

`subject` "advance" | "tax" | "monthly\_bonus" | "settlement\_bonus" povinné

`wrongYear` integer povinné min 2000 max 2100

`wrongMonth` integer | null

`dueDate` string | null

Date as YYYY-MM-DD.

`correctedYear` integer povinné min 2000 max 2100

`correctedMonth` integer povinné min 1 max 12

`settledOn` string | null

Date as YYYY-MM-DD.

`bonusRequestedOn` string | null

Date as YYYY-MM-DD.

`amountHaler` integer povinné min -9007199254740991 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string | null

### Odpověď · 201

`id` string povinné

`employeeId` null | string povinné

`subject` string povinné

`wrongYear` integer povinné

`wrongMonth` integer | null povinné

`dueDate` null | string povinné date

`correctedYear` integer povinné

`correctedMonth` integer povinné

`settledOn` null | string povinné date

`bonusRequestedOn` string | null povinné

`amountHaler` integer povinné

`note` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/annual/tax/corrections \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "advance",
  "wrongYear": 2026,
  "correctedYear": 2026,
  "correctedMonth": 1,
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/corrections', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "subject": "advance",
    "wrongYear": 2026,
    "correctedYear": 2026,
    "correctedMonth": 1,
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/corrections",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "subject": "advance",
        "wrongYear": 2026,
        "correctedYear": 2026,
        "correctedMonth": 1,
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Change a recorded correction under § 38i ZDP

PATCH `/v1/payroll/annual/tax/corrections/{id}`

Change a recorded correction under § 38i ZDP

Nástroj MCP: `update-payroll-tax-correction`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`employeeId` string | null

ID of the employee.

`subject` "advance" | "tax" | "monthly\_bonus" | "settlement\_bonus"

`wrongYear` integer min 2000 max 2100

`wrongMonth` integer | null

`dueDate` string | null

Date as YYYY-MM-DD.

`correctedYear` integer min 2000 max 2100

`correctedMonth` integer min 1 max 12

`settledOn` string | null

Date as YYYY-MM-DD.

`bonusRequestedOn` string | null

Date as YYYY-MM-DD.

`amountHaler` integer min -9007199254740991 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`note` string | null

### Odpověď · 200

`id` string povinné

`employeeId` null | string povinné

`subject` string povinné

`wrongYear` integer povinné

`wrongMonth` integer | null povinné

`dueDate` null | string povinné date

`correctedYear` integer povinné

`correctedMonth` integer povinné

`settledOn` null | string povinné date

`bonusRequestedOn` string | null povinné

`amountHaler` integer povinné

`note` null | string povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "subject": "advance",
  "wrongYear": 2026
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "subject": "advance",
    "wrongYear": 2026
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "subject": "advance",
        "wrongYear": 2026
    },
)
data = response.json()
```

## Delete a recorded correction under § 38i ZDP

DELETE `/v1/payroll/annual/tax/corrections/{id}`

Delete a recorded correction under § 38i ZDP

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-tax-correction`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/corrections/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Recorded filings of the Vyúčtování for a year, with what each of them said

GET `/v1/payroll/annual/tax/filed`

Recorded filings of the Vyúčtování for a year, with what each of them said

Nástroj MCP: `list-payroll-annual-tax-filings`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_annual\_tax\_filing" povinné

`id` string povinné

`year` integer povinné

`type` string povinné

`submittedAt` null | string povinné date-time

`note` string | null povinné

`column9` integer\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/tax/filed \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/filed', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/filed",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record that a Vyúčtování was filed and keep what it said, so a dodatečné one can be compared to it. DameDoklad does not submit it for you

POST `/v1/payroll/annual/tax/filed`

Record that a Vyúčtování was filed and keep what it said, so a dodatečné one can be compared to it. DameDoklad does not submit it for you

Nástroj MCP: `record-payroll-annual-tax-filing`

### Tělo požadavku

`year` integer povinné min 2000 max 2100

`type` "B" | "O" | "D" | "E"

`filedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 201

`id` string povinné

`year` integer povinné

`type` string povinné

`submittedAt` null | string povinné date-time

`note` string | null povinné

`column9` integer\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/annual/tax/filed \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "filedOn": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/filed', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "filedOn": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/filed",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "filedOn": "2026-10-30"
    },
)
data = response.json()
```

## Dodatečné or dodatečné opravné Vyúčtování (§ 141 daňového řádu) as EPO XML: all months in full, sloupec 10 as the difference against what was filed, and the reasons. Needs a recorded filing of that year or the filed sloupec 9 by month

POST `/v1/payroll/annual/tax/supplementary.xml`

Dodatečné or dodatečné opravné Vyúčtování (§ 141 daňového řádu) as EPO XML: all months in full, sloupec 10 as the difference against what was filed, and the reasons. Needs a recorded filing of that year or the filed sloupec 9 by month

Nástroj MCP: `create-payroll-supplementary-tax-xml`

### Tělo požadavku

`year` integer povinné min 2000 max 2100

`type` "D" | "E"

`discoveredOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`reasons` string povinné max 5000 chars

`filedColumn9` integer\[\]

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/annual/tax/supplementary.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "discoveredOn": "2026-10-30",
  "reasons": "string"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/tax/supplementary.xml', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "discoveredOn": "2026-10-30",
    "reasons": "string"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/annual/tax/supplementary.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "discoveredOn": "2026-10-30",
        "reasons": "string"
    },
)
content = response.content
```

## Vyúčtování daně vybírané srážkou as EPO XML (DPSVD2 09.04.01) for income of natural persons in a whole year. Valid against the official XSD; the portal runs further checks

GET `/v1/payroll/annual/withholding.xml`

Vyúčtování daně vybírané srážkou as EPO XML (DPSVD2 09.04.01) for income of natural persons in a whole year. Valid against the official XSD; the portal runs further checks

Nástroj MCP: `get-payroll-annual-withholding-xml`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`type` "B" | "O"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/annual/withholding.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/annual/withholding.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/annual/withholding.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Get the attendance grid of a month: calendar with holidays and one row per contract, with hours and remaining vacation

GET `/v1/payroll/attendance`

Get the attendance grid of a month: calendar with holidays and one row per contract, with hours and remaining vacation

Nástroj MCP: `get-payroll-attendance`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`month` integer povinné min 1 max 12

### Odpověď · 200

`year` integer povinné

`month` integer | null povinné

`locked` boolean povinné

`fundDays` integer povinné

`calendar` object\[\] povinné

`day` integer povinné

`weekday` integer povinné

`isWeekend` boolean povinné

`holiday` null | string povinné

`rows` object\[\] povinné

`contractId` null | string povinné

`allocationMethod` string povinné

`employeeId` null | string povinné

`employeeName` string povinné

`type` string povinné

`position` null | string povinné

`wageType` string povinné

`scheduled` boolean povinné

`dailyMilli` integer povinné

`startDate` string povinné date

`endDate` string | null povinné

`days` object povinné

`workedHoursMilli` integer povinné

`extraShifts` integer povinné

`overtimeMilli` integer povinné

`nightMilli` integer povinné

`weekendMilli` integer povinné

`holidayWorkedMilli` integer povinné

`difficultMilli` integer povinné

`bonusHaler` integer povinné

`otherTaxableHaler` integer povinné

`otherExemptHaler` integer povinné

`allocation` any\[\] povinné

`note` string | null povinné

`summary` null | object povinné

`from` string povinné date

`to` string povinné date

`active` boolean povinné

`employedDays` integer povinné

`calendarDays` integer povinné

`fundFullMilli` integer povinné

`fundEmployedMilli` integer povinné

`workedMilli` integer povinné

`weekendWorkedMilli` integer povinné

`holidayWorkedMilli` integer povinné

`holidayMilli` integer povinné

`vacationMilli` integer povinné

`sickPaidMilli` integer povinné

`sickUnpaidMilli` integer povinné

`ocrMilli` integer povinné

`paidLeaveMilli` integer povinné

`unpaidLeaveMilli` integer povinné

`absentMilli` integer povinné

`obstacleMilli` integer povinné

`absenceInFundMilli` integer povinné

`sickDays` integer povinné

`ocrDays` integer povinné

`healthExcludedDays` integer povinné

`workedDays` integer povinné

`shifts` integer povinné

`sickStreakAtEnd` integer povinné

`vacationEntitlementMilli` integer povinné

`vacationUsedMilli` integer povinné

`earlierMonths` any\[\]

`tipsHaler` integer

`severanceHaler` integer

`damagesHaler` integer

`tipsExemptHaler` integer | null

```bash
curl https://api.damedoklad.cz/v1/payroll/attendance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/attendance', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/attendance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save a contract's attendance for a month: day codes (vacation, sick, ocr, paid\_leave, unpaid\_leave, ...), overtime, premiums, bonus

PUT `/v1/payroll/attendance/{contractId}/{year}/{month}`

Save a contract's attendance for a month: day codes (vacation, sick, ocr, paid\_leave, unpaid\_leave, ...), overtime, premiums, bonus

Nástroj MCP: `save-payroll-attendance`

### Parametry v cestě

`contractId` string povinné

ID of the contract. Find it with list-contracts.

`year` string povinné

`month` string povinné

### Tělo požadavku

`days` object

`workedHoursMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`extraShifts` integer min 0 max 62

`overtimeMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`nightMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`weekendMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`holidayWorkedMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`difficultMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`bonusHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`otherTaxableHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`otherExemptHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`severanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`damagesHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`tipsHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`tipsExemptHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`earlierMonths` object\[\]

`month` integer povinné min 1 max 11

`taxableHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`allocation` object\[\]

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`hoursMilli` integer povinné min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`note` string | null

### Odpověď · 200

`id` string povinné

`contractId` string povinné

`year` integer povinné

`month` integer povinné

`days` object povinné

`workedHoursMilli` integer povinné

`extraShifts` integer povinné

`overtimeMilli` integer povinné

`nightMilli` integer povinné

`weekendMilli` integer povinné

`holidayWorkedMilli` integer povinné

`difficultMilli` integer povinné

`bonusHaler` integer povinné

`otherTaxableHaler` integer povinné

`otherExemptHaler` integer povinné

`allocation` object\[\] povinné

`centerId` string | null povinné

`activityId` null | string povinné

`projectId` string | null povinné

`hoursMilli` integer povinné

`note` string | null povinné

`summary` null | object povinné

`from` string povinné date

`to` string povinné date

`active` boolean povinné

`employedDays` integer povinné

`calendarDays` integer povinné

`fundFullMilli` integer povinné

`fundEmployedMilli` integer povinné

`workedMilli` integer povinné

`weekendWorkedMilli` integer povinné

`holidayWorkedMilli` integer povinné

`holidayMilli` integer povinné

`vacationMilli` integer povinné

`sickPaidMilli` integer povinné

`sickUnpaidMilli` integer povinné

`ocrMilli` integer povinné

`paidLeaveMilli` integer povinné

`unpaidLeaveMilli` integer povinné

`absentMilli` integer povinné

`obstacleMilli` integer povinné

`absenceInFundMilli` integer povinné

`sickDays` integer povinné

`ocrDays` integer povinné

`healthExcludedDays` integer povinné

`workedDays` integer povinné

`shifts` integer povinné

`sickStreakAtEnd` integer povinné

`earlierMonths` object\[\]

`month` integer povinné

`taxableHaler` integer povinné

`tipsHaler` integer

`severanceHaler` integer

`damagesHaler` integer

`tipsExemptHaler` integer | null

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/attendance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "days": {},
  "workedHoursMilli": 1000,
  "extraShifts": 0
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/attendance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "days": {},
    "workedHoursMilli": 1000,
    "extraShifts": 0
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/attendance/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "days": {},
        "workedHoursMilli": 1000,
        "extraShifts": 0
    },
)
data = response.json()
```

## List requests for a tax bonus paid from own funds

GET `/v1/payroll/bonus-requests`

List requests for a tax bonus paid from own funds

Nástroj MCP: `list-payroll-bonus-requests`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Odpověď · 200

`data` any\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/bonus-requests \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record a request for a tax bonus paid from own funds. The amount then stops counting against later months' advances. Refused once the next month has already taken it off. You file the XML yourself

POST `/v1/payroll/bonus-requests`

Record a request for a tax bonus paid from own funds. The amount then stops counting against later months' advances. Refused once the next month has already taken it off. You file the XML yourself

Nástroj MCP: `create-payroll-bonus-request`

### Tělo požadavku

`kind` "monthly" | "settlement" povinné

`type` "regular" | "additional"

`year` integer povinné min 2000 max 2100

`month` integer min 1 max 12

`requestedHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`filedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`kind` string povinné

`type` string povinné

`year` integer povinné

`month` integer | null povinné

`totalHaler` integer povinné

`fromAdvancesHaler` integer povinné

`ownFundsHaler` integer povinné

`requestedHaler` integer povinné

`paidOn` null | string povinné date

`filedOn` string povinné date

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/bonus-requests \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "monthly",
  "year": 2026
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "monthly",
    "year": 2026
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "monthly",
        "year": 2026
    },
)
data = response.json()
```

## Remove a recorded request, so the amount counts against later advances again

DELETE `/v1/payroll/bonus-requests/{id}`

Remove a recorded request, so the amount counts against later advances again

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-bonus-request`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The request as a PDF working paper by the lines of forms 25 5241 and 25 5246. Not the printed form

GET `/v1/payroll/bonus-requests/{id}/request.pdf`

The request as a PDF working paper by the lines of forms 25 5241 and 25 5246. Not the printed form

Nástroj MCP: `get-payroll-bonus-request-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## The request as an EPO file: DPZMB1 for a month, DPZDB1 for a settlement. Valid against the published XSD. With keep=true the money stays for tax due (line d), otherwise it comes back to the company's default bank account. You file it: nothing goes to the portal from here

GET `/v1/payroll/bonus-requests/{id}/request.xml`

The request as an EPO file: DPZMB1 for a month, DPZDB1 for a settlement. Valid against the published XSD. With keep=true the money stays for tax due (line d), otherwise it comes back to the company's default bank account. You file it: nothing goes to the portal from here

Nástroj MCP: `get-payroll-bonus-request-xml`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`keep` "true" | "false"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/request.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## What a request for a tax bonus paid from own funds would say: for a month (§ 35d odst. 5 ZDP) or a settlement's doplatek (§ 35d odst. 9). Without a request the app takes the amount off later months' advances, until December

GET `/v1/payroll/bonus-requests/preview`

What a request for a tax bonus paid from own funds would say: for a month (§ 35d odst. 5 ZDP) or a settlement's doplatek (§ 35d odst. 9). Without a request the app takes the amount off later months' advances, until December

Nástroj MCP: `get-payroll-bonus-request-preview`

### Parametry dotazu

`kind` "monthly" | "settlement" povinné

`year` integer povinné min 2000 max 2100

`month` integer min 1 max 12

### Odpověď · 200

`kind` string povinné

`year` integer povinné

`month` integer | null povinné

`totalHaler` integer | null povinné

`fromAdvancesHaler` integer povinné

`ownFundsHaler` integer povinné

`paidOn` null | string povinné date

`problems` any\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/bonus-requests/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/bonus-requests/preview', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/bonus-requests/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Withdraw the newest amendment of a contract and put back what it changed. Refused when a locked run has used it or a later amendment stands on it

DELETE `/v1/payroll/contract-amendments/{id}`

Withdraw the newest amendment of a contract and put back what it changed. Refused when a locked run has used it or a later amendment stands on it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-contract-amendment`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## A recorded amendment as a PDF in Czech, with the values it replaced

GET `/v1/payroll/contract-amendments/{id}/amendment.pdf`

A recorded amendment as a PDF in Czech, with the values it replaced

Nástroj MCP: `get-payroll-contract-amendment-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contract-amendments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List employment contracts (HPP, DPČ, DPP). One person can hold several at once

GET `/v1/payroll/contracts`

List employment contracts (HPP, DPČ, DPP). One person can hold several at once

Nástroj MCP: `list-payroll-contracts`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`employeeId` string

ID of the employee.

`active` "true" | "false"

### Odpověď · 200

`data` object\[\] povinné

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create an employment contract: type, dates, wage, work time fund, vacation entitlement

POST `/v1/payroll/contracts`

Create an employment contract: type, dates, wage, work time fund, vacation entitlement

Nástroj MCP: `create-payroll-contract`

### Tělo požadavku

`employeeId` string povinné

ID of the employee.

`type` "hpp" | "dpc" | "dpp" povinné

`position` string | null

`qualification` string | null

`exposureNote` string | null

`signedOn` string | null

Date as YYYY-MM-DD.

`startDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`endDate` string | null

Date as YYYY-MM-DD.

`endReason` string | null

`wageType` "monthly" | "hourly"

`baseWageHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`hourlyRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`weeklyHoursMilli` integer min 0 max 168000

Integer thousandths: 1500 means 1.5.

`irregularSchedule` boolean

`vacationHoursMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`smallScope` boolean | null

`averageHourlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`mealAllowancePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployerPerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployeePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`idPpv` string | null

`iscoCode` string | null

`employmentStatusCode` string

`workModeCode` "1" | "2" | "3" | "4"

`workCity` string | null

`workMunicipalityCode` string | null

`registeredAt` string | null

`deregisteredAt` string | null

`deregistration` object | null

`noDataReason` "2" | "3" | null

`employmentKind` "1" | "2"

`endReasonCode` integer min 1 max 15

`averageNetMonthlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`severanceDue` boolean

`severancePaidInFull` boolean

`severanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`replacementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionFrom` string | null

Date as YYYY-MM-DD.

`pensionTo` string | null

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 201

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/contracts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "type": "hpp",
  "startDate": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "type": "hpp",
    "startDate": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/contracts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "type": "hpp",
        "startDate": "2026-10-30"
    },
)
data = response.json()
```

## Get an employment contract

GET `/v1/payroll/contracts/{id}`

Get an employment contract

Nástroj MCP: `get-payroll-contract`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Update an employment contract. Locked payroll runs keep the values they were calculated with

PATCH `/v1/payroll/contracts/{id}`

Update an employment contract. Locked payroll runs keep the values they were calculated with

Nástroj MCP: `update-payroll-contract`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`type` "hpp" | "dpc" | "dpp"

`position` string | null

`qualification` string | null

`exposureNote` string | null

`signedOn` string | null

Date as YYYY-MM-DD.

`startDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`endDate` string | null

Date as YYYY-MM-DD.

`endReason` string | null

`wageType` "monthly" | "hourly"

`baseWageHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`hourlyRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`weeklyHoursMilli` integer min 0 max 168000

Integer thousandths: 1500 means 1.5.

`irregularSchedule` boolean

`vacationHoursMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`smallScope` boolean | null

`averageHourlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`mealAllowancePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployerPerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployeePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`idPpv` string | null

`iscoCode` string | null

`employmentStatusCode` string

`workModeCode` "1" | "2" | "3" | "4"

`workCity` string | null

`workMunicipalityCode` string | null

`registeredAt` string | null

`deregisteredAt` string | null

`deregistration` object | null

`noDataReason` "2" | "3" | null

`employmentKind` "1" | "2"

`endReasonCode` integer min 1 max 15

`averageNetMonthlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`severanceDue` boolean

`severancePaidInFull` boolean

`severanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`replacementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionFrom` string | null

Date as YYYY-MM-DD.

`pensionTo` string | null

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "hpp",
  "position": "string",
  "qualification": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "type": "hpp",
    "position": "string",
    "qualification": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "type": "hpp",
        "position": "string",
        "qualification": "string"
    },
)
data = response.json()
```

## Delete a contract that has never been paid

DELETE `/v1/payroll/contracts/{id}`

Delete a contract that has never been paid

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-contract`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## How a contract's wage is split across cost centers, activities, and projects

GET `/v1/payroll/contracts/{id}/allocation`

How a contract's wage is split across cost centers, activities, and projects

Nástroj MCP: `get-payroll-cost-allocation`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`contractId` string povinné

`method` null | string povinné

`rows` object\[\] povinné

`id` string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` null | string povinné

`shareBp` integer povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Split a contract's wage: fixed percentages that add up to 100 %, hours from each month's attendance, or the contract's own dimensions

PUT `/v1/payroll/contracts/{id}/allocation`

Split a contract's wage: fixed percentages that add up to 100 %, hours from each month's attendance, or the contract's own dimensions

Nástroj MCP: `replace-payroll-cost-allocation`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`method` "default" | "fixed" | "attendance" povinné

`rows` object\[\]

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`shareBp` integer povinné min 1 max 10000

### Odpověď · 200

`contractId` string povinné

`method` null | string povinné

`rows` object\[\] povinné

`id` string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` null | string povinné

`shareBp` integer povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "method": "default"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "method": "default"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/allocation",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "method": "default"
    },
)
data = response.json()
```

## Amendment to a contract as a PDF template in Czech (§ 40 of the Labour Code): what changes and from when. This paper alone changes nothing in the app: POST /payroll/contracts/:id/amendments records it on the contract

GET `/v1/payroll/contracts/{id}/amendment.pdf`

Amendment to a contract as a PDF template in Czech (§ 40 of the Labour Code): what changes and from when. This paper alone changes nothing in the app: POST /payroll/contracts/:id/amendments records it on the contract

Nástroj MCP: `get-payroll-amendment-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`effectiveFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`position` string max 200 chars

`workCity` string max 200 chars

`baseWageHaler` integer max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`hourlyRateHaler` integer max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`weeklyHoursMilli` integer max 60000

Integer thousandths: 1500 means 1.5.

`endDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendment.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Amendments recorded on a contract, newest first

GET `/v1/payroll/contracts/{id}/amendments`

Amendments recorded on a contract, newest first

Nástroj MCP: `list-payroll-contract-amendments`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_contract\_amendment" povinné

`id` string povinné

`contractId` string povinné

`effectiveFrom` string povinné date

`signedOn` null | string povinné date

`changes` object povinné

`position` null | string

`baseWageHaler` integer

`workCity` null | string

`before` object povinné

`position` null | string

`baseWageHaler` integer

`workCity` null | string

`status` string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record an amendment (§ 40 of the Labour Code) and change the contract: at once when it is due, otherwise on its date. Runs of earlier months keep the old values. A change of wage or hours may start on any day: that month is paid pro rata, each part by the wage and hours it had. A locked run from that date on blocks it

POST `/v1/payroll/contracts/{id}/amendments`

Record an amendment (§ 40 of the Labour Code) and change the contract: at once when it is due, otherwise on its date. Runs of earlier months keep the old values. A change of wage or hours may start on any day: that month is paid pro rata, each part by the wage and hours it had. A locked run from that date on blocks it

Nástroj MCP: `create-payroll-contract-amendment`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`effectiveFrom` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`signedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`position` string max 200 chars

`workCity` string max 200 chars

`baseWageHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`hourlyRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`weeklyHoursMilli` integer max 60000

Integer thousandths: 1500 means 1.5.

`endDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`contractId` string povinné

`effectiveFrom` string povinné date

`signedOn` null | string povinné date

`changes` object povinné

`position` null | string

`baseWageHaler` integer

`workCity` null | string

`before` object povinné

`position` null | string

`baseWageHaler` integer

`workCity` null | string

`status` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "effectiveFrom": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "effectiveFrom": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/amendments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "effectiveFrom": "2026-10-30"
    },
)
data = response.json()
```

## Employment contract, or the DPP or DPČ agreement, as a PDF template in Czech with what § 34, § 37, § 75, § 76 and § 77a of the Labour Code require. A probation period up to 4 months, 8 for a manager (§ 35)

GET `/v1/payroll/contracts/{id}/contract.pdf`

Employment contract, or the DPP or DPČ agreement, as a PDF template in Czech with what § 34, § 37, § 75, § 76 and § 77a of the Labour Code require. A probation period up to 4 months, 8 for a manager (§ 35)

Nástroj MCP: `get-payroll-contract-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`probationMonths` integer min 1 max 8

`managerial` "true" | "false"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/contract.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/contract.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/contract.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## What is still missing before the přihláška or odhláška of a contract can be exported

GET `/v1/payroll/contracts/{id}/registration`

What is still missing before the přihláška or odhláška of a contract can be exported

Nástroj MCP: `check-payroll-registration`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`action` "start" | "end" povinné

`schemaVersion` "1.4" | "1.5"

### Odpověď · 200

`action` string povinné

`averageNetHaler` integer | null povinné

`problems` string\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Přihláška or odhláška of an employee as PDF

GET `/v1/payroll/contracts/{id}/registration.pdf`

Přihláška or odhláška of an employee as PDF

Nástroj MCP: `get-payroll-registration-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`action` "start" | "end" povinné

`schemaVersion` "1.4" | "1.5"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Export a přihláška (start) or odhláška (end) of an employee as XML, which replaced the ONZ form from April 2026: REGZEC 1.4.0.4, or REGZEC27 1.5 from 1 January 2027 or when asked for by \`schemaVersion\`. An odhláška carries the data for unemployment support

GET `/v1/payroll/contracts/{id}/registration.xml`

Export a přihláška (start) or odhláška (end) of an employee as XML, which replaced the ONZ form from April 2026: REGZEC 1.4.0.4, or REGZEC27 1.5 from 1 January 2027 or when asked for by \`schemaVersion\`. An odhláška carries the data for unemployment support

Nástroj MCP: `get-payroll-registration-xml`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`action` "start" | "end" povinné

`schemaVersion` "1.4" | "1.5"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/registration.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Potvrzení o zaměstnání, the zápočtový list, as a PDF in Czech with the points of § 313 odst. 1 of the Labour Code, for a job that has ended

GET `/v1/payroll/contracts/{id}/service-confirmation.pdf`

Potvrzení o zaměstnání, the zápočtový list, as a PDF in Czech with the points of § 313 odst. 1 of the Labour Code, for a job that has ended

Nástroj MCP: `get-payroll-service-confirmation-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/service-confirmation.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/service-confirmation.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/service-confirmation.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## NEMPRI25: the employer's attachment to a benefit claim for any of the six kinds (NEM, OSE, VPM, PPM, OPP, DLO), with the reckoning period from locked runs. Valid against the official XSD; ČSSZ's logical checks are partly reproduced

POST `/v1/payroll/contracts/{id}/sick-benefit.xml`

NEMPRI25: the employer's attachment to a benefit claim for any of the six kinds (NEM, OSE, VPM, PPM, OPP, DLO), with the reckoning period from locked runs. Valid against the official XSD; ČSSZ's logical checks are partly reproduced

Nástroj MCP: `create-payroll-sick-benefit-xml`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "NEM" | "OSE" | "VPM" | "PPM" | "OPP" | "DLO" povinné

`eventDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`decisionNumber` string max 18 chars

`correction` boolean

`probableIncomeHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`detail` object povinné

`worked` boolean

`workedHours` number min 0 max 24

`scheduleHours` number min 0 max 24

`smallScopeIncome` integer min 0 max 9007199254740991

`student` boolean

`holidays` boolean

`pensioner` boolean

`pensionType` "A" | "B" | "C" | "I1" | "I3" | "S"

`firstJobLeave` boolean

`unpaidLeave` boolean

`unpaidLeaveFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`unpaidLeaveTo` string YYYY-MM-DD

Date as YYYY-MM-DD.

`transferred` boolean

`transferredOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`startsMaternity` boolean

`childBirthDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`attachment` boolean

`insolvency` boolean

`stage` "start" | "continues" | "end"

`payment` object

`lastDayScheduleHours` number min 0 max 24

`lastDayWorkedHours` number min 0 max 24

`plannedShifts` boolean

`plannedShiftsWorked` boolean

`returnedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`workedDays` object\[\]

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`leave` boolean

`leaveDays` object\[\]

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`claim` object

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`person` object

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`takeoverReason` "DOH" | "ONE" | "ROZ" | "UMR"

`children` object\[\]

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`paternityReason` "OTC" | "ZEM" | "PEC"

`child` object

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`relationCode` string

`alternating` boolean

`caredPersonally` boolean

`caredDays` object\[\]

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`reason` "ill" | "quarantine" | "carer\_unable" | "school\_closed"

`schoolName` string | null

`schoolIco` string

Czech company number (IČO), 8 digits.

`sameHousehold` boolean

`singleParent` boolean

`caresForChildUnder16` boolean

`maternityByOther` boolean

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/sick-benefit.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "NEM",
  "eventDate": "2026-10-30",
  "detail": {
    "worked": false,
    "workedHours": 0,
    "scheduleHours": 0
  }
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/sick-benefit.xml', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "NEM",
    "eventDate": "2026-10-30",
    "detail": {
      "worked": false,
      "workedHours": 0,
      "scheduleHours": 0
    }
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/sick-benefit.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "NEM",
        "eventDate": "2026-10-30",
        "detail": {
            "worked": False,
            "workedHours": 0,
            "scheduleHours": 0
        }
    },
)
content = response.content
```

## Confirmation for the Úřad práce (§ 313 odst. 2 of the Labour Code) as a PDF with the data of its form S 15: the job, the average monthly net earnings by § 356 odst. 3, and how it ended

GET `/v1/payroll/contracts/{id}/unemployment-confirmation.pdf`

Confirmation for the Úřad práce (§ 313 odst. 2 of the Labour Code) as a PDF with the data of its form S 15: the job, the average monthly net earnings by § 356 odst. 3, and how it ended

Nástroj MCP: `get-payroll-unemployment-confirmation-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`reason` "serious\_breach" | "sick\_regime" | "organizational" | "health" | "employer\_breach" | "employee" | "agreement"

`reasonText` string max 200 chars

`averageNetMonthlyHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unemployment-confirmation.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unemployment-confirmation.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unemployment-confirmation.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Mzdový výměr as a PDF in Czech (§ 113 odst. 4 of the Labour Code): how the employee is paid, when, and where

GET `/v1/payroll/contracts/{id}/wage-notice.pdf`

Mzdový výměr as a PDF in Czech (§ 113 odst. 4 of the Labour Code): how the employee is paid, when, and where

Nástroj MCP: `get-payroll-wage-notice-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`validFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/wage-notice.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/wage-notice.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/contracts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/wage-notice.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List tax declaration changes handed in by employees, newest first

GET `/v1/payroll/declaration-changes`

List tax declaration changes handed in by employees, newest first

Nástroj MCP: `list-payroll-declaration-changes`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "pending" | "approved" | "rejected"

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_declaration\_change" povinné

`id` string povinné

`employeeId` string povinné

`employeeName` string

`status` string povinné

`submittedAt` string povinné date-time

`decidedAt` null | string povinné date-time

`decisionNote` null | string povinné

`change` object povinné

`ztpp` boolean

`addChildren` object\[\]

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` string

`birthDate` null | string povinné date

`birthNumberMasked` null | string

`requestSettlementYear` integer

`disability` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/declaration-changes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/declaration-changes', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/declaration-changes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Apply a declaration change to the personal card. A child counts from the month after the change was handed in, a newborn from the month of birth (§ 38k ZDP). A request for the annual settlement starts one

POST `/v1/payroll/declaration-changes/{id}/approve`

Apply a declaration change to the personal card. A child counts from the month after the change was handed in, a newborn from the month of birth (§ 38k ZDP). A request for the annual settlement starts one

Nástroj MCP: `approve-payroll-declaration-change`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`note` string | null

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string

`status` string povinné

`submittedAt` string povinné date-time

`decidedAt` null | string povinné date-time

`decisionNote` null | string povinné

`change` object povinné

`ztpp` boolean

`addChildren` object\[\]

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` string

`birthDate` null | string povinné date

`birthNumberMasked` null | string

`requestSettlementYear` integer

`disability` string

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "note": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "note": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "note": "string"
    },
)
data = response.json()
```

## Turn down a declaration change. Nothing on the personal card changes

POST `/v1/payroll/declaration-changes/{id}/reject`

Turn down a declaration change. Nothing on the personal card changes

Nástroj MCP: `reject-payroll-declaration-change`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`note` string | null

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string

`status` string povinné

`submittedAt` string povinné date-time

`decidedAt` null | string povinné date-time

`decisionNote` null | string povinné

`change` object povinné

`ztpp` boolean

`addChildren` object\[\]

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` string

`birthDate` null | string povinné date

`birthNumberMasked` null | string

`requestSettlementYear` integer

`disability` string

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "note": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "note": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/declaration-changes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reject",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "note": "string"
    },
)
data = response.json()
```

## List wage deductions: attachments of earnings, agreements, advances

GET `/v1/payroll/deductions`

List wage deductions: attachments of earnings, agreements, advances

Nástroj MCP: `list-payroll-deductions`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`employeeId` string

ID of the employee.

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_deduction" povinné

`id` string povinné

`employeeId` string povinné

`kind` string povinné

`name` string povinné

`amountHaler` integer povinné

`remainingHaler` integer | null povinné

`receivedOn` null | string povinné date

`accountNumber` null | string povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`isActive` boolean povinné

`note` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/deductions \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/deductions', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/deductions",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a wage deduction. Attachments are limited by the protected amount each month

POST `/v1/payroll/deductions`

Add a wage deduction. Attachments are limited by the protected amount each month

Nástroj MCP: `create-payroll-deduction`

### Tělo požadavku

`employeeId` string povinné

ID of the employee.

`kind` "attachment\_priority" | "attachment\_other" | "agreement" | "advance" | "other" povinné

`name` string povinné max 200 chars

`amountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`remainingHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`receivedOn` string | null

Date as YYYY-MM-DD.

`accountNumber` string | null

Account number from the chart of accounts, for example 311. list-accounts lists them.

`variableSymbol` string | null

`specificSymbol` string | null

`isActive` boolean

`note` string | null

### Odpověď · 201

`id` string povinné

`employeeId` string povinné

`kind` string povinné

`name` string povinné

`amountHaler` integer povinné

`remainingHaler` integer | null povinné

`receivedOn` null | string povinné date

`accountNumber` null | string povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`isActive` boolean povinné

`note` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/deductions \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "attachment_priority",
  "name": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/deductions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "kind": "attachment_priority",
    "name": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/deductions",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "attachment_priority",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Update a wage deduction

PATCH `/v1/payroll/deductions/{id}`

Update a wage deduction

Nástroj MCP: `update-payroll-deduction`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "attachment\_priority" | "attachment\_other" | "agreement" | "advance" | "other"

`name` string max 200 chars

`amountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`remainingHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`receivedOn` string | null

Date as YYYY-MM-DD.

`accountNumber` string | null

Account number from the chart of accounts, for example 311. list-accounts lists them.

`variableSymbol` string | null

`specificSymbol` string | null

`isActive` boolean

`note` string | null

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`kind` string povinné

`name` string povinné

`amountHaler` integer povinné

`remainingHaler` integer | null povinné

`receivedOn` null | string povinné date

`accountNumber` null | string povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`isActive` boolean povinné

`note` null | string povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "attachment_priority",
  "name": "Pekárna U Lípy s.r.o.",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "attachment_priority",
    "name": "Pekárna U Lípy s.r.o.",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "attachment_priority",
        "name": "Pekárna U Lípy s.r.o.",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Delete a wage deduction

DELETE `/v1/payroll/deductions/{id}`

Delete a wage deduction

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-deduction`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/deductions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The wording of the personnel documents this company can change, with the default of each passage and what each has to keep. Rows the law requires are written by the app and are not here

GET `/v1/payroll/document-templates`

The wording of the personnel documents this company can change, with the default of each passage and what each has to keep. Rows the law requires are written by the app and are not here

Nástroj MCP: `list-payroll-document-templates`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_document\_template" povinné

`kind` string povinné

`label` null | string povinné

`customized` boolean povinné

`placeholders` string\[\] povinné

`blocks` object\[\] povinné

`key` string povinné

`label` null | string povinné

`defaultText` string povinné

`text` string povinné

`placeholders` string\[\] povinné

`mentions` string\[\] povinné

`extraSections` object\[\] povinné

`text` string povinné

`heading` string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/document-templates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/document-templates', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/document-templates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save a company's wording of one document and its own extra sections. Refused with the reasons when a passage drops what it has to keep, is empty, or names a figure the app does not know

PUT `/v1/payroll/document-templates/{kind}`

Save a company's wording of one document and its own extra sections. Refused with the reasons when a passage drops what it has to keep, is empty, or names a figure the app does not know

Nástroj MCP: `save-payroll-document-template`

### Parametry v cestě

`kind` string povinné

### Tělo požadavku

`blocks` object

`extraSections` object\[\]

`heading` string povinné max 200 chars

`text` string povinné max 4000 chars

### Odpověď · 200

`kind` string povinné

`label` null | string povinné

`customized` boolean povinné

`placeholders` string\[\] povinné

`blocks` object\[\] povinné

`key` string povinné

`label` null | string povinné

`defaultText` string povinné

`text` string povinné

`placeholders` string\[\] povinné

`mentions` string\[\] povinné

`extraSections` object\[\] povinné

`text` string povinné

`heading` string povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "blocks": {},
  "extraSections": [
    {
      "heading": "string",
      "text": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "blocks": {},
    "extraSections": [
      {
        "heading": "string",
        "text": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "blocks": {},
        "extraSections": [
            {
                "heading": "string",
                "text": "string"
            }
        ]
    },
)
data = response.json()
```

## Go back to the app's wording of one document

DELETE `/v1/payroll/document-templates/{kind}`

Go back to the app's wording of one document

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `reset-payroll-document-template`

### Parametry v cestě

`kind` string povinné

### Odpověď · 200

`kind` string povinné

`label` null | string povinné

`customized` boolean povinné

`placeholders` string\[\] povinné

`blocks` object\[\] povinné

`key` string povinné

`label` null | string povinné

`defaultText` string povinné

`text` string povinné

`placeholders` string\[\] povinné

`mentions` string\[\] povinné

`extraSections` object\[\] povinné

`text` string povinné

`heading` string povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/document-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: zaměstnanec, mzdy

GET `/v1/payroll/employees`

List employees. Rodné číslo and bank account are masked here

Nástroj MCP: `list-payroll-employees`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`status` "active" | "inactive"

### Odpověď · 200

`data` object\[\] povinné

`object` "employee" povinné

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: zaměstnanec, mzdy

POST `/v1/payroll/employees`

Create an employee. Rodné číslo is validated and stored encrypted

Nástroj MCP: `create-payroll-employee`

### Tělo požadavku

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`title` string | null

`birthName` string | null

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`birthPlace` string | null

`gender` "male" | "female" | null

`citizenship` string 2 chars

`street` string | null

`houseNumber` string | null

`orientationNumber` string | null

`city` string | null

`postalCode` string | null

`country` string 2 chars

`email` string | null

`phone` string | null

`bankAccount` string | null

`healthInsurerCode` "111" | "201" | "205" | "207" | "209" | "211" | "213" | null

`disability` "none" | "first\_second" | "third"

`ztpp` boolean

`ztp` boolean

`pensioner` boolean

`pensionerDiscountFrom` string | null

Date as YYYY-MM-DD.

`student` boolean

`studentUntil` string | null

`childrenOtherPerson` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`stateInsured` boolean

`selfEmployedMinimum` boolean

`otherEmployerMinimum` boolean

`employerDiscountGroup` "age55" | "parent\_under10" | "carer" | "student\_under26" | "retraining" | "disabled" | "under21" | null

`employerDiscountNotified` boolean

`hasDeclaration` boolean

`declarationSignedOn` string | null

Date as YYYY-MM-DD.

`dependents` integer min 0 max 20

`ikMpsv` string | null

`educationCode` string | null

`studentCredit` boolean

`doctoralStudent` boolean

`taxNonResident` boolean

`foreignTaxId` string | null

ID of the foreign tax.

`foreignTaxIdType` "R" | "D" | "S" | "J" | null

`identityDocumentNumber` string | null

`identityDocumentType` "I" | "P" | "D" | "O" | null

`identityDocumentCountry` string | null

`status` "active" | "inactive"

`note` string | null

`children` object\[\]

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`claimFrom` string | null

Date as YYYY-MM-DD.

`claimTo` string | null

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "Pekárna U Lípy s.r.o.",
  "lastName": "Pekárna U Lípy s.r.o."
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "firstName": "Pekárna U Lípy s.r.o.",
    "lastName": "Pekárna U Lípy s.r.o."
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "firstName": "Pekárna U Lípy s.r.o.",
        "lastName": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Detail: zaměstnanec, mzdy

GET `/v1/payroll/employees/{id}`

Get the personal card of an employee, with the full rodné číslo, bank account, children, and contracts

Nástroj MCP: `get-payroll-employee`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: zaměstnanec, mzdy

PATCH `/v1/payroll/employees/{id}`

Update the personal card of an employee

Nástroj MCP: `update-payroll-employee`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`firstName` string max 200 chars

`lastName` string max 200 chars

`title` string | null

`birthName` string | null

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`birthPlace` string | null

`gender` "male" | "female" | null

`citizenship` string 2 chars

`street` string | null

`houseNumber` string | null

`orientationNumber` string | null

`city` string | null

`postalCode` string | null

`country` string 2 chars

`email` string | null

`phone` string | null

`bankAccount` string | null

`healthInsurerCode` "111" | "201" | "205" | "207" | "209" | "211" | "213" | null

`disability` "none" | "first\_second" | "third"

`ztpp` boolean

`ztp` boolean

`pensioner` boolean

`pensionerDiscountFrom` string | null

Date as YYYY-MM-DD.

`student` boolean

`studentUntil` string | null

`childrenOtherPerson` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`stateInsured` boolean

`selfEmployedMinimum` boolean

`otherEmployerMinimum` boolean

`employerDiscountGroup` "age55" | "parent\_under10" | "carer" | "student\_under26" | "retraining" | "disabled" | "under21" | null

`employerDiscountNotified` boolean

`hasDeclaration` boolean

`declarationSignedOn` string | null

Date as YYYY-MM-DD.

`dependents` integer min 0 max 20

`ikMpsv` string | null

`educationCode` string | null

`studentCredit` boolean

`doctoralStudent` boolean

`taxNonResident` boolean

`foreignTaxId` string | null

ID of the foreign tax.

`foreignTaxIdType` "R" | "D" | "S" | "J" | null

`identityDocumentNumber` string | null

`identityDocumentType` "I" | "P" | "D" | "O" | null

`identityDocumentCountry` string | null

`status` "active" | "inactive"

`note` string | null

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "Pekárna U Lípy s.r.o.",
  "lastName": "Pekárna U Lípy s.r.o.",
  "title": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "firstName": "Pekárna U Lípy s.r.o.",
    "lastName": "Pekárna U Lípy s.r.o.",
    "title": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "firstName": "Pekárna U Lípy s.r.o.",
        "lastName": "Pekárna U Lípy s.r.o.",
        "title": "string"
    },
)
data = response.json()
```

## Smazání: zaměstnanec, mzdy

DELETE `/v1/payroll/employees/{id}`

Delete an employee who has never been paid. Anyone with payroll history must be kept for the statutory period

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-employee`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Replace the list of children claimed for the tax credit. Order sets first, second, third child

PUT `/v1/payroll/employees/{id}/children`

Replace the list of children claimed for the tax credit. Order sets first, second, third child

Nástroj MCP: `replace-payroll-employee-children`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`children` object\[\] povinné

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`claimFrom` string | null

Date as YYYY-MM-DD.

`claimTo` string | null

Date as YYYY-MM-DD.

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/children \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "children": [
    {
      "firstName": "Pekárna U Lípy s.r.o.",
      "lastName": "Pekárna U Lípy s.r.o."
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/children', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "children": [
      {
        "firstName": "Pekárna U Lípy s.r.o.",
        "lastName": "Pekárna U Lípy s.r.o."
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/children",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "children": [
            {
                "firstName": "Pekárna U Lípy s.r.o.",
                "lastName": "Pekárna U Lípy s.r.o."
            }
        ]
    },
)
data = response.json()
```

## OZUSPOJ23: the notice of intent to apply the employer discount on social insurance (§ 7b zák. 589/1992 Sb.), for one employee. Valid against the official XSD

GET `/v1/payroll/employees/{id}/discount-notice.xml`

OZUSPOJ23: the notice of intent to apply the employer discount on social insurance (§ 7b zák. 589/1992 Sb.), for one employee. Valid against the official XSD

Nástroj MCP: `get-payroll-discount-notice-xml`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`action` "start" | "end" | "cancel" povinné

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discount-notice.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discount-notice.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/discount-notice.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Evidenční list důchodového pojištění of an employee for a year, as PDF

GET `/v1/payroll/employees/{id}/eldp.pdf`

Evidenční list důchodového pojištění of an employee for a year, as PDF

Nástroj MCP: `get-payroll-eldp-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/eldp.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/eldp.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/eldp.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Potvrzení o zdanitelných příjmech of an employee for a year, as PDF

GET `/v1/payroll/employees/{id}/income-confirmation.pdf`

Potvrzení o zdanitelných příjmech of an employee for a year, as PDF

Nástroj MCP: `get-payroll-income-confirmation-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/income-confirmation.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/income-confirmation.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/income-confirmation.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Record that the wage goes to a protected account (chráněný účet, § 304c to § 304e OSŘ): the bank account the confirmation names as its source. From then on a run pays this wage from that account

POST `/v1/payroll/employees/{id}/protected-account`

Record that the wage goes to a protected account (chráněný účet, § 304c to § 304e OSŘ): the bank account the confirmation names as its source. From then on a run pays this wage from that account

Nástroj MCP: `set-payroll-protected-account`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`bankAccountId` string povinné

ID of the bank account. Find it with list-bank-accounts.

`confirmedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## The data for the confirmation of a protected account (§ 304d odst. 1 OSŘ) as a PDF working paper. The law wants the ministry's own form, so this is not it

GET `/v1/payroll/employees/{id}/protected-account.pdf`

The data for the confirmation of a protected account (§ 304d odst. 1 OSŘ) as a PDF working paper. The law wants the ministry's own form, so this is not it

Nástroj MCP: `get-payroll-protected-account-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## The employee brought the bank's confirmation that the account is no longer protected (§ 304e odst. 2 OSŘ): the wage is free to leave from any account again

POST `/v1/payroll/employees/{id}/protected-account/end`

The employee brought the bank's confirmation that the account is no longer protected (§ 304e odst. 2 OSŘ): the wage is free to leave from any account again

Nástroj MCP: `clear-payroll-protected-account`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account/end \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account/end', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protected-account/end",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Evidenční list zaměstnance (personal record) as PDF

GET `/v1/payroll/employees/{id}/record.pdf`

Evidenční list zaměstnance (personal record) as PDF

Nástroj MCP: `get-payroll-employee-record-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/record.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/record.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/record.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List an employee's links with their audit trail. The URL itself cannot be read again

GET `/v1/payroll/employees/{id}/self-service-links`

List an employee's links with their audit trail. The URL itself cannot be read again

Nástroj MCP: `list-payroll-self-service-links`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_self\_service\_link" povinné

`id` string povinné

`employeeId` string povinné

`scopes` string\[\] povinné

`expiresAt` string povinné date-time

`revokedAt` null | string povinné date-time

`lastUsedAt` null | string povinné date-time

`createdAt` string povinné date-time

`active` boolean povinné

`url` string

`sent` boolean

`events` object\[\]

`action` string povinné

`subjectId` null | string povinné

`at` string povinné date-time

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a link an employee opens without logging in to download payslips and hand in tax declaration changes. The URL is returned once and can be e-mailed

POST `/v1/payroll/employees/{id}/self-service-links`

Create a link an employee opens without logging in to download payslips and hand in tax declaration changes. The URL is returned once and can be e-mailed

Nástroj MCP: `create-payroll-self-service-link`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`scopes` "payslips" | "declaration"\[\]

`expiresInDays` integer min 1 max 90

`send` boolean

### Odpověď · 201

`id` string povinné

`employeeId` string povinné

`scopes` string\[\] povinné

`expiresAt` string povinné date-time

`revokedAt` null | string povinné date-time

`lastUsedAt` null | string povinné date-time

`createdAt` string povinné date-time

`active` boolean povinné

`url` string

`sent` boolean

`events` object\[\]

`action` string povinné

`subjectId` null | string povinné

`at` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "scopes": [
    "payslips"
  ],
  "expiresInDays": 1,
  "send": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "scopes": [
      "payslips"
    ],
    "expiresInDays": 1,
    "send": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/self-service-links",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "scopes": [
            "payslips"
        ],
        "expiresInDays": 1,
        "send": False
    },
)
data = response.json()
```

## Import: zaměstnanec, mzdy

POST `/v1/payroll/employees/import`

Import employees from XLSX for a company coming from POHODA, which does not export them to XML: cards and contracts, and on further sheets children, deductions, attendance and wages of past months. A second row with the same person adds a contract. dryRun only validates. Past months go where past months count: the annual social cap, average earnings, the year-end settlement, ELDP and the income confirmation. They post nothing and are not paid. A month that already has a run here is refused, so nothing counts twice.

Nástroj MCP: `import-payroll-employees`

### Tělo požadavku

`fileBase64` string povinné max 40000000 chars

File content encoded as base64.

`dryRun` boolean

### Odpověď · 200

`dryRun` boolean povinné

`employees` integer povinné

`contracts` integer povinné

`importedEmployees` integer povinné

`importedContracts` integer povinné

`errors` object\[\] povinné

`line` integer povinné

`message` null | string povinné

`name` null | string povinné

`preview` object\[\] povinné

`name` null | string povinné

`existing` boolean povinné

`contracts` object\[\] povinné

`type` string povinné

`position` null | string povinné

`startDate` string povinné date

`children` integer

`deductions` integer

`attendanceMonths` integer

`wageMonths` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees/import \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "fileBase64": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/import', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "fileBase64": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees/import",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "fileBase64": "string"
    },
)
data = response.json()
```

## Download the XLSX template for importing employees and contracts, with an example row

GET `/v1/payroll/employees/import-template.xlsx`

Download the XLSX template for importing employees and contracts, with an example row

Nástroj MCP: `download-payroll-employee-import-template`

### Odpověď · 200

Vrací soubor application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.

```bash
curl https://api.damedoklad.cz/v1/payroll/employees/import-template.xlsx \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/import-template.xlsx', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/employees/import-template.xlsx",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Onboard a new hire in one step: personal card, children, and the first contract

POST `/v1/payroll/employees/onboard`

Onboard a new hire in one step: personal card, children, and the first contract

Nástroj MCP: `onboard-payroll-employee`

### Tělo požadavku

`employee` object povinné

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`title` string | null

`birthName` string | null

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`birthPlace` string | null

`gender` "male" | "female" | null

`citizenship` string 2 chars

`street` string | null

`houseNumber` string | null

`orientationNumber` string | null

`city` string | null

`postalCode` string | null

`country` string 2 chars

`email` string | null

`phone` string | null

`bankAccount` string | null

`healthInsurerCode` "111" | "201" | "205" | "207" | "209" | "211" | "213" | null

`disability` "none" | "first\_second" | "third"

`ztpp` boolean

`ztp` boolean

`pensioner` boolean

`pensionerDiscountFrom` string | null

Date as YYYY-MM-DD.

`student` boolean

`studentUntil` string | null

`childrenOtherPerson` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`stateInsured` boolean

`selfEmployedMinimum` boolean

`otherEmployerMinimum` boolean

`employerDiscountGroup` "age55" | "parent\_under10" | "carer" | "student\_under26" | "retraining" | "disabled" | "under21" | null

`employerDiscountNotified` boolean

`hasDeclaration` boolean

`declarationSignedOn` string | null

Date as YYYY-MM-DD.

`dependents` integer min 0 max 20

`ikMpsv` string | null

`educationCode` string | null

`studentCredit` boolean

`doctoralStudent` boolean

`taxNonResident` boolean

`foreignTaxId` string | null

ID of the foreign tax.

`foreignTaxIdType` "R" | "D" | "S" | "J" | null

`identityDocumentNumber` string | null

`identityDocumentType` "I" | "P" | "D" | "O" | null

`identityDocumentCountry` string | null

`status` "active" | "inactive"

`note` string | null

`children` object\[\]

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`claimFrom` string | null

Date as YYYY-MM-DD.

`claimTo` string | null

Date as YYYY-MM-DD.

`contract` object povinné

`type` "hpp" | "dpc" | "dpp" povinné

`position` string | null

`qualification` string | null

`exposureNote` string | null

`signedOn` string | null

Date as YYYY-MM-DD.

`startDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`endDate` string | null

Date as YYYY-MM-DD.

`endReason` string | null

`wageType` "monthly" | "hourly"

`baseWageHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`hourlyRateHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`weeklyHoursMilli` integer min 0 max 168000

Integer thousandths: 1500 means 1.5.

`irregularSchedule` boolean

`vacationHoursMilli` integer min 0 max 9007199254740991

Integer thousandths: 1500 means 1.5.

`smallScope` boolean | null

`averageHourlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`mealAllowancePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployerPerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`mealVoucherEmployeePerShiftHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`centerId` string | null

ID of the center.

`activityId` string | null

ID of the activity. Find it with list-activity.

`projectId` string | null

ID of the project.

`idPpv` string | null

`iscoCode` string | null

`employmentStatusCode` string

`workModeCode` "1" | "2" | "3" | "4"

`workCity` string | null

`workMunicipalityCode` string | null

`registeredAt` string | null

`deregisteredAt` string | null

`deregistration` object | null

`noDataReason` "2" | "3" | null

`employmentKind` "1" | "2"

`endReasonCode` integer min 1 max 15

`averageNetMonthlyHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`severanceDue` boolean

`severancePaidInFull` boolean

`severanceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`replacementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionFrom` string | null

Date as YYYY-MM-DD.

`pensionTo` string | null

Date as YYYY-MM-DD.

`note` string | null

### Odpověď · 201

`id` string povinné

`name` null | string povinné

`firstName` string povinné

`lastName` string povinné

`title` string | null povinné

`birthName` string | null povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`birthPlace` null | string povinné

`gender` null | string povinné

`citizenship` string povinné

`street` null | string povinné

`houseNumber` null | string povinné

`orientationNumber` string | null povinné

`city` null | string povinné

`postalCode` null | string povinné

`country` string povinné

`email` null | string povinné

`phone` string | null povinné

`bankAccountMasked` null | string povinné

`protectedAccountSourceId` null | string povinné

`protectedAccountConfirmedOn` null | string povinné date

`healthInsurerCode` null | string povinné

`healthInsurerName` null | string povinné

`disability` string povinné

`ztpp` boolean povinné

`ztp` boolean povinné

`pensioner` boolean povinné

`pensionerDiscountFrom` null | string povinné date

`student` boolean povinné

`studentUntil` string | null povinné

`stateInsured` boolean povinné

`selfEmployedMinimum` boolean povinné

`otherEmployerMinimum` boolean povinné

`employerDiscountGroup` null | string povinné

`employerDiscountNotified` boolean povinné

`hasDeclaration` boolean povinné

`declarationSignedOn` null | string povinné date

`dependents` integer povinné

`ikMpsv` null | string povinné

`educationCode` string | null povinné

`studentCredit` boolean povinné

`doctoralStudent` boolean povinné

`taxNonResident` boolean povinné

`foreignTaxId` null | string povinné

`foreignTaxIdType` null | string povinné

`identityDocumentNumber` null | string povinné

`identityDocumentType` null | string povinné

`identityDocumentCountry` null | string povinné

`status` string povinné

`note` string | null povinné

`contracts` object\[\]

`object` "employment\_contract" povinné

`id` string povinné

`employeeId` string povinné

`type` string povinné

`position` null | string povinné

`signedOn` string | null povinné

`startDate` string povinné date

`endDate` null | string povinné date

`endReason` string | null povinné

`wageType` string povinné

`baseWageHaler` integer povinné

`hourlyRateHaler` integer povinné

`weeklyHoursMilli` integer povinné

`irregularSchedule` boolean povinné

`vacationHoursMilli` integer povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`mealAllowancePerShiftHaler` integer povinné

`mealVoucherEmployerPerShiftHaler` integer povinné

`mealVoucherEmployeePerShiftHaler` integer povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`idPpv` null | string povinné

`iscoCode` null | string povinné

`employmentStatusCode` string povinné

`workModeCode` string povinné

`workCity` null | string povinné

`workMunicipalityCode` null | string povinné

`registeredAt` string | null povinné

`deregisteredAt` string | null povinné

`allocationMethod` string povinné

`deregistration` null | object povinné

`severanceDue` boolean

`endReasonCode` integer

`severanceHaler` integer

`severancePaidInFull` boolean

`noDataReason` string

`averageNetMonthlyHaler` integer

`note` string | null povinné

`employeeName` string

`qualification` null | string

`exposureNote` null | string

`onboarding` object

`personal` boolean povinné

`insurer` boolean povinné

`bank` boolean povinné

`contract` boolean povinné

`declaration` boolean povinné

`registered` boolean povinné

`childrenOtherPerson` null | object

`lastName` string povinné

`birthDate` null | string povinné date

`firstName` string povinné

`birthNumberMasked` null | string povinné

`birthNumber` null | string

`bankAccount` null | string

`children` object\[\]

`object` "employee\_child" povinné

`id` string povinné

`firstName` null | string povinné

`lastName` null | string povinné

`birthNumber` null | string povinné

`birthNumberMasked` null | string povinné

`birthDate` null | string povinné date

`ztpp` boolean povinné

`claimFrom` null | string povinné date

`claimTo` null | string povinné date

`position` integer | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/employees/onboard \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employee": {
    "firstName": "Pekárna U Lípy s.r.o.",
    "lastName": "Pekárna U Lípy s.r.o."
  },
  "contract": {
    "type": "hpp",
    "startDate": "2026-10-30"
  }
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/employees/onboard', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employee": {
      "firstName": "Pekárna U Lípy s.r.o.",
      "lastName": "Pekárna U Lípy s.r.o."
    },
    "contract": {
      "type": "hpp",
      "startDate": "2026-10-30"
    }
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/employees/onboard",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employee": {
            "firstName": "Pekárna U Lípy s.r.o.",
            "lastName": "Pekárna U Lípy s.r.o."
        },
        "contract": {
            "type": "hpp",
            "startDate": "2026-10-30"
        }
    },
)
data = response.json()
```

## What a Hromadné oznámení zaměstnavatele of a period says for one insurer, worked out from contracts. Tells where the XML format comes from, whether that insurer itself publishes it, and which form an XDP belongs to

GET `/v1/payroll/health-changes`

What a Hromadné oznámení zaměstnavatele of a period says for one insurer, worked out from contracts. Tells where the XML format comes from, whether that insurer itself publishes it, and which form an XDP belongs to

Nástroj MCP: `get-payroll-health-changes`

### Parametry dotazu

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`insurer` string povinné

`xmlFormatSource` null | string povinné

`lines` object\[\] povinné

`employeeId` null | string povinné

`name` null | string povinné

`code` null | string povinné

`date` string povinné date

`uncertain` boolean povinné

`added` object\[\]

`id` string povinné

`employeeId` null | string povinné

`name` null | string povinné

`code` null | string povinné

`date` string povinné date

`skipped` object\[\]

`id` string povinné

`employeeId` null | string povinné

`name` null | string povinné

`code` null | string povinné

`date` string povinné date

`xmlFormatPublished` boolean

`xdpForm` null | string

```bash
curl https://api.damedoklad.cz/v1/payroll/health-changes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/health-changes', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/health-changes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The data of the insurer's Hromadné oznámení form as an XDP, for VZP, VoZP, ZPŠ, ZP MV and RBP. Adobe Reader opens it together with the PDF it names, and you send that PDF. Refused for ČPZP and OZP, which take the XML, and when a value would be cut by the form

POST `/v1/payroll/health-changes.xdp`

The data of the insurer's Hromadné oznámení form as an XDP, for VZP, VoZP, ZPŠ, ZP MV and RBP. Adobe Reader opens it together with the PDF it names, and you send that PDF. Refused for ČPZP and OZP, which take the XML, and when a value would be cut by the form

Nástroj MCP: `create-payroll-health-changes-xdp`

### Tělo požadavku

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`extra` object\[\]

`employeeId` string povinné

ID of the employee.

`code` "P" | "A" | "E" | "C" | "O" | "Q" | "M" | "U" | "D" | "H" | "I" | "J" | "G" | "F" | "L" | "T" | "N" | "K" | "S" | "R" | "W" | "V" | "X" | "Y" | "Z" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`skip` object\[\]

`employeeId` string povinné

ID of the employee.

`code` "P" | "A" | "E" | "C" | "O" | "Q" | "M" | "U" | "D" | "H" | "I" | "J" | "G" | "F" | "L" | "T" | "N" | "K" | "S" | "R" | "W" | "V" | "X" | "Y" | "Z" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/health-changes.xdp \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "insurer": "111",
  "from": "2026-10-30",
  "to": "2026-10-30"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/health-changes.xdp', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "insurer": "111",
    "from": "2026-10-30",
    "to": "2026-10-30"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/health-changes.xdp",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "insurer": "111",
        "from": "2026-10-30",
        "to": "2026-10-30"
    },
)
content = response.content
```

## Hromadné oznámení zaměstnavatele as the shared XML (hromadneOznameniZamestnavatele v8), whose schema lists all seven insurers. Valid against the XSD. ČPZP, OZP and RBP publish the schema; for VZP, VoZP, ZPŠ and ZP MV ask the insurer whether it takes the file. You file it on the insurer's portal or to its data box

POST `/v1/payroll/health-changes.xml`

Hromadné oznámení zaměstnavatele as the shared XML (hromadneOznameniZamestnavatele v8), whose schema lists all seven insurers. Valid against the XSD. ČPZP, OZP and RBP publish the schema; for VZP, VoZP, ZPŠ and ZP MV ask the insurer whether it takes the file. You file it on the insurer's portal or to its data box

Nástroj MCP: `create-payroll-health-changes-xml`

### Tělo požadavku

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`extra` object\[\]

`employeeId` string povinné

ID of the employee.

`code` "P" | "A" | "E" | "C" | "O" | "Q" | "M" | "U" | "D" | "H" | "I" | "J" | "G" | "F" | "L" | "T" | "N" | "K" | "S" | "R" | "W" | "V" | "X" | "Y" | "Z" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`skip` object\[\]

`employeeId` string povinné

ID of the employee.

`code` "P" | "A" | "E" | "C" | "O" | "Q" | "M" | "U" | "D" | "H" | "I" | "J" | "G" | "F" | "L" | "T" | "N" | "K" | "S" | "R" | "W" | "V" | "X" | "Y" | "Z" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/health-changes.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "insurer": "111",
  "from": "2026-10-30",
  "to": "2026-10-30"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/health-changes.xml', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "insurer": "111",
    "from": "2026-10-30",
    "to": "2026-10-30"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/health-changes.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "insurer": "111",
        "from": "2026-10-30",
        "to": "2026-10-30"
    },
)
content = response.content
```

## Keep a line on the Hromadné oznámení of its month: \`add\` a change the contracts cannot show, such as maternity (M, U) or a pension (D, H), or \`skip\` one they show that is not to be filed. It stays for every later look and file

POST `/v1/payroll/health-changes/marks`

Keep a line on the Hromadné oznámení of its month: \`add\` a change the contracts cannot show, such as maternity (M, U) or a pension (D, H), or \`skip\` one they show that is not to be filed. It stays for every later look and file

Nástroj MCP: `create-payroll-health-change-mark`

### Tělo požadavku

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

`employeeId` string povinné

ID of the employee.

`code` "P" | "A" | "E" | "C" | "O" | "Q" | "M" | "U" | "D" | "H" | "I" | "J" | "G" | "F" | "L" | "T" | "N" | "K" | "S" | "R" | "W" | "V" | "X" | "Y" | "Z" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`action` "add" | "skip" povinné

### Odpověď · 201

`id` string povinné

`employeeId` string povinné

`name` null | string povinné

`code` string povinné

`date` string povinné date

`action` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/health-changes/marks \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "insurer": "111",
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "code": "P",
  "date": "2026-10-30",
  "action": "add"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/health-changes/marks', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "insurer": "111",
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "code": "P",
    "date": "2026-10-30",
    "action": "add"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/health-changes/marks",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "insurer": "111",
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "code": "P",
        "date": "2026-10-30",
        "action": "add"
    },
)
data = response.json()
```

## Take back an added line, or bring back a line that was left out

DELETE `/v1/payroll/health-changes/marks/{id}`

Take back an added line, or bring back a line that was left out

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-health-change-mark`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/health-changes/marks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/health-changes/marks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/health-changes/marks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List Czech public holidays of a year

GET `/v1/payroll/holidays`

List Czech public holidays of a year

Nástroj MCP: `list-payroll-holidays`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`date` string povinné date

`name` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/holidays \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/holidays', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/holidays",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List past months taken over from the previous program. They count in the annual social cap, averages, the year-end settlement, ELDP and the income confirmation, and post nothing

GET `/v1/payroll/opening-months`

List past months taken over from the previous program. They count in the annual social cap, averages, the year-end settlement, ELDP and the income confirmation, and post nothing

Nástroj MCP: `list-payroll-opening-months`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`employeeId` string

ID of the employee.

`year` integer min 2000 max 2100

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_opening\_month" povinné

`id` string povinné

`employeeId` string povinné

`contractId` null | string povinné

`employeeName` string povinné

`year` integer povinné

`month` integer povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`taxBaseHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingBaseHaler` integer povinné

`withholdingHaler` integer povinné

`socialBaseHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthBaseHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`netHaler` integer povinné

`workedHoursMilli` integer povinné

`workedDays` integer povinné

`sickDays` integer povinné

`ocrDays` integer povinné

`unpaidLeaveMilli` integer povinné

`note` string | null povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/opening-months \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/opening-months', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/opening-months",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Remove a past month taken over by mistake, so it can be imported again

DELETE `/v1/payroll/opening-months/{id}`

Remove a past month taken over by mistake, so it can be imported again

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-opening-month`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/opening-months/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/opening-months/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/opening-months/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List company pay item templates: bonuses, premium rates, meal vouchers, and benefits, with the contracts they apply to

GET `/v1/payroll/pay-items`

List company pay item templates: bonuses, premium rates, meal vouchers, and benefits, with the contracts they apply to

Nástroj MCP: `list-payroll-pay-items`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` any\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/pay-items \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/pay-items",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a pay item template. A premium rate below the statutory minimum is refused, except an agreed lower rate for night and weekend work

POST `/v1/payroll/pay-items`

Create a pay item template. A premium rate below the statutory minimum is refused, except an agreed lower rate for night and weekend work

Nástroj MCP: `create-payroll-pay-item`

### Tělo požadavku

`name` string povinné max 200 chars

`category` "bonus" | "premium" | "benefit" povinné

`calc` "fixed" | "per\_shift" | "per\_hour" | "percent\_of\_base" | "percent\_of\_average" povinné

`treatment` "taxable" | "benefit" | "health\_care" | "meal\_allowance" | "meal\_voucher"

`amountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`employeeAmountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`rateBp` integer min 0 max 100000

`hoursBasis` "worked" | "overtime" | "night" | "weekend" | "holiday" | "difficult"

`premiumKind` "overtime" | "night" | "weekend" | "holiday" | "difficult" | null

`agreedBelowStatutory` boolean

`exemptGroup` "none" | "health" | "leisure" | "recreation" | "retirement"

`appliesToAll` boolean

`validFrom` string | null

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`isActive` boolean

`note` string | null

### Odpověď · 201

`id` string povinné

`name` string povinné

`category` string povinné

`calc` string povinné

`treatment` string povinné

`amountHaler` integer povinné

`employeeAmountHaler` integer povinné

`rateBp` integer povinné

`hoursBasis` string povinné

`premiumKind` null | string povinné

`agreedBelowStatutory` boolean povinné

`exemptGroup` string povinné

`appliesToAll` boolean povinné

`validFrom` null | string povinné

`validTo` null | string povinné

`isActive` boolean povinné

`note` string | null povinné

`assignments` object\[\] povinné

`contractId` null | string povinné

`amountHaler` integer | null povinné

`rateBp` integer | null povinné

`validFrom` string | null povinné

`validTo` string | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/pay-items \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "category": "bonus",
  "calc": "fixed"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "category": "bonus",
    "calc": "fixed"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/pay-items",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "category": "bonus",
        "calc": "fixed"
    },
)
data = response.json()
```

## Update a pay item template. Locked runs keep the values they were calculated with

PATCH `/v1/payroll/pay-items/{id}`

Update a pay item template. Locked runs keep the values they were calculated with

Nástroj MCP: `update-payroll-pay-item`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`category` "bonus" | "premium" | "benefit"

`calc` "fixed" | "per\_shift" | "per\_hour" | "percent\_of\_base" | "percent\_of\_average"

`treatment` "taxable" | "benefit" | "health\_care" | "meal\_allowance" | "meal\_voucher"

`amountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`employeeAmountHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`rateBp` integer min 0 max 100000

`hoursBasis` "worked" | "overtime" | "night" | "weekend" | "holiday" | "difficult"

`premiumKind` "overtime" | "night" | "weekend" | "holiday" | "difficult" | null

`agreedBelowStatutory` boolean

`exemptGroup` "none" | "health" | "leisure" | "recreation" | "retirement"

`appliesToAll` boolean

`validFrom` string | null

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

`isActive` boolean

`note` string | null

### Odpověď · 200

`id` string povinné

`name` string povinné

`category` string povinné

`calc` string povinné

`treatment` string povinné

`amountHaler` integer povinné

`employeeAmountHaler` integer povinné

`rateBp` integer povinné

`hoursBasis` string povinné

`premiumKind` null | string povinné

`agreedBelowStatutory` boolean povinné

`exemptGroup` string povinné

`appliesToAll` boolean povinné

`validFrom` null | string povinné

`validTo` null | string povinné

`isActive` boolean povinné

`note` string | null povinné

`assignments` object\[\] povinné

`contractId` null | string povinné

`amountHaler` integer | null povinné

`rateBp` integer | null povinné

`validFrom` string | null povinné

`validTo` string | null povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "category": "bonus",
  "calc": "fixed"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Pekárna U Lípy s.r.o.",
    "category": "bonus",
    "calc": "fixed"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "category": "bonus",
        "calc": "fixed"
    },
)
data = response.json()
```

## Delete a pay item template and its assignments. Locked runs keep the amounts they already hold

DELETE `/v1/payroll/pay-items/{id}`

Delete a pay item template and its assignments. Locked runs keep the amounts they already hold

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-pay-item`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set which contracts a pay item applies to, each optionally with its own amount, rate, and months

PUT `/v1/payroll/pay-items/{id}/assignments`

Set which contracts a pay item applies to, each optionally with its own amount, rate, and months

Nástroj MCP: `replace-payroll-pay-item-assignments`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`assignments` object\[\] povinné

`contractId` string povinné

ID of the contract. Find it with list-contracts.

`amountHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`rateBp` integer | null

`validFrom` string | null

Date as YYYY-MM-DD.

`validTo` string | null

Date as YYYY-MM-DD.

### Odpověď · 200

`id` string povinné

`name` string povinné

`category` string povinné

`calc` string povinné

`treatment` string povinné

`amountHaler` integer povinné

`employeeAmountHaler` integer povinné

`rateBp` integer povinné

`hoursBasis` string povinné

`premiumKind` null | string povinné

`agreedBelowStatutory` boolean povinné

`exemptGroup` string povinné

`appliesToAll` boolean povinné

`validFrom` null | string povinné

`validTo` null | string povinné

`isActive` boolean povinné

`note` string | null povinné

`assignments` object\[\] povinné

`contractId` null | string povinné

`amountHaler` integer | null povinné

`rateBp` integer | null povinné

`validFrom` string | null povinné

`validTo` string | null povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/assignments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "assignments": [
    {
      "contractId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/assignments', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "assignments": [
      {
        "contractId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/pay-items/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/assignments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "assignments": [
            {
                "contractId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## Statutory minimum premiums and benefit limits of a year, with the section of the Labour Code or the Income Tax Act

GET `/v1/payroll/pay-items/statutory`

Statutory minimum premiums and benefit limits of a year, with the section of the Labour Code or the Income Tax Act

Nástroj MCP: `get-payroll-statutory-premiums`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`year` integer povinné

`premiums` object\[\] povinné

`kind` string povinné

`minimumBp` integer povinné

`base` string povinné

`section` string povinné

`agreeable` boolean povinné

`mealExemptPerShiftHaler` integer | null povinné

`benefitLimits` object povinné

`health` object povinné

`limitHaler` integer povinné

`section` string povinné

`leisure` object povinné

`limitHaler` integer | null povinné

`section` string povinné

`retirement` object povinné

`limitHaler` integer povinné

`section` string povinné

`recreation` object

`limitHaler` integer povinné

`section` string povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/pay-items/statutory \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/pay-items/statutory', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/pay-items/statutory",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: úhrady, mzdy

GET `/v1/payroll/payments`

List payroll payments. With status=due this is the list the bank module turns into payment orders: payouts, deductions, ČSSZ, health insurers, tax

Nástroj MCP: `list-payroll-payments`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "due" | "paid"

`runId` string

ID of the run.

`kind` "wage" | "reimbursement" | "social" | "health" | "tax\_advance" | "tax\_withholding" | "deduction"

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_payment" povinné

`id` string povinné

`runId` string povinné

`kind` string povinné

`employeeId` null | string povinné

`healthInsurerCode` null | string povinné

`recipient` string povinné

`accountNumber` null | string povinné

`accountMissing` boolean povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`constantSymbol` null | string povinné

`amountHaler` integer povinné

`dueDate` string povinné date

`status` string povinné

`paidOn` null | string povinné date

`journalEntryId` null | string povinné

`cashEntryId` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/payments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/payments', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/payments",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Mark a payroll payment as paid by hand. A transfer goes through a bank account, posts MD 331/336/342/379 / D 221xxx on its analytic, and a later statement line takes it over. Cash goes through a register with registerId

POST `/v1/payroll/payments/{id}/paid`

Mark a payroll payment as paid by hand. A transfer goes through a bank account, posts MD 331/336/342/379 / D 221xxx on its analytic, and a later statement line takes it over. Cash goes through a register with registerId

Nástroj MCP: `mark-payroll-payment-paid`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`paidOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`registerId` string

ID of the register.

`bankAccountId` string

ID of the bank account. Find it with list-bank-accounts.

### Odpověď · 200

`id` string povinné

`runId` string povinné

`kind` string povinné

`employeeId` null | string povinné

`healthInsurerCode` null | string povinné

`recipient` string povinné

`accountNumber` null | string povinné

`accountMissing` boolean povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`constantSymbol` null | string povinné

`amountHaler` integer povinné

`dueDate` string povinné date

`status` string povinné

`paidOn` null | string povinné date

`journalEntryId` null | string povinné

`cashEntryId` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/paid \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "paidOn": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/paid', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "paidOn": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/paid",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "paidOn": "2026-10-30"
    },
)
data = response.json()
```

## Undo a payment mark: reverses what it posted, and the hand-typed movement goes with it. A payment paired with a statement line is unpaired there

POST `/v1/payroll/payments/{id}/unpaid`

Undo a payment mark: reverses what it posted, and the hand-typed movement goes with it. A payment paired with a statement line is unpaired there

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `mark-payroll-payment-unpaid`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`runId` string povinné

`kind` string povinné

`employeeId` null | string povinné

`healthInsurerCode` null | string povinné

`recipient` string povinné

`accountNumber` null | string povinné

`accountMissing` boolean povinné

`variableSymbol` null | string povinné

`specificSymbol` string | null povinné

`constantSymbol` null | string povinné

`amountHaler` integer povinné

`dueDate` string povinné date

`status` string povinné

`paidOn` null | string povinné date

`journalEntryId` null | string povinné

`cashEntryId` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unpaid \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unpaid', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/payments/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unpaid",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Free-form planning: net pay and employer cost for a gross monthly wage. Saves nothing

POST `/v1/payroll/preview/gross-to-net`

Free-form planning: net pay and employer cost for a gross monthly wage. Saves nothing

Nástroj MCP: `preview-payroll-gross-to-net`

### Tělo požadavku

`year` integer povinné min -9007199254740991 max 9007199254740991

`type` "hpp" | "dpc" | "dpp"

`person` object

`hasDeclaration` boolean

`children` object\[\]

`ztpp` boolean

`disability` "none" | "first\_second" | "third"

`ztpp` boolean

`pensionerDiscount` boolean

`healthMinimumExempt` boolean

`grossHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 200

`grossHaler` integer povinné

`netHaler` integer povinné

`result` null | object povinné

`year` integer povinné

`month` integer | null povinné

`contracts` object\[\] povinné

`contractId` null | string povinné

`type` string povinné

`centerOid` any povinné

Null in every recorded response.

`activityOid` any povinné

Null in every recorded response.

`projectOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`centerOid` any povinné

Null in every recorded response.

`activityOid` any povinné

Null in every recorded response.

`projectOid` any povinné

Null in every recorded response.

`shareBp` integer povinné

`wageHaler` integer povinné

`mealHaler` integer povinné

`employerHaler` integer povinné

`benefits` any\[\] povinné

`benefitEmployerHaler` integer povinné

`participates` boolean povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`attendance` object povinné

`from` string povinné date

`to` string povinné date

`active` boolean povinné

`employedDays` integer povinné

`calendarDays` integer povinné

`fundFullMilli` integer povinné

`fundEmployedMilli` integer povinné

`workedMilli` integer povinné

`weekendWorkedMilli` integer povinné

`holidayWorkedMilli` integer povinné

`holidayMilli` integer povinné

`vacationMilli` integer povinné

`sickPaidMilli` integer povinné

`sickUnpaidMilli` integer povinné

`ocrMilli` integer povinné

`paidLeaveMilli` integer povinné

`unpaidLeaveMilli` integer povinné

`absentMilli` integer povinné

`obstacleMilli` integer povinné

`absenceInFundMilli` integer povinné

`sickDays` integer povinné

`ocrDays` integer povinné

`healthExcludedDays` integer povinné

`workedDays` integer povinné

`shifts` integer povinné

`sickStreakAtEnd` integer povinné

`components` array | null povinné

`code` null | string povinné

`amountHaler` integer | null povinné

`hoursMilli` integer povinné

`taxableHaler` integer povinné

`grossHaler` integer povinné

`sickPayHaler` integer povinné

`mealExemptHaler` integer povinné

`voucherEmployerHaler` integer povinné

`socialBaseHaler` integer povinné

`healthBaseHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`costShare` integer povinné

`insurableHaler` integer

`grossHaler` integer povinné

`taxableHaler` integer povinné

`sickPayHaler` integer povinné

`otherExemptHaler` integer povinné

`mealExemptHaler` integer povinné

`voucherEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`benefitEmployerHaler` integer povinné

`settlement` any povinné

Null in every recorded response.

`social` object povinné

`baseHaler` integer | null povinné

`employeeBeforeDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` any povinné

Null in every recorded response.

`employerDiscountReason` any povinné

Null in every recorded response.

`health` object povinné

`baseHaler` integer | null povinné

`minimumBaseHaler` integer povinné

`shortfallHaler` integer povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`tax` object povinné

`withholdingBaseHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateBaseHaler` integer povinné

`separateAdvanceHaler` integer povinné

`advanceTaxableHaler` integer povinné

`advanceBaseHaler` integer povinné

`advanceHaler` integer povinné

`personalCreditHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`childCreditClaimHaler` integer povinné

`childCreditHaler` integer povinné

`bonusHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`deductions` any\[\] povinné

`attachmentLimits` object povinné

`protectedHaler` integer povinné

`thirdHaler` integer povinné

`aboveHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherPoolHaler` integer povinné

`deductionsHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`warnings` any\[\] povinné

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/preview/gross-to-net \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "grossHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/preview/gross-to-net', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "grossHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/preview/gross-to-net",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "grossHaler": 1210000
    },
)
data = response.json()
```

## Free-form planning: the smallest gross monthly wage that gives at least the wanted net pay. Saves nothing

POST `/v1/payroll/preview/net-to-gross`

Free-form planning: the smallest gross monthly wage that gives at least the wanted net pay. Saves nothing

Nástroj MCP: `preview-payroll-net-to-gross`

### Tělo požadavku

`year` integer povinné min -9007199254740991 max 9007199254740991

`type` "hpp" | "dpc" | "dpp"

`person` object

`hasDeclaration` boolean

`children` object\[\]

`ztpp` boolean

`disability` "none" | "first\_second" | "third"

`ztpp` boolean

`pensionerDiscount` boolean

`healthMinimumExempt` boolean

`netHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 200

`grossHaler` integer povinné

`netHaler` integer povinné

`result` null | object povinné

`year` integer povinné

`month` integer | null povinné

`contracts` object\[\] povinné

`contractId` null | string povinné

`type` string povinné

`centerOid` any povinné

Null in every recorded response.

`activityOid` any povinné

Null in every recorded response.

`projectOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`centerOid` any povinné

Null in every recorded response.

`activityOid` any povinné

Null in every recorded response.

`projectOid` any povinné

Null in every recorded response.

`shareBp` integer povinné

`wageHaler` integer povinné

`mealHaler` integer povinné

`employerHaler` integer povinné

`benefits` any\[\] povinné

`benefitEmployerHaler` integer povinné

`participates` boolean povinné

`smallScope` boolean | null povinné

`averageHourlyHaler` integer | null povinné

`attendance` object povinné

`from` string povinné date

`to` string povinné date

`active` boolean povinné

`employedDays` integer povinné

`calendarDays` integer povinné

`fundFullMilli` integer povinné

`fundEmployedMilli` integer povinné

`workedMilli` integer povinné

`weekendWorkedMilli` integer povinné

`holidayWorkedMilli` integer povinné

`holidayMilli` integer povinné

`vacationMilli` integer povinné

`sickPaidMilli` integer povinné

`sickUnpaidMilli` integer povinné

`ocrMilli` integer povinné

`paidLeaveMilli` integer povinné

`unpaidLeaveMilli` integer povinné

`absentMilli` integer povinné

`obstacleMilli` integer povinné

`absenceInFundMilli` integer povinné

`sickDays` integer povinné

`ocrDays` integer povinné

`healthExcludedDays` integer povinné

`workedDays` integer povinné

`shifts` integer povinné

`sickStreakAtEnd` integer povinné

`components` array | null povinné

`code` null | string povinné

`amountHaler` integer | null povinné

`hoursMilli` integer povinné

`taxableHaler` integer povinné

`grossHaler` integer povinné

`sickPayHaler` integer povinné

`mealExemptHaler` integer povinné

`voucherEmployerHaler` integer povinné

`socialBaseHaler` integer povinné

`healthBaseHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`costShare` integer povinné

`insurableHaler` integer

`grossHaler` integer povinné

`taxableHaler` integer povinné

`sickPayHaler` integer povinné

`otherExemptHaler` integer povinné

`mealExemptHaler` integer povinné

`voucherEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`benefitEmployerHaler` integer povinné

`settlement` any povinné

Null in every recorded response.

`social` object povinné

`baseHaler` integer | null povinné

`employeeBeforeDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` any povinné

Null in every recorded response.

`employerDiscountReason` any povinné

Null in every recorded response.

`health` object povinné

`baseHaler` integer | null povinné

`minimumBaseHaler` integer povinné

`shortfallHaler` integer povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`tax` object povinné

`withholdingBaseHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateBaseHaler` integer povinné

`separateAdvanceHaler` integer povinné

`advanceTaxableHaler` integer povinné

`advanceBaseHaler` integer povinné

`advanceHaler` integer povinné

`personalCreditHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`childCreditClaimHaler` integer povinné

`childCreditHaler` integer povinné

`bonusHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`deductions` any\[\] povinné

`attachmentLimits` object povinné

`protectedHaler` integer povinné

`thirdHaler` integer povinné

`aboveHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherPoolHaler` integer povinné

`deductionsHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`warnings` any\[\] povinné

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/preview/net-to-gross \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "netHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/preview/net-to-gross', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "netHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/preview/net-to-gross",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "netHaler": 1210000
    },
)
data = response.json()
```

## Get the legal payroll parameters of a year: average wage, minimum wage, rates, limits

GET `/v1/payroll/rates`

Get the legal payroll parameters of a year: average wage, minimum wage, rates, limits

Nástroj MCP: `get-payroll-rates`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`supportedYears` integer\[\] povinné

`year` integer povinné

`averageWage` integer povinné

`minimumWageMonthly` integer povinné

`minimumWageHourlyHaler` integer povinné

`social` object povinné

`employerBp` integer povinné

`employeeBp` integer povinné

`employeeSicknessBp` integer povinné

`employeePensionBp` integer povinné

`maxAssessmentBase` integer povinné

`pensionerDiscountBp` integer povinné

`employerDiscount` object povinné

`bp` integer povinné

`minWeeklyHours` integer povinné

`maxWeeklyHours` integer povinné

`maxMonthlyBase` integer povinné

`maxHourlyBase` integer povinné

`maxMonthlyHours` integer povinné

`participation` object povinné

`dppThreshold` integer povinné

`smallScopeThreshold` integer povinné

`health` object povinné

`totalBp` integer povinné

`minimumBase` integer povinné

`tax` object povinné

`rateBp` integer | null povinné

`higherRateBp` integer povinné

`monthlyThreshold` integer povinné

`withholdingRateBp` integer povinné

`taxpayerCredit` integer povinné

`disabilityFirstSecondCredit` integer povinné

`disabilityThirdCredit` integer povinné

`ztppCredit` integer povinné

`childCredits` integer\[\] povinné

`minimumMonthlyBonus` integer povinné

`bonusIncomeThreshold` integer povinné

`separateAdvance` boolean

`studentCredit` integer

`studentAgeLimit` integer

`doctoralAgeLimit` integer

`sickPay` object povinné

`thresholdsHaler` integer\[\] povinné

`weightsBp` integer\[\] povinné

`rateBp` integer | null povinné

`paidCalendarDays` integer povinné

`premiums` object povinné

`overtimeBp` integer povinné

`nightBp` integer povinné

`weekendBp` integer povinné

`holidayBp` integer povinné

`difficultBpOfMinimumWage` integer povinné

`meals` object povinné

`exemptPerShiftHaler` integer | null povinné

`minimumHoursPerShift` integer povinné

`attachments` null | object povinné

`baseSum` integer povinné

`debtorShareBp` integer povinné

`dependentDivisor` integer povinné

`fullSeizureThreshold` integer povinné

`insolvencyMonthlyWithVatHaler` integer povinné

`benefits` object povinné

`healthLimitHaler` integer povinné

`leisureLimitHaler` integer | null povinné

`retirementLimitHaler` integer povinné

`recreationLimitHaler` integer

`healthCareOutsideIncome` boolean

`agreements` object povinné

`dppYearlyHours` integer povinné

`dpcWeeklyHours` integer povinné

`pending` object

`meals` string povinné

`attachments` string povinné

`tips` object

`exemptShareBp` integer povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/rates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/rates', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/rates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Annual totals per employee from locked runs

GET `/v1/payroll/reports/annual`

Annual totals per employee from locked runs

Nástroj MCP: `get-payroll-annual-totals`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`data` object\[\] povinné

`employeeId` null | string povinné

`employeeName` string povinné

`months` integer povinné

`grossHaler` integer povinné

`socialEmployeeHaler` integer povinné

`healthEmployeeHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`netHaler` integer povinné

`employerCostHaler` integer povinné

`total` integer povinné

`hasMore` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/reports/annual \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/reports/annual', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/reports/annual",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Labour cost by month and by cost center, from locked runs

GET `/v1/payroll/reports/costs`

Labour cost by month and by cost center, from locked runs

Nástroj MCP: `get-payroll-cost-overview`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`year` integer povinné

`months` object\[\] povinné

`month` integer | null povinné

`grossHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployerHaler` integer povinné

`totalHaler` integer | null povinné

`centers` object\[\] povinné

`centerId` null | string povinné

`totalHaler` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/reports/costs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/reports/costs', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/reports/costs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Mzdový list: one employee, month by month, from locked runs

GET `/v1/payroll/reports/wage-sheet`

Mzdový list: one employee, month by month, from locked runs

Nástroj MCP: `get-payroll-wage-sheet`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`employeeId` string povinné

ID of the employee.

### Odpověď · 200

`year` integer povinné

`employeeId` null | string povinné

`months` object\[\] povinné

`month` integer | null povinné

`grossHaler` integer povinné

`socialEmployeeHaler` integer povinné

`healthEmployeeHaler` integer povinné

`taxHaler` integer povinné

`withholdingHaler` integer povinné

`bonusHaler` integer povinné

`deductionsHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/reports/wage-sheet \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/reports/wage-sheet', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/reports/wage-sheet",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Mzdový list as PDF

GET `/v1/payroll/reports/wage-sheet.pdf`

Mzdový list as PDF

Nástroj MCP: `get-payroll-wage-sheet-pdf`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`employeeId` string povinné

ID of the employee.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/reports/wage-sheet.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/reports/wage-sheet.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/reports/wage-sheet.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List monthly payroll runs

GET `/v1/payroll/runs`

List monthly payroll runs

Nástroj MCP: `list-payroll-runs`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`year` integer min 2000 max 2100

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_run" povinné

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`social` object povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`contracts` object\[\] povinné

`deductions` object\[\] povinné

`grossHaler` integer povinné

`settlement` null | object povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Start the payroll of a month as a draft and calculate every employee with a contract in that month

POST `/v1/payroll/runs`

Start the payroll of a month as a draft and calculate every employee with a contract in that month

Nástroj MCP: `create-payroll-run`

### Tělo požadavku

`year` integer povinné min -9007199254740991 max 9007199254740991

`month` integer povinné min 1 max 12

`paymentDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`tipFoodIncomeHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 201

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "year": 2026,
  "month": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "year": 2026,
    "month": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "month": 1
    },
)
data = response.json()
```

## Get a payroll run with the calculation of every employee

GET `/v1/payroll/runs/{id}`

Get a payroll run with the calculation of every employee

Nástroj MCP: `get-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change the payment date, the note, or the month's food service income behind the exempt tips (§ 6 odst. 9 písm. g) ZDP from 2027) of a payroll run that is not locked. A new income recalculates the run

PATCH `/v1/payroll/runs/{id}`

Change the payment date, the note, or the month's food service income behind the exempt tips (§ 6 odst. 9 písm. g) ZDP from 2027) of a payroll run that is not locked. A new income recalculates the run

Nástroj MCP: `update-payroll-run`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`paymentDate` string | null

Date as YYYY-MM-DD.

`note` string | null

`tipFoodIncomeHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "paymentDate": "2026-10-30",
  "note": "string",
  "tipFoodIncomeHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "paymentDate": "2026-10-30",
    "note": "string",
    "tipFoodIncomeHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "paymentDate": "2026-10-30",
        "note": "string",
        "tipFoodIncomeHaler": 1210000
    },
)
data = response.json()
```

## Delete a payroll run that is not locked

DELETE `/v1/payroll/runs/{id}`

Delete a payroll run that is not locked

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Overview of what a month must report: social insurance, each health insurer, tax, and whether the JMHZ XML is ready

GET `/v1/payroll/runs/{id}/filings`

Overview of what a month must report: social insurance, each health insurer, tax, and whether the JMHZ XML is ready

Nástroj MCP: `get-payroll-filings`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`runId` null | string povinné

`status` string povinné

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`insurers` object\[\] povinné

`code` null | string povinné

`name` null | string povinné

`xmlFile` boolean povinné

`employeeCount` integer povinné

`baseHaler` integer | null povinné

`premiumHaler` integer povinné

`jmhzProblems` string\[\] povinné

`filings` object\[\] povinné

`kind` string povinné

`type` string povinné

`guid` null | string povinné

`generatedAt` string povinné date-time

`submittedAt` null | string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record that a filing was submitted to the authority. DameDoklad does not submit it for you

POST `/v1/payroll/runs/{id}/filings/{kind}/submitted`

Record that a filing was submitted to the authority. DameDoklad does not submit it for you

Nástroj MCP: `mark-payroll-filing-submitted`

### Parametry v cestě

`id` string povinné

`kind` string povinné

### Tělo požadavku

`note` string | null

### Odpověď · 200

`runId` null | string povinné

`kind` string povinné

`submittedAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/submitted \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "note": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/submitted', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "note": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/submitted",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "note": "string"
    },
)
data = response.json()
```

## Přehled o platbě pojistného as the fixed-length file VZP publishes (methodology 3.8.1.2), for VZP only. Other insurers have \`health.xml\`

GET `/v1/payroll/runs/{id}/filings/health.aap`

Přehled o platbě pojistného as the fixed-length file VZP publishes (methodology 3.8.1.2), for VZP only. Other insurers have \`health.xml\`

Nástroj MCP: `get-payroll-health-overview-file`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor text/plain.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.aap \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.aap', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.aap",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Přehled o platbě pojistného for one health insurer as a working paper in PDF. It is not the insurer's own form; VZP also has the file \`health.aap\`

GET `/v1/payroll/runs/{id}/filings/health.pdf`

Přehled o platbě pojistného for one health insurer as a working paper in PDF. It is not the insurer's own form; VZP also has the file \`health.aap\`

Nástroj MCP: `get-payroll-health-overview-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Přehled o platbě pojistného as the shared XML of the insurers (prehledPlatbyZamestnavatele v8), for ČPZP, OZP and ZP MV ČR, which publish it. Valid against the XSD. Refused for an insurer whose own publication of the format was not found

GET `/v1/payroll/runs/{id}/filings/health.xml`

Přehled o platbě pojistného as the shared XML of the insurers (prehledPlatbyZamestnavatele v8), for ČPZP, OZP and ZP MV ČR, which publish it. Valid against the XSD. Refused for an insurer whose own publication of the format was not found

Nástroj MCP: `get-payroll-health-overview-xml`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`insurer` "111" | "201" | "205" | "207" | "209" | "211" | "213" povinné

`type` "radny" | "opravny"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/health.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Export the jednotné měsíční hlášení zaměstnavatele as XML: schema MH 1.4.3.6, or MH 1.5.0.3 for months from January 2027. ČSSZ still calls 1.5 a final draft. Requires a locked run, the ČSSZ variable symbol, IK MPSV, and idPpv

GET `/v1/payroll/runs/{id}/filings/jmhz.xml`

Export the jednotné měsíční hlášení zaměstnavatele as XML: schema MH 1.4.3.6, or MH 1.5.0.3 for months from January 2027. ČSSZ still calls 1.5 a final draft. Requires a locked run, the ČSSZ variable symbol, IK MPSV, and idPpv

Nástroj MCP: `get-payroll-jmhz-xml`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`type` "R" | "O" | "S"

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/jmhz.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/jmhz.xml', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/jmhz.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Přehled o výši pojistného as PDF. From 2026 this is a working paper, the figures are filed in the JMHZ

GET `/v1/payroll/runs/{id}/filings/social.pdf`

Přehled o výši pojistného as PDF. From 2026 this is a working paper, the figures are filed in the JMHZ

Nástroj MCP: `get-payroll-social-overview-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/social.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/social.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/social.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Monthly tax overview as PDF: advances, bonuses, and withholding tax per employee

GET `/v1/payroll/runs/{id}/filings/tax.pdf`

Monthly tax overview as PDF: advances, bonuses, and withholding tax per employee

Nástroj MCP: `get-payroll-tax-overview-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/tax.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/tax.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/filings/tax.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Lock a reviewed run: posts to the books in double entry and creates the payments that fall due

POST `/v1/payroll/runs/{id}/lock`

Lock a reviewed run: posts to the books in double entry and creates the payments that fall due

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `lock-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lock \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lock', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/lock",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Put everything a locked run still owes on payment orders: net pay per employee, deductions, ČSSZ, each insurer, tax. One order per day and bank account, with the published accounts and variable symbols unless settings say otherwise. Payments pair when the statement arrives. A wage to a protected account leaves from the account its confirmation names. What has no account comes back in \`skipped\`

POST `/v1/payroll/runs/{id}/payment-orders`

Put everything a locked run still owes on payment orders: net pay per employee, deductions, ČSSZ, each insurer, tax. One order per day and bank account, with the published accounts and variable symbols unless settings say otherwise. Payments pair when the statement arrives. A wage to a protected account leaves from the account its confirmation names. What has no account comes back in \`skipped\`

Nástroj MCP: `create-payroll-run-payment-orders`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`bankAccountId` string

ID of the bank account. Find it with list-bank-accounts.

### Odpověď · 201

`runId` null | string povinné

`orders` object\[\] povinné

`id` string povinné

`number` integer | null povinné

`executionDate` string povinné date

`totalHaler` integer | null povinné

`itemCount` integer povinné

`skipped` object\[\] povinné

`paymentId` null | string povinné

`kind` string povinné

`recipient` string povinné

`reason` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payment-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payment-orders', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payment-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
data = response.json()
```

## Download the payslip of one employee as PDF

GET `/v1/payroll/runs/{id}/payslips/{itemId}/pdf`

Download the payslip of one employee as PDF

Nástroj MCP: `get-payroll-payslip-pdf`

### Parametry v cestě

`id` string povinné

`itemId` string povinné

ID of the item. Find it with list-items.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## E-mail the payslip PDF to one employee. Only a locked run can be sent

POST `/v1/payroll/runs/{id}/payslips/{itemId}/send`

E-mail the payslip PDF to one employee. Only a locked run can be sent

Nástroj MCP: `send-payroll-payslip`

### Parametry v cestě

`id` string povinné

`itemId` string povinné

ID of the item. Find it with list-items.

### Odpověď · 200

`itemId` null | string povinné

`status` string povinné

`errorCode` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/send \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/send', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/send",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## E-mail payslips to everyone in a locked run who has an address on file

POST `/v1/payroll/runs/{id}/payslips/send`

E-mail payslips to everyone in a locked run who has an address on file

Nástroj MCP: `send-payroll-payslips`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`results` object\[\] povinné

`itemId` null | string povinné

`status` string povinné

`errorCode` string | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/send \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/send', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payslips/send",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Recalculate a draft run from the current contracts, attendance, and deductions

POST `/v1/payroll/runs/{id}/recalculate`

Recalculate a draft run from the current contracts, attendance, and deductions

Nástroj MCP: `recalculate-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/recalculate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/recalculate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/recalculate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Send a run in review back to draft

POST `/v1/payroll/runs/{id}/reopen`

Send a run in review back to draft

Nástroj MCP: `reopen-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Recalculate a draft one last time and move it to review

POST `/v1/payroll/runs/{id}/review`

Recalculate a draft one last time and move it to review

Nástroj MCP: `review-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/review \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/review', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/review",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Unlock a run back to review: reverses its journal entry and removes its payments. Refused once a payment is paid

POST `/v1/payroll/runs/{id}/unlock`

Unlock a run back to review: reverses its journal entry and removes its payments. Refused once a payment is paid

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `unlock-payroll-run`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`year` integer povinné

`month` integer povinné

`period` string povinné

`status` string povinné

`paymentDate` null | string povinné date

`totals` object povinné

`netHaler` integer povinné

`bonusHaler` integer povinné

`grossHaler` integer povinné

`payoutHaler` integer povinné

`advanceHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`employeeCount` integer povinné

`deductionsHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`employerCostHaler` integer povinné

`healthPayableHaler` integer povinné

`socialPayableHaler` integer povinné

`advanceCarryInHaler` integer povinné

`advancePayableHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`withholdingTaxHaler` integer povinné

`advanceCarryOutHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`employerDiscountHaler` integer povinné

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`settlementBonusTopupHaler` integer povinné

`settlementOverpaymentHaler` integer povinné

`socialEmployeeBeforeDiscountHaler` integer povinné

`journalEntryId` null | string povinné

`reviewedAt` null | string povinné date-time

`lockedAt` null | string povinné date-time

`note` null | string povinné

`tipFoodIncomeHaler` integer | null

`items` object\[\]

`object` "payroll\_run\_item" povinné

`id` string povinné

`runId` string povinné

`employeeId` string povinné

`employeeName` string povinné

`healthInsurerCode` null | string povinné

`grossHaler` integer povinné

`taxableHaler` integer povinné

`netHaler` integer povinné

`payoutHaler` integer povinné

`employerCostHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`taxHaler` integer povinné

`bonusHaler` integer povinné

`withholdingHaler` integer povinné

`deductionsHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`result` object povinné

`tax` object povinné

`bonusHaler` integer povinné

`advanceHaler` integer povinné

`advanceBaseHaler` integer povinné

`childCreditHaler` integer povinné

`separateBaseHaler` integer povinné

`advanceTaxableHaler` integer povinné

`personalCreditHaler` integer povinné

`withholdingTaxHaler` integer povinné

`separateAdvanceHaler` integer povinné

`withholdingBaseHaler` integer povinné

`childCreditClaimHaler` integer povinné

`advanceAfterCreditsHaler` integer povinné

`personalCreditClaimHaler` integer povinné

`separateDpp` boolean

`separateOther` boolean

`multiMonth` object

`year` integer povinné

`month` integer | null povinné

`health` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`shortfallHaler` integer povinné

`minimumBaseHaler` integer povinné

`social` object povinné

`baseHaler` integer | null povinné

`employeeHaler` integer povinné

`employerHaler` integer povinné

`employerDiscountReason` any povinné

Null in every recorded response.

`pensionerDiscountHaler` integer povinné

`employerDiscountBaseHaler` integer povinné

`employerDiscountContractId` null | string povinné

`employeeBeforeDiscountHaler` integer povinné

`netHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`amountHaler` integer | null

`deductionId` null | string

`contracts` object\[\] povinné

`type` string povinné

`benefits` object\[\] povinné

`centerOid` null | string povinné

`costShare` integer povinné

`attendance` object povinné

`components` array | null povinné

`contractId` null | string povinné

`grossHaler` integer povinné

`projectOid` any povinné

Null in every recorded response.

`smallScope` boolean | null povinné

`activityOid` any povinné

Null in every recorded response.

`allocations` object\[\] povinné

`participates` boolean povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`healthBaseHaler` integer povinné

`mealExemptHaler` integer povinné

`socialBaseHaler` integer povinné

`averageHourlyHaler` integer | null povinné

`healthEmployeeHaler` integer povinné

`healthEmployerHaler` integer povinné

`socialEmployeeHaler` integer povinné

`socialEmployerHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployerHaler` integer povinné

`insurableHaler` integer

`deductions` object\[\] povinné

`id` null | string povinné

`kind` string povinné

`amountHaler` integer | null povinné

`requestedHaler` integer povinné

`name` null | string

`accountNumber` null | string

`remainingHaler` integer | null

`specificSymbol` string | null

`variableSymbol` null | string

`grossHaler` integer povinné

`settlement` null | object povinné

`id` string povinné

`year` integer povinné

`totalHaler` integer | null povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`payoutHaler` integer povinné

`sickPayHaler` integer povinné

`taxableHaler` integer povinné

`deductionsHaler` integer povinné

`mealExemptHaler` integer povinné

`attachmentLimits` object povinné

`aboveHaler` integer povinné

`thirdHaler` integer povinné

`otherPoolHaler` integer povinné

`protectedHaler` integer povinné

`priorityPoolHaler` integer povinné

`otherExemptHaler` integer povinné

`employerCostHaler` integer povinné

`benefitEmployerHaler` integer povinné

`voucherEmployeeHaler` integer povinné

`voucherEmployerHaler` integer povinné

`reimbursements` object\[\]

`id` string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`travelOrderId` string povinné

`reimbursementHaler` integer

`reimbursementVatHaler` integer

`tipsHaler` integer

`tipExemptHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unlock \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unlock', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/runs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unlock",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Revoke a link at once. Whoever holds it can no longer use it

POST `/v1/payroll/self-service-links/{id}/revoke`

Revoke a link at once. Whoever holds it can no longer use it

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `revoke-payroll-self-service-link`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`scopes` string\[\] povinné

`expiresAt` string povinné date-time

`revokedAt` null | string povinné date-time

`lastUsedAt` null | string povinné date-time

`createdAt` string povinné date-time

`active` boolean povinné

`url` string

`sent` boolean

`events` object\[\]

`action` string povinné

`subjectId` null | string povinné

`at` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/self-service-links/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/revoke \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/self-service-links/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/revoke', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/self-service-links/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/revoke",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Detail: nastavení, mzdy

GET `/v1/payroll/settings`

Get payroll settings: ČSSZ variable symbol, okresní správa, pay day, and accounts for contributions

Nástroj MCP: `get-payroll-settings`

### Odpověď · 200

`id` null | string povinné

`csszVariableSymbol` null | string povinné

`csszDistrictCode` null | string povinné

`taxOfficeCode` null | string povinné

`taxOffice` null | string povinné

`accidentInsurer` null | string povinné

`accidentOkec` null | string povinné

`accidentRatePermille` null | number povinné

`payDay` integer povinné

`socialAccount` null | string povinné

`taxAccount` string | null povinné

`taxVariableSymbol` string | null povinné

`withholdingAccount` string | null povinné

`withholdingVariableSymbol` string | null povinné

`healthAccounts` object povinné

`notificationEmail` string | null povinné

`taxWorkplaceCode` null | string povinné

`taxSubjectType` string povinné

`taxSubjectFirstName` string | null povinné

`taxSubjectLastName` string | null povinné

`contactName` null | string povinné

`contactPhone` null | string povinné

`contactEmail` null | string povinné

`vzpBranch` string povinné

`ownershipForm` null | string povinné

`collectiveAgreements` string\[\] povinné

`disabledQuota` null | object povinné

`disabledFte` integer povinné

`employeesFte` number povinné

`sharePercent` number povinné

```bash
curl https://api.damedoklad.cz/v1/payroll/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settings', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: nastavení, mzdy

PUT `/v1/payroll/settings`

Save payroll settings. An account entered here wins over the one the office publishes. An insurer and a rate here drive the statutory liability insurance

Nástroj MCP: `update-payroll-settings`

### Tělo požadavku

`csszVariableSymbol` string | null

`csszDistrictCode` string | null

`taxOfficeCode` string | null

`accidentInsurer` "kooperativa" | "generali" | null

`accidentOkec` string | null

`accidentRatePermille` number | null

`taxOffice` "praha" | "stredocesky" | "jihocesky" | "plzensky" | "karlovarsky" | "ustecky" | "liberecky" | "kralovehradecky" | "pardubicky" | "vysocina" | "jihomoravsky" | "olomoucky" | "moravskoslezsky" | "zlinsky" | "specializovany" | null

`payDay` integer min 1 max 28

`socialAccount` string | null

`taxAccount` string | null

`taxVariableSymbol` string | null

`withholdingAccount` string | null

`withholdingVariableSymbol` string | null

`healthAccounts` object

`notificationEmail` string | null

`taxWorkplaceCode` string | null

`taxSubjectType` "P" | "F"

`taxSubjectFirstName` string | null

`taxSubjectLastName` string | null

`contactName` string | null

`contactPhone` string | null

`contactEmail` string | null

`vzpBranch` string

`ownershipForm` "1" | "2" | "3" | "4" | null

`collectiveAgreements` "1" | "2" | "3" | "4" | "5"\[\]

`disabledQuota` object | null

`employeesFte` number povinné min 0

`disabledFte` number povinné min 0

`sharePercent` number povinné min 0 max 100

### Odpověď · 200

`id` null | string povinné

`csszVariableSymbol` null | string povinné

`csszDistrictCode` null | string povinné

`taxOfficeCode` null | string povinné

`taxOffice` null | string povinné

`accidentInsurer` null | string povinné

`accidentOkec` null | string povinné

`accidentRatePermille` null | number povinné

`payDay` integer povinné

`socialAccount` null | string povinné

`taxAccount` string | null povinné

`taxVariableSymbol` string | null povinné

`withholdingAccount` string | null povinné

`withholdingVariableSymbol` string | null povinné

`healthAccounts` object povinné

`notificationEmail` string | null povinné

`taxWorkplaceCode` null | string povinné

`taxSubjectType` string povinné

`taxSubjectFirstName` string | null povinné

`taxSubjectLastName` string | null povinné

`contactName` null | string povinné

`contactPhone` null | string povinné

`contactEmail` null | string povinné

`vzpBranch` string povinné

`ownershipForm` null | string povinné

`collectiveAgreements` string\[\] povinné

`disabledQuota` null | object povinné

`disabledFte` integer povinné

`employeesFte` number povinné

`sharePercent` number povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/payroll/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "csszVariableSymbol": "string",
  "csszDistrictCode": "string",
  "taxOfficeCode": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "csszVariableSymbol": "string",
    "csszDistrictCode": "string",
    "taxOfficeCode": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/payroll/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "csszVariableSymbol": "string",
        "csszDistrictCode": "string",
        "taxOfficeCode": "string"
    },
)
data = response.json()
```

## List annual tax settlements (roční zúčtování) by tax year and status

GET `/v1/payroll/settlements`

List annual tax settlements (roční zúčtování) by tax year and status

Nástroj MCP: `list-payroll-tax-settlements`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`year` integer min 2000 max 2100

`status` "requested" | "calculated" | "approved" | "paid" | "closed"

### Odpověď · 200

`data` any\[\] povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/settlements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/settlements",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record an employee's request for an annual tax settlement, with deductions, credits, and documents from previous payers

POST `/v1/payroll/settlements`

Record an employee's request for an annual tax settlement, with deductions, credits, and documents from previous payers

Nástroj MCP: `create-payroll-tax-settlement`

### Tělo požadavku

`employeeId` string povinné

ID of the employee.

`taxYear` integer povinné min -9007199254740991 max 9007199254740991

`requestedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`inputs` object

`previousPayers` object\[\]

`name` string povinné max 200 chars

`incomeHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`advancesHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`bonusesHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`documentReceivedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`filesReturn` boolean

`otherConcurrentPayer` boolean

`deductions` object

`donationsHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestMonths` integer min 0 max 12

`pensionSupplementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`supplementaryPensionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionInstitutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`lifeInsuranceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermInvestmentHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermCareHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`credits` object

`stoppedExecutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`spouseMonths` integer min 0 max 12

`spouseZtppMonths` integer min 0 max 12

`disabilityFirstSecondMonths` integer min 0 max 12

`disabilityThirdMonths` integer min 0 max 12

`ztppMonths` integer min 0 max 12

`studentMonths` integer min 0 max 12

`childPlacement` object\[\]

`childName` string max 200 chars

`spentHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`households` integer min 1 max 10

`agreedCapHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`spouse` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`children` object\[\] | null

`months` integer povinné min 0 max 12

`ztppMonths` integer min 0 max 12

### Odpověď · 201

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/settlements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "taxYear": 2026
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "taxYear": 2026
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/settlements",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "taxYear": 2026
    },
)
data = response.json()
```

## Get one annual tax settlement with its calculation by the rows of tiskopis 25 5460/1

GET `/v1/payroll/settlements/{id}`

Get one annual tax settlement with its calculation by the rows of tiskopis 25 5460/1

Nástroj MCP: `get-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Change the request date or the inputs of a settlement that is not approved. Any calculation must be run again

PATCH `/v1/payroll/settlements/{id}`

Change the request date or the inputs of a settlement that is not approved. Any calculation must be run again

Nástroj MCP: `update-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`requestedOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`inputs` object

`previousPayers` object\[\]

`name` string povinné max 200 chars

`incomeHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`advancesHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`bonusesHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`documentReceivedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`filesReturn` boolean

`otherConcurrentPayer` boolean

`deductions` object

`donationsHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestMonths` integer min 0 max 12

`pensionSupplementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`supplementaryPensionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionInstitutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`lifeInsuranceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermInvestmentHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermCareHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`credits` object

`stoppedExecutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`spouseMonths` integer min 0 max 12

`spouseZtppMonths` integer min 0 max 12

`disabilityFirstSecondMonths` integer min 0 max 12

`disabilityThirdMonths` integer min 0 max 12

`ztppMonths` integer min 0 max 12

`studentMonths` integer min 0 max 12

`childPlacement` object\[\]

`childName` string max 200 chars

`spentHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`households` integer min 1 max 10

`agreedCapHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`spouse` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`children` object\[\] | null

`months` integer povinné min 0 max 12

`ztppMonths` integer min 0 max 12

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "requestedOn": "2026-10-30",
  "inputs": {
    "previousPayers": [
      {
        "name": "Pekárna U Lípy s.r.o.",
        "incomeHaler": 1210000,
        "advancesHaler": 1210000,
        "documentReceivedOn": "2026-10-30"
      }
    ],
    "filesReturn": false,
    "otherConcurrentPayer": false
  }
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "requestedOn": "2026-10-30",
    "inputs": {
      "previousPayers": [
        {
          "name": "Pekárna U Lípy s.r.o.",
          "incomeHaler": 1210000,
          "advancesHaler": 1210000,
          "documentReceivedOn": "2026-10-30"
        }
      ],
      "filesReturn": false,
      "otherConcurrentPayer": false
    }
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "requestedOn": "2026-10-30",
        "inputs": {
            "previousPayers": [
                {
                    "name": "Pekárna U Lípy s.r.o.",
                    "incomeHaler": 1210000,
                    "advancesHaler": 1210000,
                    "documentReceivedOn": "2026-10-30"
                }
            ],
            "filesReturn": False,
            "otherConcurrentPayer": False
        }
    },
)
data = response.json()
```

## Delete a settlement that has not been approved

DELETE `/v1/payroll/settlements/{id}`

Delete a settlement that has not been approved

Nevratná operaceTato operace se nedá vrátit. MCP klienti se před ní ptají na potvrzení.

Nástroj MCP: `delete-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.delete(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Approve a calculated settlement. A refund is then paid by the next payroll run that locks; with nothing to pay the settlement closes

POST `/v1/payroll/settlements/{id}/approve`

Approve a calculated settlement. A refund is then paid by the next payroll run that locks; with nothing to pay the settlement closes

Nástroj MCP: `approve-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/approve",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Calculate the settlement from the locked months of the tax year and the entered inputs. Returns whatever bars it in \`problems\`

POST `/v1/payroll/settlements/{id}/calculate`

Calculate the settlement from the locked months of the tax year and the entered inputs. Returns whatever bars it in \`problems\`

Nástroj MCP: `calculate-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculate",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Výpočet daně a daňového zvýhodnění of a settlement as PDF, by the rows of tiskopis 25 5460/1 vzor 29. The rows match, the page is not the printed form

GET `/v1/payroll/settlements/{id}/calculation.pdf`

Výpočet daně a daňového zvýhodnění of a settlement as PDF, by the rows of tiskopis 25 5460/1 vzor 29. The rows match, the page is not the printed form

Nástroj MCP: `get-payroll-tax-settlement-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculation.pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculation.pdf', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/calculation.pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Return an approved settlement to calculated. Refused once a locked run has paid it: unlock that run first

POST `/v1/payroll/settlements/{id}/reopen`

Return an approved settlement to calculated. Refused once a locked run has paid it: unlock that run first

Nástroj MCP: `reopen-payroll-tax-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`employeeId` string povinné

`employeeName` string povinné

`taxYear` integer povinné

`status` string povinné

`requestedOn` string povinné date

`source` string povinné

`deadlines` object povinné

`requestBy` string povinné date

`calculateBy` string povinné date

`payWithWageOf` object povinné

`year` integer povinné

`month` integer | null povinné

`inputs` object povinné

`deductions` object

`interestHaler` integer povinné

`lifeInsuranceHaler` integer

`previousPayers` object\[\]

`name` null | string povinné

`incomeHaler` integer povinné

`advancesHaler` integer povinné

`documentReceivedOn` string povinné date

`spouse` null | object povinné

`lastName` null | string povinné

`firstName` null | string povinné

`birthNumberMasked` null | string povinné

`credits` object

`spouseMonths` integer povinné

`children` object\[\]

`months` integer povinné

`result` null | object povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`r23` integer

`r24` integer

`r25` integer

`r26` integer

`r27` integer

`r28` integer

`r29` integer

`r30` integer

`r31` integer

`r32a` integer

`r32b` integer

`year` integer povinné

`months` integer povinné

`credits` object povinné

`ztppMonths` integer povinné

`disabilityThirdMonths` integer povinné

`disabilityFirstSecondMonths` integer povinné

`studentMonths` integer

`spouseMonths` integer

`children` object\[\] povinné

`months` integer povinné

`ztppMonths` integer

`problems` object\[\] povinné

`code` null | string povinné

`text` string povinné

`payoutHaler` integer povinné

`balanceHaler` integer povinné

`shortfallHaler` integer povinné

`bonusTopupHaler` integer povinné

`overpaymentHaler` integer povinné

`belowPayoutMinimum` boolean povinné

`formPending` boolean

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`calculatedAt` null | string povinné date-time

`approvedAt` null | string povinné date-time

`payoutRunId` null | string povinné

`paidAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Work out a settlement without recording it, also for a year whose form is not published yet (2027), with the student credit and the child placement credit (§ 35bc, § 35bd ZDP). Nothing is stored and no form or filing comes of it: \`formPending\` says so

POST `/v1/payroll/settlements/preview`

Work out a settlement without recording it, also for a year whose form is not published yet (2027), with the student credit and the child placement credit (§ 35bc, § 35bd ZDP). Nothing is stored and no form or filing comes of it: \`formPending\` says so

Nástroj MCP: `preview-payroll-tax-settlement`

### Tělo požadavku

`employeeId` string povinné

ID of the employee.

`taxYear` integer povinné min -9007199254740991 max 9007199254740991

`inputs` object

`previousPayers` object\[\]

`name` string povinné max 200 chars

`incomeHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`advancesHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`bonusesHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`documentReceivedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`filesReturn` boolean

`otherConcurrentPayer` boolean

`deductions` object

`donationsHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`interestMonths` integer min 0 max 12

`pensionSupplementHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`supplementaryPensionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`pensionInstitutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`lifeInsuranceHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermInvestmentHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`longTermCareHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`credits` object

`stoppedExecutionHaler` integer min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`spouseMonths` integer min 0 max 12

`spouseZtppMonths` integer min 0 max 12

`disabilityFirstSecondMonths` integer min 0 max 12

`disabilityThirdMonths` integer min 0 max 12

`ztppMonths` integer min 0 max 12

`studentMonths` integer min 0 max 12

`childPlacement` object\[\]

`childName` string max 200 chars

`spentHaler` integer povinné min 0 max 9007199254740991

Integer amount in haléře: 100 = 1 Kč.

`households` integer min 1 max 10

`agreedCapHaler` integer | null

Integer amount in haléře: 100 = 1 Kč.

`spouse` object | null

`firstName` string povinné max 200 chars

`lastName` string povinné max 200 chars

`birthNumber` string | null

`birthDate` string | null

Date as YYYY-MM-DD.

`ztpp` boolean

`children` object\[\] | null

`months` integer povinné min 0 max 12

`ztppMonths` integer min 0 max 12

### Odpověď · 200

`employeeId` null | string povinné

`taxYear` integer povinné

`months` integer povinné

`year` integer povinné

`formPending` boolean povinné

`rows` object povinné

`r1` integer povinné

`r2` integer povinné

`r3` integer povinné

`r4` integer povinné

`r5` integer povinné

`r6` integer povinné

`r7` integer povinné

`r8` integer povinné

`r9` integer povinné

`r10` integer povinné

`r11` integer povinné

`r12` integer povinné

`r13` integer povinné

`r14` integer povinné

`r15` integer povinné

`r16` integer povinné

`r17` integer povinné

`r18` integer povinné

`r19` integer povinné

`r20` integer povinné

`r21` integer povinné

`r22` integer povinné

`studentCreditHaler` integer povinné

`childPlacementHaler` integer povinné

`r23` integer povinné

`overpaymentHaler` integer povinné

`bonusTopupHaler` integer povinné

`payoutHaler` integer povinné

`shortfallHaler` integer povinné

`balanceHaler` integer povinné

`belowPayoutMinimum` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/settlements/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "taxYear": 2026
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/settlements/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "taxYear": 2026
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/settlements/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "employeeId": "yee_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "taxYear": 2026
    },
)
data = response.json()
```

## List eNeschopenka sick notes

GET `/v1/payroll/sick-notes`

List eNeschopenka sick notes

Nástroj MCP: `list-payroll-sick-notes`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`status` "open" | "closed" | "cancelled"

### Odpověď · 200

`data` object\[\] povinné

`object` "payroll\_sick\_note" povinné

`id` string povinné

`employeeId` null | string povinné

`decisionNumber` string povinné

`name` null | string povinné

`birthDate` null | string povinné date

`from` string povinné date

`to` string povinné date

`status` string povinné

`workAccident` boolean povinné

`note` null | string povinné

`insertedAt` string | null povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

More rows follow. Ask again with offset + the number of rows received.

```bash
curl https://api.damedoklad.cz/v1/payroll/sick-notes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/sick-notes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## HZUPN20: the employer's report when a sick note ends (§ 97 odst. 4 zák. 187/2006 Sb.), valid against the ČSSZ XSD. You send it: nothing goes to ČSSZ from here

POST `/v1/payroll/sick-notes/{id}/hzupn.xml`

HZUPN20: the employer's report when a sick note ends (§ 97 odst. 4 zák. 187/2006 Sb.), valid against the ČSSZ XSD. You send it: nothing goes to ČSSZ from here

Nástroj MCP: `create-payroll-sick-end-xml`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`returned` boolean povinné

`returnDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`reason` string max 200 chars

`hoursWorked` number min 0 max 24

`shiftHours` number min 0 max 24

`workedIntervals` object\[\]

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`correction` boolean

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/sick-notes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/hzupn.xml \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "returned": false
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/hzupn.xml', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "returned": false
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/hzupn.xml",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "returned": False
    },
)
content = response.content
```

## Whether eNeschopenka notifications can be read straight from ČSSZ (DZDPN20-V2), on which channel, and the latest queries. Off unless the operator enabled it

GET `/v1/payroll/sick-notes/direct`

Whether eNeschopenka notifications can be read straight from ČSSZ (DZDPN20-V2), on which channel, and the latest queries. Off unless the operator enabled it

Nástroj MCP: `get-payroll-dzdpn-status`

### Odpověď · 200

`enabled` boolean povinné

`channelEnabled` boolean povinné

`mode` null | string povinné

`certificateSubject` null | string povinné

`certificateNotAfter` null | string povinné date-time

`queries` object\[\] povinné

`object` "payroll\_dzdpn\_query" povinné

`id` string povinné

`from` string povinné date

`to` string povinné date

`mode` string povinné

`status` string povinné

`message` null | string povinné

`notificationCount` integer povinné

`importedCount` integer povinné

`createdAt` string povinné date-time

`answeredAt` null | string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/payroll/sick-notes/direct \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/direct', {
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.get(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/direct",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Ask ČSSZ for the eNeschopenka notifications of up to 31 days (DZDPN20-V2), signed and encrypted over the cssz\_vrep channel. ČSSZ answers later: read it with the poll operation. ČSSZ refuses a repeated request the same day, and so does the app

POST `/v1/payroll/sick-notes/direct`

Ask ČSSZ for the eNeschopenka notifications of up to 31 days (DZDPN20-V2), signed and encrypted over the cssz\_vrep channel. ČSSZ answers later: read it with the poll operation. ČSSZ refuses a repeated request the same day, and so does the app

Nástroj MCP: `create-payroll-dzdpn-query`

### Tělo požadavku

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`from` string povinné date

`to` string povinné date

`mode` string povinné

`status` string povinné

`message` null | string povinné

`notificationCount` integer povinné

`importedCount` integer povinné

`createdAt` string povinné date-time

`answeredAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/sick-notes/direct \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "from": "2026-10-30",
  "to": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/direct', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "from": "2026-10-30",
    "to": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/direct",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "from": "2026-10-30",
        "to": "2026-10-30"
    },
)
data = response.json()
```

## See whether ČSSZ has answered a query. An answer is decrypted, read into sick notes as a file import would be, and the transaction closed. What was imported is matched to employees; the answer itself is not stored

POST `/v1/payroll/sick-notes/direct/{id}/poll`

See whether ČSSZ has answered a query. An answer is decrypted, read into sick notes as a file import would be, and the transaction closed. What was imported is matched to employees; the answer itself is not stored

Nástroj MCP: `poll-payroll-dzdpn-query`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`from` string povinné date

`to` string povinné date

`mode` string povinné

`status` string povinné

`message` null | string povinné

`notificationCount` integer povinné

`importedCount` integer povinné

`createdAt` string povinné date-time

`answeredAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/sick-notes/direct/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/poll \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/direct/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/poll', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
  },
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/direct/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/poll",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Read eNeschopenka notifications from ČSSZ, a data box XML or a DZDPN20-V2 answer, into sick notes, and match them to employees. Importing the same file again changes nothing. Nothing goes to ČSSZ

POST `/v1/payroll/sick-notes/import`

Read eNeschopenka notifications from ČSSZ, a data box XML or a DZDPN20-V2 answer, into sick notes, and match them to employees. Importing the same file again changes nothing. Nothing goes to ČSSZ

Nástroj MCP: `import-payroll-sick-notes`

### Tělo požadavku

`xml` string povinné max 5000000 chars

### Odpověď · 201

`notificationCount` integer povinné

`imported` integer povinné

`updated` integer povinné

`ignored` integer povinné

`unmatched` object\[\] povinné

`object` "payroll\_sick\_note" povinné

`id` string povinné

`employeeId` null | string povinné

`decisionNumber` string povinné

`name` null | string povinné

`birthDate` null | string povinné date

`from` string povinné date

`to` string povinné date

`status` string povinné

`workAccident` boolean povinné

`note` null | string povinné

`insertedAt` string | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/sick-notes/import \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "xml": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/import', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "xml": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/import",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "xml": "string"
    },
)
data = response.json()
```

## Mark the days of matched sick notes as sick in attendance. An open note runs to today, so inserting again extends it. A locked month or another absence on the day is left alone and reported

POST `/v1/payroll/sick-notes/insert`

Mark the days of matched sick notes as sick in attendance. An open note runs to today, so inserting again extends it. A locked month or another absence on the day is left alone and reported

Nástroj MCP: `insert-payroll-sick-notes`

### Tělo požadavku

`noteIds` string\[\]

### Odpověď · 200

`insertedCount` integer povinné

`results` object\[\] povinné

`id` string povinné

`name` null | string povinné

`conflicts` string\[\] povinné

`lockedMonths` string\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/payroll/sick-notes/insert \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "noteIds": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payroll/sick-notes/insert', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "noteIds": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payroll/sick-notes/insert",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "noteIds": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ]
    },
)
data = response.json()
```
