# Účetnictví · API DameDokladu

> Operace ve skupině Účetnictví.

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

# Účetnictví

Operace ve skupině Účetnictví.

## Whether the books follow the business decree 500/2002 Sb., the non-profit decree 504/2002 Sb., or the contributory organisation forms of 410/2009 Sb.

GET `/v1/ledger/accounting-kind`

Whether the books follow the business decree 500/2002 Sb., the non-profit decree 504/2002 Sb., or the contributory organisation forms of 410/2009 Sb.

Nástroj MCP: `get-accounting-kind`

### Odpověď · 200

`kind` string povinné

`regime` string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/accounting-kind \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounting-kind', {
  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/ledger/accounting-kind",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set the books to the business, non-profit (504/2002 Sb.), or contributory organisation (410/2009 Sb.) chart and statements. Only while the books are empty

POST `/v1/ledger/accounting-kind`

Set the books to the business, non-profit (504/2002 Sb.), or contributory organisation (410/2009 Sb.) chart and statements. Only while the books are empty. Podvojné účetnictví only. It seeds the chart, the activities Hlavní and Hospodářská činnost, and the closing accounts of that decree: 961, 962, 963 for a non-profit, 491, 492, 493 for a contributory organisation.

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

Nástroj MCP: `set-accounting-kind`

### Tělo požadavku

`kind` "business" | "nonprofit" | "contributory" povinné

`confirm` true povinné

### Odpověď · 200

`kind` string povinné

`regime` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/accounting-kind \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "business",
  "confirm": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounting-kind', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "business",
    "confirm": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/accounting-kind",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "business",
        "confirm": True
    },
)
data = response.json()
```

## Seznam: účet

GET `/v1/ledger/accounts`

List the chart of accounts (účtová osnova), seeded with Czech synthetic accounts, plus analytic accounts

Nástroj MCP: `list-accounts`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`type` "asset" | "liability" | "expense" | "revenue" | "closing" | "off\_balance"

`active` "true" | "false"

### Odpověď · 200

`data` object\[\] povinné

`object` "account" povinné

`id` string povinné

`number` string povinné

`name` string povinné

`nameEn` null | string povinné

`type` string povinné

`isTaxable` boolean povinné

`isSystem` boolean povinné

`isActive` boolean povinné

`isAnalytic` boolean povinné

`statementRow` null | string povinné

`functionRow` null | string povinné

`trackSaldo` boolean 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/ledger/accounts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounts', {
  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/ledger/accounts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: účet

POST `/v1/ledger/accounts`

Create an analytic account under a synthetic one (343100) or a new synthetic account

Nástroj MCP: `create-account`

### Tělo požadavku

`number` string povinné

`name` string povinné max 200 chars

`nameEn` string max 200 chars

`type` "asset" | "liability" | "expense" | "revenue" | "closing" | "off\_balance"

`isTaxable` boolean

`statementRow` string max 24 chars

### Odpověď · 201

`id` string povinné

`number` string povinné

`name` string povinné

`nameEn` null | string povinné

`type` string povinné

`isTaxable` boolean povinné

`isSystem` boolean povinné

`isActive` boolean povinné

`isAnalytic` boolean povinné

`statementRow` null | string povinné

`functionRow` null | string povinné

`trackSaldo` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounts', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "number": "518",
    "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/ledger/accounts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "number": "518",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Úprava: účet

PATCH `/v1/ledger/accounts/{id}`

Update an account you created. System synthetic accounts are read-only

Nástroj MCP: `update-account`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`nameEn` string max 200 chars

`isTaxable` boolean

`isActive` boolean

`statementRow` string | null

`functionRow` string | null

`trackSaldo` boolean

### Odpověď · 200

`id` string povinné

`number` string povinné

`name` string povinné

`nameEn` null | string povinné

`type` string povinné

`isTaxable` boolean povinné

`isSystem` boolean povinné

`isActive` boolean povinné

`isAnalytic` boolean povinné

`statementRow` null | string povinné

`functionRow` null | string povinné

`trackSaldo` boolean povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "nameEn": "Pekárna U Lípy s.r.o.",
  "isTaxable": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounts/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.",
    "nameEn": "Pekárna U Lípy s.r.o.",
    "isTaxable": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "nameEn": "Pekárna U Lípy s.r.o.",
        "isTaxable": False
    },
)
data = response.json()
```

## Smazání: účet

DELETE `/v1/ledger/accounts/{id}`

Delete an unused account you created

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

Nástroj MCP: `delete-account`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accounts/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/ledger/accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List časové rozlišení and dohadné položky with what is posted and what remains

GET `/v1/ledger/accruals`

List časové rozlišení and dohadné položky with what is posted and what remains

Nástroj MCP: `list-accrual-schedules`

### 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` "active" | "finished" | "cancelled"

### Odpověď · 200

`data` object\[\] povinné

`object` "accrual\_schedule" povinné

`id` string povinné

`kind` string povinné

`name` string povinné

`totalHaler` integer povinné

`balanceAccount` string povinné

`resultAccount` string povinné

`startMonth` string povinné

`months` integer povinné

`reverseOn` null | string povinné date

`initialEntryId` null | string povinné

`contactId` string | null povinné

`centerId` string | null povinné

`activityId` string | null povinné

`projectId` string | null povinné

`status` string povinné

`createdAt` string povinné date-time

`postedHaler` integer povinné

`remainingHaler` integer | null povinné

`nextDueOn` null | string povinné date

`lines` object\[\] povinné

`id` string povinné

`position` integer | null povinné

`kind` string povinné

`dueOn` null | string povinné date

`amountHaler` integer | null povinné

`entryId` null | string povinné

`postedAt` null | 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/ledger/accruals \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accruals', {
  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/ledger/accruals",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Schedule monthly entries for 381, 383, 384, or 385, or one estimate on 388 or 389 with an optional reversal. Whatever is already due posts at once

POST `/v1/ledger/accruals`

Schedule monthly entries for 381, 383, 384, or 385, or one estimate on 388 or 389 with an optional reversal. Whatever is already due posts at once. Set initialEntryDate when the document was booked straight to the result, so the whole amount moves to 381 or 384 first. The plan is equal months on the last day of each month, and the last month takes the rounding.

Nástroj MCP: `create-accrual-schedule`

### Tělo požadavku

`kind` "prepaid\_expense" | "accrued\_expense" | "deferred\_revenue" | "accrued\_revenue" | "estimated\_payable" | "estimated\_receivable" povinné

`name` string povinné max 200 chars

`totalHaler` integer povinné max 9007199254740991

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

`resultAccount` string povinné

`balanceAccount` string

`startMonth` string povinné

`months` integer min 1 max 120

`reverseOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`initialEntryDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

### Odpověď · 201

`id` string povinné

`kind` string povinné

`name` string povinné

`totalHaler` integer povinné

`balanceAccount` string povinné

`resultAccount` string povinné

`startMonth` string povinné

`months` integer povinné

`reverseOn` null | string povinné date

`initialEntryId` null | string povinné

`contactId` string | null povinné

`centerId` string | null povinné

`activityId` string | null povinné

`projectId` string | null povinné

`status` string povinné

`createdAt` string povinné date-time

`postedHaler` integer povinné

`remainingHaler` integer | null povinné

`nextDueOn` null | string povinné date

`lines` object\[\] povinné

`id` string povinné

`position` integer | null povinné

`kind` string povinné

`dueOn` null | string povinné date

`amountHaler` integer | null povinné

`entryId` null | string povinné

`postedAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/accruals \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "prepaid_expense",
  "name": "Pekárna U Lípy s.r.o.",
  "totalHaler": 1210000,
  "resultAccount": "518",
  "startMonth": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accruals', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "kind": "prepaid_expense",
    "name": "Pekárna U Lípy s.r.o.",
    "totalHaler": 1210000,
    "resultAccount": "518",
    "startMonth": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/accruals",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "prepaid_expense",
        "name": "Pekárna U Lípy s.r.o.",
        "totalHaler": 1210000,
        "resultAccount": "518",
        "startMonth": "2026-10-30"
    },
)
data = response.json()
```

## Stop an accrual schedule. Rows already posted stay in the books; reverse them in the journal if they should go too

DELETE `/v1/ledger/accruals/{id}`

Stop an accrual schedule. Rows already posted stay in the books; reverse them in the journal if they should go too

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

Nástroj MCP: `cancel-accrual-schedule`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`kind` string povinné

`name` string povinné

`totalHaler` integer povinné

`balanceAccount` string povinné

`resultAccount` string povinné

`startMonth` string povinné

`months` integer povinné

`reverseOn` null | string povinné date

`initialEntryId` null | string povinné

`contactId` string | null povinné

`centerId` string | null povinné

`activityId` string | null povinné

`projectId` string | null povinné

`status` string povinné

`createdAt` string povinné date-time

`postedHaler` integer povinné

`remainingHaler` integer | null povinné

`nextDueOn` null | string povinné date

`lines` object\[\] povinné

`id` string povinné

`position` integer | null povinné

`kind` string povinné

`dueOn` null | string povinné date

`amountHaler` integer | null povinné

`entryId` null | string povinné

`postedAt` null | string povinné date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/accruals/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/ledger/accruals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Post every planned accrual row due by a date, for example everything up to the year end

POST `/v1/ledger/accruals/run`

Post every planned accrual row due by a date, for example everything up to the year end

Nástroj MCP: `run-due-accruals`

### Tělo požadavku

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`posted` integer povinné

`skipped` object\[\] povinné

`scheduleId` string povinné

`dueOn` null | string povinné date

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/accruals/run \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/accruals/run",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## List opravné položky with their balance, statutory and accounting ones apart

GET `/v1/ledger/allowances`

List opravné položky with their balance, statutory and accounting ones apart

Nástroj MCP: `list-allowances`

### 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` "allowance" povinné

`id` string povinné

`kind` string povinné

`targetType` string povinné

`legalBasis` null | string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`contactId` null | string povinné

`label` null | string povinné

`allowanceAccount` string povinné

`costAccount` string povinné

`baseHaler` integer | null povinné

`balanceHaler` integer povinné

`createdAt` string povinné date-time

`operations` object\[\] povinné

`object` "allowance\_operation" povinné

`id` string povinné

`allowanceId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer | null povinné

`reason` null | string povinné

`note` null | string povinné

`journalEntryId` null | string povinné

`reversed` boolean 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/ledger/allowances \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances', {
  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/ledger/allowances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create an opravná položka to a receivable or an asset and post MD 558 or 559 / D the allowance account

POST `/v1/ledger/allowances`

Create an opravná položka to a receivable or an asset and post MD 558 or 559 / D the allowance account. Statutory ones (zákon 593/1992 Sb.) are for receivables, are checked against § 8, § 8a, and § 8c, and are a tax cost. Accounting ones are not a tax cost and reach the income tax worksheet.

Nástroj MCP: `create-allowance`

### Tělo požadavku

`kind` "statutory" | "accounting" povinné

`targetType` "receivable" | "fixed\_intangible" | "fixed\_tangible" | "in\_progress\_intangible" | "in\_progress\_tangible" | "advance\_paid" | "financial" | "material" | "work\_in\_progress" | "semi\_finished" | "products" | "animals" | "goods" povinné

`legalBasis` "8" | "8a" | "8c"

`documentType` "invoice" | "other\_receivable" | "debit\_note"

`documentId` string

ID of the document.

`contactId` string

ID of the contact. Find it with list-contacts.

`label` string max 240 chars

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné max 9007199254740991

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

`costAccount` string

`note` string max 240 chars

`insolvencyFiled` boolean

`notRelatedParty` boolean

### Odpověď · 201

`id` string povinné

`kind` string povinné

`targetType` string povinné

`legalBasis` null | string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`contactId` null | string povinné

`label` null | string povinné

`allowanceAccount` string povinné

`costAccount` string povinné

`baseHaler` integer | null povinné

`balanceHaler` integer povinné

`createdAt` string povinné date-time

`operations` object\[\] povinné

`object` "allowance\_operation" povinné

`id` string povinné

`allowanceId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer | null povinné

`reason` null | string povinné

`note` null | string povinné

`journalEntryId` null | string povinné

`reversed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/allowances \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "statutory",
  "targetType": "receivable",
  "date": "2026-10-30",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "kind": "statutory",
    "targetType": "receivable",
    "date": "2026-10-30",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/allowances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "statutory",
        "targetType": "receivable",
        "date": "2026-10-30",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Take back an allowance operation with a reversal entry. A newer operation has to go first

POST `/v1/ledger/allowances/{id}/operations/{operationId}/reverse`

Take back an allowance operation with a reversal entry. A newer operation has to go first

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

Nástroj MCP: `reverse-allowance-operation`

### Parametry v cestě

`id` string povinné

`operationId` string povinné

ID of the operation.

### Odpověď · 200

`id` string povinné

`kind` string povinné

`targetType` string povinné

`legalBasis` null | string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`contactId` null | string povinné

`label` null | string povinné

`allowanceAccount` string povinné

`costAccount` string povinné

`baseHaler` integer | null povinné

`balanceHaler` integer povinné

`createdAt` string povinné date-time

`operations` object\[\] povinné

`object` "allowance\_operation" povinné

`id` string povinné

`allowanceId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer | null povinné

`reason` null | string povinné

`note` null | string povinné

`journalEntryId` null | string povinné

`reversed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/allowances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/operations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/operations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse', {
  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/ledger/allowances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/operations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Settle an opravná položka, in part or whole, when the receivable is paid or written off or the reason ends: MD allowance / D 558 or 559

POST `/v1/ledger/allowances/{id}/settle`

Settle an opravná položka, in part or whole, when the receivable is paid or written off or the reason ends: MD allowance / D 558 or 559. Writing off the receivable itself is createReceivableWriteOff, which settles its allowances on the way.

Nástroj MCP: `settle-allowance`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné max 9007199254740991

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

`reason` "paid" | "written\_off" | "lapsed" | "no\_longer\_justified" | "other" povinné

`note` string max 240 chars

### Odpověď · 201

`id` string povinné

`kind` string povinné

`targetType` string povinné

`legalBasis` null | string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`contactId` null | string povinné

`label` null | string povinné

`allowanceAccount` string povinné

`costAccount` string povinné

`baseHaler` integer | null povinné

`balanceHaler` integer povinné

`createdAt` string povinné date-time

`operations` object\[\] povinné

`object` "allowance\_operation" povinné

`id` string povinné

`allowanceId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer | null povinné

`reason` null | string povinné

`note` null | string povinné

`journalEntryId` null | string povinné

`reversed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/allowances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settle \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "amountHaler": 1210000,
  "reason": "paid"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/allowances/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/settle",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30",
        "amountHaler": 1210000,
        "reason": "paid"
    },
)
data = response.json()
```

## Unpaid receivables at a date, with the statutory allowance each one could have: § 8a at more than 18 or 30 months, § 8c for small claims

GET `/v1/ledger/allowances/candidates`

Unpaid receivables at a date, with the statutory allowance each one could have: § 8a at more than 18 or 30 months, § 8c for small claims. What the books show. Whether the debtor is a related person, or is in insolvency, you confirm when creating the allowance.

Nástroj MCP: `get-allowance-candidates`

### Parametry dotazu

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`rows` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`number` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dueDate` null | string povinné date

`originalHaler` integer povinné

`unpaidHaler` integer povinné

`monthsPastDue` integer povinné

`statutoryBalanceHaler` integer povinné

`accountingBalanceHaler` integer povinné

`statutoryOptions` object\[\] povinné

`basis` string povinné

`percent` integer | null povinné

`maxHaler` integer povinné

`roomHaler` integer povinné

`hasDueDebtToDebtor` boolean povinné

`currency` null | string

`exchangeRate` null | string

`unpaidDocumentHaler` integer

`limitation` object

`basis` string povinné

`limitationDate` string povinné date

`daysLeft` integer povinné

`state` string povinné

`facts` any povinné

Null in every recorded response.

`allowanceToRelease` boolean

```bash
curl https://api.damedoklad.cz/v1/ledger/allowances/candidates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/candidates', {
  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/ledger/allowances/candidates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Promlčení of unpaid receivables at a date: when each one is time-barred, on what basis, and which allowances that cancels

GET `/v1/ledger/allowances/limitations`

Promlčení of unpaid receivables at a date: when each one is time-barred, on what basis, and which allowances that cancels. Three years from the due date (§ 629 občanského zákoníku) unless facts you recorded say otherwise. With \`days\`, only what ends within that many days, or is already barred or suspended.

Nástroj MCP: `get-receivable-limitations`

### Parametry dotazu

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`days` integer min 1 max 3650

### Odpověď · 200

`date` string povinné date

`warningDays` integer povinné

`rows` object\[\] povinné

`documentType` null | string povinné

`documentId` null | string povinné

`number` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`dueDate` null | string povinné date

`currency` null | string povinné

`exchangeRate` null | string povinné

`unpaidDocumentHaler` integer povinné

`originalHaler` integer povinné

`unpaidHaler` integer povinné

`monthsPastDue` integer povinné

`statutoryBalanceHaler` integer povinné

`accountingBalanceHaler` integer povinné

`statutoryOptions` object\[\] povinné

`basis` string povinné

`percent` integer | null povinné

`maxHaler` integer povinné

`roomHaler` integer povinné

`hasDueDebtToDebtor` boolean povinné

`limitation` object povinné

`basis` string povinné

`limitationDate` null | string povinné date

`daysLeft` integer | null povinné

`state` string povinné

`facts` null | object povinné

`acknowledgedOn` null | string povinné date

`acknowledgedUntil` string | null povinné

`awardedDueOn` string | null povinné

`proceedingsFrom` null | string povinné date

`proceedingsTo` string | null povinné

`agreedYears` integer | null povinné

`note` null | string povinné

`suspendedSince` string date

`allowanceToRelease` boolean povinné

`counts` object povinné

`expired` integer povinné

`soon` integer povinné

`suspended` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/allowances/limitations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/limitations', {
  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/ledger/allowances/limitations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record what changes the promlčení of one receivable: an acknowledged debt, a decision, proceedings, or an agreed period

PUT `/v1/ledger/allowances/limitations/{id}`

Record what changes the promlčení of one receivable: an acknowledged debt, a decision, proceedings, or an agreed period. The id is the document. These are the facts a person knows; the date follows from them.

Nástroj MCP: `set-receivable-limitation`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`documentType` "invoice" | "other\_receivable" | "debit\_note" povinné

`acknowledgedOn` string | null

Date as YYYY-MM-DD.

`acknowledgedUntil` string | null

`awardedDueOn` string | null

Date as YYYY-MM-DD.

`proceedingsFrom` string | null

Date as YYYY-MM-DD.

`proceedingsTo` string | null

Date as YYYY-MM-DD.

`agreedYears` integer | null

`note` string | null

### Odpověď · 200

`documentId` null | string povinné

`documentType` null | string povinné

`facts` object povinné

`acknowledgedOn` null | string povinné date

`acknowledgedUntil` string | null povinné

`awardedDueOn` string | null povinné

`proceedingsFrom` null | string povinné date

`proceedingsTo` string | null povinné

`agreedYears` integer | null povinné

`note` null | string povinné

`limitation` object povinné

`basis` string povinné

`limitationDate` null | string povinné date

`daysLeft` integer | null povinné

`state` string povinné

`suspendedSince` string date

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/allowances/limitations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice"
}'
```

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

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/allowances/limitations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice"
    },
)
data = response.json()
```

## What a year’s opravné položky do to the income tax base: creation of accounting ones added back, their release taken off

GET `/v1/ledger/allowances/tax-effect`

What a year’s opravné položky do to the income tax base: creation of accounting ones added back, their release taken off

Nástroj MCP: `get-allowance-tax-effect`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

### Odpověď · 200

`year` integer povinné

`statutoryCreatedHaler` integer povinné

`statutoryReleasedHaler` integer povinné

`accountingCreatedHaler` integer povinné

`accountingReleasedHaler` integer povinné

`addBackHaler` integer povinné

`deductHaler` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/tax-effect', {
  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/ledger/allowances/tax-effect",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List receivables written off, with the deductible part of each

GET `/v1/ledger/allowances/write-offs`

List receivables written off, with the deductible part of each

Nástroj MCP: `list-receivable-write-offs`

### 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` "receivable\_write\_off" povinné

`id` string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`date` string povinné date

`ground` null | string povinné

`amountHaler` integer | null povinné

`deductibleHaler` integer povinné

`nonDeductibleHaler` integer povinné

`timeBarred` boolean povinné

`note` string | null povinné

`reversed` boolean povinné

`createdAt` 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/ledger/allowances/write-offs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/write-offs', {
  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/ledger/allowances/write-offs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Write off a receivable: MD 546100 tax-deductible or 546200 not / D 311, settling its allowances, and closing the document

POST `/v1/ledger/allowances/write-offs`

Write off a receivable: MD 546100 tax-deductible or 546200 not / D 311, settling its allowances, and closing the document. A ground 1 to 7 of § 24 odst. 2 písm. y) ZDP needs conditionsConfirmed: the books cannot show them. Without a ground only the part covered by a statutory allowance is deductible. VAT is untouched: § 46 ZDPH has its own correction.

Nástroj MCP: `create-receivable-write-off`

### Tělo požadavku

`documentType` "invoice" | "other\_receivable" | "debit\_note" povinné

`documentId` string povinné

ID of the document.

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`ground` "1" | "2" | "3" | "4" | "5" | "6" | "7" | "none" povinné

`amountHaler` integer max 9007199254740991

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

`note` string max 240 chars

`conditionsConfirmed` boolean

### Odpověď · 201

`id` string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`date` string povinné date

`ground` null | string povinné

`amountHaler` integer | null povinné

`deductibleHaler` integer povinné

`nonDeductibleHaler` integer povinné

`timeBarred` boolean povinné

`note` string | null povinné

`reversed` boolean povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/allowances/write-offs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "date": "2026-10-30",
  "ground": "1"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/write-offs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "date": "2026-10-30",
    "ground": "1"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/allowances/write-offs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "date": "2026-10-30",
        "ground": "1"
    },
)
data = response.json()
```

## Take a write-off back: the document is open again and the allowance operations it settled are reversed

POST `/v1/ledger/allowances/write-offs/{id}/reverse`

Take a write-off back: the document is open again and the allowance operations it settled are reversed

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

Nástroj MCP: `reverse-receivable-write-off`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`documentType` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`date` string povinné date

`ground` null | string povinné

`amountHaler` integer | null povinné

`deductibleHaler` integer povinné

`nonDeductibleHaler` integer povinné

`timeBarred` boolean povinné

`note` string | null povinné

`reversed` boolean povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/allowances/write-offs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/write-offs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse', {
  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/ledger/allowances/write-offs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The grounds of § 24 odst. 2 písm. y) ZDP on which writing off a receivable is a tax cost

GET `/v1/ledger/allowances/write-offs/grounds`

The grounds of § 24 odst. 2 písm. y) ZDP on which writing off a receivable is a tax cost

Nástroj MCP: `get-write-off-grounds`

### Odpověď · 200

`grounds` object\[\] povinné

`ground` null | string povinné

`cs` string povinné

`en` string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/allowances/write-offs/grounds \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/write-offs/grounds', {
  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/ledger/allowances/write-offs/grounds",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What writing off a receivable would do: the tax-deductible part, the rest, the allowances it settles, and what to watch

GET `/v1/ledger/allowances/write-offs/preview`

What writing off a receivable would do: the tax-deductible part, the rest, the allowances it settles, and what to watch

Nástroj MCP: `preview-receivable-write-off`

### Parametry dotazu

`documentType` "invoice" | "other\_receivable" | "debit\_note" povinné

`documentId` string povinné

ID of the document.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`ground` "1" | "2" | "3" | "4" | "5" | "6" | "7" | "none" výchozí `"none"`

### Odpověď · 200

`documentType` null | string povinné

`documentId` null | string povinné

`number` null | string povinné

`contactName` null | string povinné

`currency` null | string povinné

`ground` null | string povinné

`groundText` null | object povinné

`cs` string povinné

`en` string povinné

`amountHaler` integer | null povinné

`amountCzkHaler` integer povinné

`deductibleHaler` integer povinné

`nonDeductibleHaler` integer povinné

`coveredHaler` integer povinné

`timeBarred` boolean povinné

`limitation` object povinné

`basis` string povinné

`limitationDate` string povinné date

`daysLeft` integer povinné

`state` string povinné

`facts` any povinné

Null in every recorded response.

`settlesStatutoryHaler` integer povinné

`settlesAccountingHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/allowances/write-offs/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/allowances/write-offs/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/ledger/allowances/write-offs/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List own analyses: rows of a label and a formula over account balances

GET `/v1/ledger/analyses`

List own analyses: rows of a label and a formula over account balances

Nástroj MCP: `list-analyses`

### 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` "analysis" povinné

`id` string povinné

`name` null | string povinné

`rows` object\[\] povinné

`label` null | string povinné

`formula` string povinné

`createdAt` string povinné date-time

`updatedAt` 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/ledger/analyses \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses', {
  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/ledger/analyses",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save an own analysis. A formula uses numbers, + - \* /, brackets, Z(311) for a closing balance and O(6) for the year’s movement, debit positive; with a peněžní deník P(A01) for income and V(B04) for expenses by row of the přehled

POST `/v1/ledger/analyses`

Save an own analysis. A formula uses numbers, + - \* /, brackets, Z(311) for a closing balance and O(6) for the year’s movement, debit positive; with a peněžní deník P(A01) for income and V(B04) for expenses by row of the přehled

Nástroj MCP: `create-analysis`

### Tělo požadavku

`name` string povinné max 200 chars

`rows` object\[\] povinné

`label` string povinné max 120 chars

`formula` string povinné max 400 chars

### Odpověď · 201

`id` string povinné

`name` null | string povinné

`rows` object\[\] povinné

`label` null | string povinné

`formula` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/analyses \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "rows": [
    {
      "label": "string",
      "formula": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses', {
  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.",
    "rows": [
      {
        "label": "string",
        "formula": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/analyses",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "rows": [
            {
                "label": "string",
                "formula": "string"
            }
        ]
    },
)
data = response.json()
```

## Change an own analysis

PATCH `/v1/ledger/analyses/{id}`

Change an own analysis

Nástroj MCP: `update-analysis`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`rows` object\[\]

`label` string povinné max 120 chars

`formula` string povinné max 400 chars

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`rows` object\[\] povinné

`label` null | string povinné

`formula` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "rows": [
    {
      "label": "string",
      "formula": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses/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.",
    "rows": [
      {
        "label": "string",
        "formula": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "rows": [
            {
                "label": "string",
                "formula": "string"
            }
        ]
    },
)
data = response.json()
```

## Delete an own analysis

DELETE `/v1/ledger/analyses/{id}`

Delete an own analysis

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

Nástroj MCP: `delete-analysis`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`rows` object\[\] povinné

`label` null | string povinné

`formula` string povinné

`createdAt` string povinné date-time

`updatedAt` string povinné date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses/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/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download an own analysis as a PDF

GET `/v1/ledger/analyses/{id}/pdf`

Download an own analysis as a PDF

Nástroj MCP: `get-analysis-pdf`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`years` integer min 1 max 10

`toYear` integer min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses/obj_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/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Compute an own analysis by year

GET `/v1/ledger/analyses/{id}/run`

Compute an own analysis by year

Nástroj MCP: `run-analysis`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`years` integer min 1 max 10

`toYear` integer min 2000 max 2100

### Odpověď · 200

`id` string povinné

`name` null | string povinné

`years` integer\[\] povinné

`rows` object\[\] povinné

`label` null | string povinné

`formula` string povinné

`values` object\[\] povinné

`year` integer povinné

`value` integer | null povinné

`source` string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/run', {
  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/ledger/analyses/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/run",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Přehled o majetku a závazcích at the start and end of a period, for daňová evidence and jednoduché účetnictví

GET `/v1/ledger/assets-liabilities`

Přehled o majetku a závazcích at the start and end of a period, for daňová evidence and jednoduché účetnictví. Cash, bank, receivables, and payables (with unpaid payroll) come from the books, fixed assets from asset cards, inventory from stock movements, and loans from the loan register. Other rows are values you keep through updateBookBalances, which can also type over the computed asset, inventory, and loan rows for a period.

Nástroj MCP: `get-assets-liabilities`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`openingDate` null | string povinné date

`closingDate` string povinné date

`assets` object\[\] povinné

`key` string povinné

`label` null | string povinné

`labelEn` string povinné

`source` string povinné

`autoSource` string

`openingHaler` integer povinné

`closingHaler` integer povinné

`liabilities` object\[\] povinné

`key` string povinné

`label` null | string povinné

`labelEn` string povinné

`source` string povinné

`autoSource` string

`openingHaler` integer povinné

`closingHaler` integer povinné

`totals` object povinné

`assetsOpeningHaler` integer povinné

`assetsClosingHaler` integer povinné

`liabilitiesOpeningHaler` integer povinné

`liabilitiesClosingHaler` integer povinné

`differenceOpeningHaler` integer povinné

`differenceClosingHaler` integer povinné

`exceedsSingleEntryLimit` boolean

```bash
curl https://api.damedoklad.cz/v1/ledger/assets-liabilities \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/assets-liabilities', {
  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/ledger/assets-liabilities",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set manual rows of the přehled o majetku a závazcích, or opening cash and bank (items cash and bank)

PUT `/v1/ledger/assets-liabilities`

Set manual rows of the přehled o majetku a závazcích, or opening cash and bank (items cash and bank)

Nástroj MCP: `update-book-balances`

### Tělo požadavku

`periodId` string

ID of the period. Find it with list-periods.

`items` object\[\] povinné

`item` string povinné max 32 chars

`openingHaler` integer min -9007199254740991 max 9007199254740991

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

`closingHaler` integer min -9007199254740991 max 9007199254740991

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

`clear` boolean

### Odpověď · 200

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`openingDate` null | string povinné date

`closingDate` string povinné date

`assets` object\[\] povinné

`key` string povinné

`label` null | string povinné

`labelEn` string povinné

`source` string povinné

`autoSource` string

`openingHaler` integer povinné

`closingHaler` integer povinné

`liabilities` object\[\] povinné

`key` string povinné

`label` null | string povinné

`labelEn` string povinné

`source` string povinné

`autoSource` string

`openingHaler` integer povinné

`closingHaler` integer povinné

`totals` object povinné

`assetsOpeningHaler` integer povinné

`assetsClosingHaler` integer povinné

`liabilitiesOpeningHaler` integer povinné

`liabilitiesClosingHaler` integer povinné

`differenceOpeningHaler` integer povinné

`differenceClosingHaler` integer povinné

`exceedsSingleEntryLimit` boolean

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/assets-liabilities \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    {
      "item": "string"
    }
  ]
}'
```

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

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/assets-liabilities",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "items": [
            {
                "item": "string"
            }
        ]
    },
)
data = response.json()
```

## List the peněžní deník: income and expense rows with bank and cash columns

GET `/v1/ledger/cash-book`

List the peněžní deník: income and expense rows with bank and cash columns

Nástroj MCP: `list-cash-book-entries`

### 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.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`classification` "income\_taxable" | "income\_exempt" | "expense\_deductible" | "expense\_nondeductible" | "passthrough" | "transfer"

`moneyAccount` "bank" | "cash"

`direction` "in" | "out"

### Odpověď · 200

`data` object\[\] povinné

`object` "cash\_book\_entry" povinné

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`direction` string povinné

`moneyAccount` string povinné

`classification` string povinné

`category` null | string povinné

`activityKind` string povinné

`amountHaler` integer povinné

`vatHaler` integer povinné

`baseHaler` integer | null povinné

`bankInHaler` integer povinné

`bankOutHaler` integer povinné

`cashInHaler` integer povinné

`cashOutHaler` integer povinné

`sourceType` string povinné

`sourceId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`reversalOfId` null | string povinné

`reversedById` string | null

`canReverse` boolean 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/ledger/cash-book \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/cash-book', {
  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/ledger/cash-book",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Write a manual peněžní deník row. A transfer writes both sides: out of moneyAccount and into the other one

POST `/v1/ledger/cash-book`

Write a manual peněžní deník row. A transfer writes both sides: out of moneyAccount and into the other one

Nástroj MCP: `create-cash-book-entry`

### Tělo požadavku

`entryDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`description` string povinné max 200 chars

`direction` "in" | "out" povinné

`moneyAccount` "bank" | "cash"

`classification` "income\_taxable" | "income\_exempt" | "expense\_deductible" | "expense\_nondeductible" | "passthrough" | "transfer" povinné

`amountHaler` integer povinné max 9007199254740991

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

`vatHaler` integer min 0 max 9007199254740991

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

`category` string

`activityKind` "main" | "economic"

`documentNumber` string max 64 chars

`contactId` string

ID of the contact. Find it with list-contacts.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`direction` string povinné

`moneyAccount` string povinné

`classification` string povinné

`category` null | string povinné

`activityKind` string povinné

`amountHaler` integer povinné

`vatHaler` integer povinné

`baseHaler` integer | null povinné

`bankInHaler` integer povinné

`bankOutHaler` integer povinné

`cashInHaler` integer povinné

`cashOutHaler` integer povinné

`sourceType` string povinné

`sourceId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`reversalOfId` null | string povinné

`reversedById` string | null

`canReverse` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/cash-book \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "entryDate": "2026-10-30",
  "description": "Pečivo, říjen",
  "direction": "in",
  "classification": "income_taxable",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/cash-book', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "entryDate": "2026-10-30",
    "description": "Pečivo, říjen",
    "direction": "in",
    "classification": "income_taxable",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/cash-book",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "entryDate": "2026-10-30",
        "description": "Pečivo, říjen",
        "direction": "in",
        "classification": "income_taxable",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Reclassify a peněžní deník row (daňový / nedaňový, row of the přehled, činnost, text). Amounts cannot change

PATCH `/v1/ledger/cash-book/{id}`

Reclassify a peněžní deník row (daňový / nedaňový, row of the přehled, činnost, text). Amounts cannot change

Nástroj MCP: `update-cash-book-entry`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`classification` "income\_taxable" | "income\_exempt" | "expense\_deductible" | "expense\_nondeductible" | "passthrough" | "transfer"

`category` string | null

`activityKind` "main" | "economic"

`description` string max 200 chars

### Odpověď · 200

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`direction` string povinné

`moneyAccount` string povinné

`classification` string povinné

`category` null | string povinné

`activityKind` string povinné

`amountHaler` integer povinné

`vatHaler` integer povinné

`baseHaler` integer | null povinné

`bankInHaler` integer povinné

`bankOutHaler` integer povinné

`cashInHaler` integer povinné

`cashOutHaler` integer povinné

`sourceType` string povinné

`sourceId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`reversalOfId` null | string povinné

`reversedById` string | null

`canReverse` boolean povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "classification": "income_taxable",
  "category": "string",
  "activityKind": "main"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "classification": "income_taxable",
    "category": "string",
    "activityKind": "main"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "classification": "income_taxable",
        "category": "string",
        "activityKind": "main"
    },
)
data = response.json()
```

## Reverse a manual peněžní deník row with an opposite one. A transfer reverses both sides

POST `/v1/ledger/cash-book/{id}/reverse`

Reverse a manual peněžní deník row with an opposite one. A transfer reverses both sides

Nástroj MCP: `reverse-cash-book-entry`

### Parametry v cestě

`id` string povinné

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`direction` string povinné

`moneyAccount` string povinné

`classification` string povinné

`category` null | string povinné

`activityKind` string povinné

`amountHaler` integer povinné

`vatHaler` integer povinné

`baseHaler` integer | null povinné

`bankInHaler` integer povinné

`bankOutHaler` integer povinné

`cashInHaler` integer povinné

`cashOutHaler` integer povinné

`sourceType` string povinné

`sourceId` null | string povinné

`documentNumber` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` string | null povinné

`reversalOfId` null | string povinné

`reversedById` string | null

`canReverse` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse', {
  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/ledger/cash-book/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Yearly peněžní deník totals: by classification, tax base, bank and cash balances, monthly income and expense

GET `/v1/ledger/cash-book/summary`

Yearly peněžní deník totals: by classification, tax base, bank and cash balances, monthly income and expense

Nástroj MCP: `get-cash-book-summary`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`from` string povinné date

`to` string povinné date

`byClass` object povinné

`income_taxable` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`income_exempt` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`expense_deductible` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`expense_nondeductible` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`passthrough` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`transfer` object povinné

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`expense_nontax` object

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`non_tax_transfer` object

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`income_nontax` object

`amountHaler` integer | null povinné

`vatHaler` integer | null povinné

`baseHaler` integer | null povinné

`taxableIncomeHaler` integer povinné

`deductibleExpenseHaler` integer povinné

`taxBaseHaler` integer povinné

`bank` object povinné

`openingHaler` integer povinné

`inHaler` integer povinné

`outHaler` integer povinné

`closingHaler` integer povinné

`cash` object povinné

`openingHaler` integer povinné

`inHaler` integer povinné

`outHaler` integer povinné

`closingHaler` integer povinné

`byMonth` object\[\] povinné

`month` null | string povinné

`incomeHaler` integer povinné

`expenseHaler` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/cash-book/summary \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/cash-book/summary', {
  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/ledger/cash-book/summary",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Decisions on the approval of the statements of a period, oldest first: a rejection and a later approval both stay

GET `/v1/ledger/contributory/approvals`

Decisions on the approval of the statements of a period, oldest first: a rejection and a later approval both stay

Nástroj MCP: `list-contributory-approvals`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "contributory\_approval" povinné

`id` string povinné

`periodId` string povinné

`decision` string povinné

`decidedOn` string povinné date

`organ` string povinné

`persons` string\[\] povinné

`extraordinary` boolean povinné

`rejectionNote` null | string povinné

`rejectionDeadline` null | string povinné date

`evidence` null | string povinné

`unitStatement` null | string povinné

`votes` string | null povinné

`createdAt` 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/ledger/contributory/approvals \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/approvals', {
  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/ledger/contributory/approvals",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record the decision of the approving body per vyhláška 220/2013 Sb. § 6 and § 7: approved, rejected on substance or for missing papers, or not decided in time

POST `/v1/ledger/contributory/approvals`

Record the decision of the approving body per vyhláška 220/2013 Sb. § 6 and § 7: approved, rejected on substance or for missing papers, or not decided in time. A rejection needs its note and a deadline (§ 7 odst. 3). Part of the statements cannot be approved (§ 6 odst. 4), so a decision is always about all of them.

Nástroj MCP: `create-contributory-approval`

### Tělo požadavku

`periodId` string povinné

ID of the period. Find it with list-periods.

`decision` "approved" | "rejected\_substantive" | "rejected\_formal" | "not\_decided\_in\_time" povinné

`decidedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`organ` "PovereneOsoby" | "ZrizovatelOSS" | "ZrizovatelSPO" | "OrganDSO" | "ZastupitelstvoObce" | "RadaObce" | "ZastupitelstvoKraje" | "RadaKraje" | "ZastupitelstvoHMP" | "RadaHMP" povinné

`persons` string\[\] povinné

`extraordinary` boolean

`rejectionNote` string max 10000 chars

`rejectionDeadline` string YYYY-MM-DD

`evidence` string max 10000 chars

`unitStatement` string max 10000 chars

`votes` string max 10000 chars

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`decision` string povinné

`decidedOn` string povinné date

`organ` string povinné

`persons` string\[\] povinné

`extraordinary` boolean povinné

`rejectionNote` null | string povinné

`rejectionDeadline` null | string povinné date

`evidence` null | string povinné

`unitStatement` null | string povinné

`votes` string | null povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/approvals \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "decision": "approved",
  "decidedOn": "2026-10-30",
  "organ": "PovereneOsoby",
  "persons": [
    "string"
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/approvals', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "decision": "approved",
    "decidedOn": "2026-10-30",
    "organ": "PovereneOsoby",
    "persons": [
      "string"
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/contributory/approvals",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "decision": "approved",
        "decidedOn": "2026-10-30",
        "organ": "PovereneOsoby",
        "persons": [
            "string"
        ]
    },
)
data = response.json()
```

## Protokol o schvalování účetní závěrky per § 11 odst. 2 of vyhláška 220/2013 Sb. as a PDF

GET `/v1/ledger/contributory/approvals/{id}/protocol`

Protokol o schvalování účetní závěrky per § 11 odst. 2 of vyhláška 220/2013 Sb. as a PDF

Nástroj MCP: `download-contributory-approval-protocol`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protocol \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protocol', {
  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/ledger/contributory/approvals/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/protocol",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Výkaz peněžních příjmů a výdajů (C007) of vyhláška 272/2017 Sb., from the entries that moved money, with a person's moves between rows. A state organisation sends it, monthly or quarterly by its costs

GET `/v1/ledger/contributory/cash-report`

Výkaz peněžních příjmů a výdajů (C007) of vyhláška 272/2017 Sb., from the entries that moved money, with a person's moves between rows. A state organisation sends it, monthly or quarterly by its costs

Nástroj MCP: `get-contributory-cash-report`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`asOf` string povinné date

`required` boolean povinné

`rows` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`level` integer povinné

`leaf` boolean povinné

`valueHaler` integer | null povinné

`moneyInHaler` integer povinné

`unclassified` object\[\] povinné

`account` null | string povinné

`amountHaler` integer | null povinné

`moves` object\[\] povinné

`to` string povinné

`from` string povinné

`amountHaler` integer | null povinné

`frequency` string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/cash-report \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/cash-report', {
  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/ledger/contributory/cash-report",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The checks of Kontrolní vazby výkazů pro CSÚIS, verze 70, as far as this application holds their data: what the portal would refuse, before it is uploaded

GET `/v1/ledger/contributory/controls`

The checks of Kontrolní vazby výkazů pro CSÚIS, verze 70, as far as this application holds their data: what the portal would refuse, before it is uploaded

Nástroj MCP: `get-contributory-controls`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`asOf` string povinné date

`version` integer povinné

`ok` boolean povinné

`checks` object\[\] povinné

`id` string povinné

`bond` integer povinné

`label` null | string povinné

`left` integer

`right` integer

`ok` boolean povinné

`differenceHaler` integer

`balanceHaler` integer

`accounts` string\[\]

`items` string\[\]

`failed` integer povinné

`overviewsDue` boolean

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/controls \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/controls', {
  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/ledger/contributory/controls",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## A further CSÚIS message for upload on its portal: příloha, approval, ROZP 1-01 SPO, PAP with its detail parts, the cash report C007, ZAM 1-04 U, and for 2025 and earlier the cash flow with equity changes. Validated against package 57, unsigned, sent nowhere

POST `/v1/ledger/contributory/csuis`

A further CSÚIS message for upload on its portal: příloha, approval, ROZP 1-01 SPO, PAP with its detail parts, the cash report C007, ZAM 1-04 U, and for 2025 and earlier the cash flow with equity changes. Validated against package 57, unsigned, sent nowhere

Nástroj MCP: `export-csuis-report`

### Tělo požadavku

`report` "cash\_flow" | "notes" | "approval" | "rozp" | "pap" | "pap\_x" | "pap\_xi" | "pap\_xii" | "pap\_xiii" | "pap\_xv" | "pap\_xvi" | "vppv" | "zam" povinné

`sequencePart` integer min 1 max 9007199254740991

`periodId` string povinné

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`personName` string povinné max 200 chars

`email` string povinné email

`personId` string povinné max 15 chars

ID of the person.

`phone` string max 30 chars

`chapter` string max 3 chars

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/csuis \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "report": "cash_flow",
  "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "personName": "Pekárna U Lípy s.r.o.",
  "email": "info@example.cz",
  "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/csuis', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "report": "cash_flow",
    "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "personName": "Pekárna U Lípy s.r.o.",
    "email": "info@example.cz",
    "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/contributory/csuis",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "report": "cash_flow",
        "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "personName": "Pekárna U Lípy s.r.o.",
        "email": "info@example.cz",
        "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
content = response.content
```

## ZAM 1-04 U of vyhláška 5/2014 Sb. as entered: the headcount of a state organisation whose employment the government regulates, per quarter

GET `/v1/ledger/contributory/employment`

ZAM 1-04 U of vyhláška 5/2014 Sb. as entered: the headcount of a state organisation whose employment the government regulates, per quarter

Nástroj MCP: `get-contributory-employment`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`asOf` string povinné date

`required` boolean povinné

`quarter` null | string povinné

`columns` object\[\] povinné

`key` string povinné

`label` null | string povinné

`rows` object povinné

`employment` object povinné

`budget` integer povinné

`budgetEu` integer povinné

`adjusted` integer povinné

`adjustedEu` integer povinné

`actual` number povinné

`limitEu` number povinné

`limitOther` number povinné

`unspentEu` integer povinné

`unspentOther` integer povinné

`outsideEu` integer povinné

`outsideOther` integer povinné

`end` integer povinné

`endEu` integer povinné

`civil` object povinné

`budget` integer povinné

`budgetEu` integer povinné

`adjusted` integer povinné

`adjustedEu` integer povinné

`actual` integer povinné

`limitEu` integer povinné

`limitOther` integer povinné

`unspentEu` integer povinné

`unspentOther` integer povinné

`outsideEu` integer povinné

`outsideOther` integer povinné

`end` integer povinné

`endEu` integer povinné

`total` object povinné

`budget` integer povinné

`budgetEu` integer povinné

`adjusted` integer povinné

`adjustedEu` integer povinné

`actual` number povinné

`limitEu` number povinné

`limitOther` number povinné

`unspentEu` integer povinné

`unspentOther` integer povinné

`outsideEu` integer povinné

`outsideOther` integer povinné

`end` integer povinné

`endEu` integer povinné

`firstQuarter` object povinné

`employment` object povinné

`budget` integer povinné

`budgetEu` integer povinné

`adjusted` integer povinné

`adjustedEu` integer povinné

`actual` number povinné

`limitEu` integer povinné

`limitOther` number povinné

`unspentEu` integer povinné

`unspentOther` integer povinné

`outsideEu` integer povinné

`outsideOther` integer povinné

`end` integer povinné

`endEu` integer povinné

`civil` object povinné

`budget` integer povinné

`budgetEu` integer povinné

`adjusted` integer povinné

`adjustedEu` integer povinné

`actual` integer povinné

`limitEu` integer povinné

`limitOther` integer povinné

`unspentEu` integer povinné

`unspentOther` integer povinné

`outsideEu` integer povinné

`outsideOther` integer povinné

`end` integer povinné

`endEu` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/employment \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/employment', {
  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/ledger/contributory/employment",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Reverse a transfer or fund posting made by a guide

POST `/v1/ledger/contributory/entries/{id}/reverse`

Reverse a transfer or fund posting made by a guide

Nástroj MCP: `reverse-contributory-entry`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`entryId` null | string povinné

`reversalId` string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/entries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/entries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse', {
  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/ledger/contributory/entries/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Post a creation or use of a fund per ČÚS 704: the guide picks the accounts by the founder and the kind, and the amount lands on its row of part F of the příloha

POST `/v1/ledger/contributory/funds/post`

Post a creation or use of a fund per ČÚS 704: the guide picks the accounts by the founder and the kind, and the amount lands on its row of part F of the příloha

Nástroj MCP: `post-contributory-fund`

### Tělo požadavku

`kind` string povinné max 40 chars

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné max 9007199254740991

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

`reserveAccount` "413" | "414"

`revenueAccount` "671" | "672"

`moneyAccount` string

`row` string

`description` string max 200 chars

### Odpověď · 201

`entryId` null | string povinné

`kind` string povinné

`ref` string povinné

`lines` object\[\] povinné

`accountNumber` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/funds/post \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "string",
  "date": "2026-10-30",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/funds/post', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "string",
    "date": "2026-10-30",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/contributory/funds/post",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "string",
        "date": "2026-10-30",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## What was saved for the příloha, the equity overview, ROZP 1-01 SPO, PAP, the cash report or ZAM 1-04 U of a period

GET `/v1/ledger/contributory/inputs`

What was saved for the příloha, the equity overview, ROZP 1-01 SPO, PAP, the cash report or ZAM 1-04 U of a period

Nástroj MCP: `get-contributory-inputs`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`report` string povinné

`data` object povinné

`e` object

`E1` object\[\] povinné

`item` string povinné

`comment` null | string povinné

`amountHaler` integer | null povinné

`itemMap` object

`quarters` object

`allocation` object

`A.I.2.` object povinné

`increaseHaler` integer povinné

`partI` object

`partII` object

`changes` object\[\]

`part` integer povinné

`item` string povinné

`changeType` string povinné

`amountHaler` integer | null povinné

`partner` string

`assetPartner` string

`texts` object

`A.1.` string povinné

`d` object

`d2` integer povinné

`accountPartners` object

`moves` object\[\]

`from` string povinné

`to` string povinné

`amountHaler` integer | null povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/inputs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/inputs', {
  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/ledger/contributory/inputs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Save what the books cannot say: texts and breakdowns of the příloha, the allocation of equity movements, the budget of ROZP 1-01 SPO, the change types and partners of PAP, moves in the cash report, the headcount of ZAM 1-04 U

PUT `/v1/ledger/contributory/inputs`

Save what the books cannot say: texts and breakdowns of the příloha, the allocation of equity movements, the budget of ROZP 1-01 SPO, the change types and partners of PAP, moves in the cash report, the headcount of ZAM 1-04 U

Nástroj MCP: `save-contributory-inputs`

### Tělo požadavku

`periodId` string povinné

ID of the period. Find it with list-periods.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam" povinné

`data` object povinné

### Odpověď · 200

`periodId` string povinné

`report` string povinné

`data` object povinné

`e` object

`E1` object\[\] povinné

`item` string povinné

`comment` null | string povinné

`amountHaler` integer | null povinné

`itemMap` object

`quarters` object

`allocation` object

`A.I.2.` object povinné

`increaseHaler` integer povinné

`partI` object

`partII` object

`changes` object\[\]

`part` integer povinné

`item` string povinné

`changeType` string povinné

`amountHaler` integer | null povinné

`partner` string

`assetPartner` string

`texts` object

`A.1.` string povinné

`d` object

`d2` integer povinné

`accountPartners` object

`moves` object\[\]

`from` string povinné

`to` string povinné

`amountHaler` integer | null povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/contributory/inputs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "report": "notes",
  "data": {}
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/inputs', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "report": "notes",
    "data": {}
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/contributory/inputs",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "report": "notes",
        "data": {}
    },
)
data = response.json()
```

## Příloha per § 45 and Příloha 5 of vyhláška 410/2009 Sb.: off-balance accounts, transfers, funds, buildings and land from the books, the texts as saved

GET `/v1/ledger/contributory/notes`

Příloha per § 45 and Příloha 5 of vyhláška 410/2009 Sb.: off-balance accounts, transfers, funds, buildings and land from the books, the texts as saved

Nástroj MCP: `get-contributory-notes`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`asOf` string povinné date

`structure` string povinné

`founder` string povinné

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`texts` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`hint` string povinné

`text` string povinné

`a4` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`level` integer povinné

`currentHaler` integer povinné

`priorHaler` integer povinné

`account` null | string

`partC` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`currentHaler` integer povinné

`priorHaler` integer povinné

`b3` object povinné

`code` null | string povinné

`label` null | string povinné

`valueHaler` integer | null povinné

`text` string povinné

`d` object povinné

`d1` object povinné

`code` null | string povinné

`label` null | string povinné

`value` integer povinné

`text` string povinné

`d2` object povinné

`code` null | string povinné

`label` null | string povinné

`value` integer povinné

`d3` object povinné

`code` null | string povinné

`label` null | string povinné

`valueHaler` integer | null povinné

`d4` object povinné

`code` null | string povinné

`label` null | string povinné

`value` integer povinné

`d5` object povinné

`code` null | string povinné

`label` null | string povinné

`valueHaler` integer | null povinné

`d7` object povinné

`code` null | string povinné

`label` null | string povinné

`text` string povinné

`d6` object povinné

`code` null | string povinné

`label` null | string povinné

`valueHaler` integer | null povinné

`e` object povinné

`E1` object\[\] povinné

`item` string povinné

`comment` null | string povinné

`amountHaler` integer | null povinné

`E2` any\[\] povinné

`E3` any\[\] povinné

`E4` any\[\] povinné

`funds` object\[\] povinné

`letter` string povinné

`title` null | string povinné

`rows` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`valueHaler` integer | null povinné

`level` integer povinné

`g` object povinné

`letter` string povinné

`title` null | string povinné

`total` object povinné

`code` null | string povinné

`label` null | string povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`netHaler` integer povinné

`priorNetHaler` integer povinné

`rows` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`priorNetHaler` integer povinné

`netHaler` integer povinné

`h` object povinné

`letter` string povinné

`title` null | string povinné

`total` object povinné

`code` null | string povinné

`label` null | string povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`netHaler` integer povinné

`priorNetHaler` integer povinné

`rows` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`priorNetHaler` integer povinné

`netHaler` integer povinné

`i` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`currentHaler` integer povinné

`priorHaler` integer povinné

`j` object\[\] povinné

`code` null | string povinné

`label` null | string povinné

`currentHaler` integer povinné

`priorHaler` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/notes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/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/ledger/contributory/notes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Příloha of a contributory organisation as a PDF

GET `/v1/ledger/contributory/notes/pdf`

Příloha of a contributory organisation as a PDF

Nástroj MCP: `download-contributory-notes`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/notes/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/notes/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/ledger/contributory/notes/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Pomocný analytický přehled of vyhláška 383/2009 Sb. Parts I to III and the breakdowns by partner in X, XI, XV and XVI from the books, the change types of IV to VIII and their partners in XII and XIII as entered

GET `/v1/ledger/contributory/pap`

Pomocný analytický přehled of vyhláška 383/2009 Sb. Parts I to III and the breakdowns by partner in X, XI, XV and XVI from the books, the change types of IV to VIII and their partners in XII and XIII as entered. Part XIV is for organisational units of the state and territorial self-governing units only, so a contributory organisation has none.

Nástroj MCP: `get-contributory-pap`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`asOf` string povinné date

`part1` object\[\] povinné

`item` string povinné

`opening` integer povinné

`debit` integer povinné

`credit` integer povinné

`closing` integer povinné

`part2` object\[\] povinné

`item` string povinné

`main` integer povinné

`economic` integer povinné

`part3` object\[\] povinné

`item` string povinné

`main` integer povinné

`economic` integer povinné

`parts` object povinné

`required` boolean povinné

`part10` object\[\]

`item` string povinné

`partner` string povinné

`partnerName` null | string povinné

`opening` integer povinné

`debit` integer povinné

`credit` integer povinné

`closing` integer povinné

`unidentified` boolean povinné

`marker` string povinné

`contract` any povinné

Null in every recorded response.

`part11` object\[\]

`item` string povinné

`partner` string povinné

`partnerName` string povinné

`main` integer povinné

`economic` integer povinné

`unidentified` boolean povinné

`marker` string povinné

`part12` object\[\]

`item` string povinné

`changeType` string povinné

`partner` string povinné

`partnerName` any povinné

Null in every recorded response.

`amountHaler` integer | null povinné

`unidentified` boolean povinné

`part13` object\[\]

`item` string povinné

`changeType` string povinné

`assetPartner` string povinné

`partner` string povinné

`partnerName` any povinné

Null in every recorded response.

`assetPartnerName` any povinné

Null in every recorded response.

`amountHaler` integer | null povinné

`unidentified` boolean povinné

`part15` object\[\]

`item` string povinné

`label` null | string povinné

`opening` integer povinné

`closing` integer povinné

`part16` object\[\]

`item` string povinné

`partner` string povinné

`partnerName` null | string povinné

`opening` integer povinné

`closing` integer povinné

`unidentified` boolean povinné

`unassigned` object\[\]

`account` null | string povinné

`synthetic` string povinné

`itemMap` object

`accountPartners` object

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/pap \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/pap', {
  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/ledger/contributory/pap",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The form of PAP itself: the items of parts I to III and XV with their partner markers, what each of parts IV to VIII lists, and the change types

GET `/v1/ledger/contributory/pap/form`

The form of PAP itself: the items of parts I to III and XV with their partner markers, what each of parts IV to VIII lists, and the change types

Nástroj MCP: `get-contributory-pap-form`

### Odpověď · 200

`part1` object\[\] povinné

`item` string povinné

`label` null | string povinné

`marker` null | string povinné

`part2` object\[\] povinné

`item` string povinné

`label` null | string povinné

`marker` null | string povinné

`part3` object\[\] povinné

`item` string povinné

`label` null | string povinné

`marker` null | string povinné

`part15` object\[\] povinné

`item` string povinné

`label` null | string povinné

`marker` string povinné

`ranges` object povinné

`changeCodes` object povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/pap/form \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/pap/form', {
  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/ledger/contributory/pap/form",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Costs and income of the period by účelový znak: every line marked with a project that has one, invoices and payroll included

GET `/v1/ledger/contributory/purpose-codes`

Costs and income of the period by účelový znak: every line marked with a project that has one, invoices and payroll included

Nástroj MCP: `get-contributory-purpose-codes`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`data` object\[\] povinné

`purposeCode` null | string povinné

`name` null | string povinné

`costHaler` integer povinné

`incomeHaler` integer povinné

`advanceHaler` integer povinné

`differenceHaler` integer povinné

`total` integer povinné

`hasMore` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/purpose-codes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/purpose-codes', {
  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/ledger/contributory/purpose-codes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## ROZP 1-01 SPO of vyhláška 5/2014 Sb.: last year from the books, the budget as entered. It replaced nothing for territorial organisations, which send no financial statement

GET `/v1/ledger/contributory/rozp`

ROZP 1-01 SPO of vyhláška 5/2014 Sb.: last year from the books, the budget as entered. It replaced nothing for territorial organisations, which send no financial statement. FIN 2-04 U no longer exists: the CSÚIS manual lists it as abolished.

Nástroj MCP: `get-contributory-rozp`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`report` "notes" | "equity" | "rozp" | "pap" | "vppv" | "zam"

### Odpověď · 200

`periodId` string povinné

`founder` string povinné

`required` boolean povinné

`partI` object\[\] povinné

`number` integer | null povinné

`label` null | string povinné

`account` null | string povinné

`actual` integer povinné

`budget` integer povinné

`next1` integer povinné

`next2` integer povinné

`partII` object\[\] povinné

`number` integer | null povinné

`label` null | string povinné

`actual` integer povinné

`budget` integer povinné

`next1` integer povinné

`next2` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/rozp \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/rozp', {
  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/ledger/contributory/rozp",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Founder of a contributory organisation (state or territorial), which decides the fund tables, ROZP 1-01 SPO and whether PAP is due, with the guides on offer

GET `/v1/ledger/contributory/settings`

Founder of a contributory organisation (state or territorial), which decides the fund tables, ROZP 1-01 SPO and whether PAP is due, with the guides on offer

Nástroj MCP: `get-contributory-settings`

### Odpověď · 200

`founder` string povinné

`chapter` null | string povinné

`transferSteps` string\[\]

`fundPostings` object\[\]

`key` string povinné

`ref` string povinné

`label` null | string povinné

`table` null | string povinné

`rowChoice` array | null povinné

`fromReserve` boolean povinné

`revenueAccount` boolean povinné

`approvalOrgans` string\[\]

`approvalDecisions` string\[\]

`papChangeCodes` object

`employmentRegulated` boolean

```bash
curl https://api.damedoklad.cz/v1/ledger/contributory/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/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/ledger/contributory/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Say who founded the contributory organisation, its budget chapter if the state did, and whether the government regulates its employment, which brings ZAM 1-04 U

PUT `/v1/ledger/contributory/settings`

Say who founded the contributory organisation, its budget chapter if the state did, and whether the government regulates its employment, which brings ZAM 1-04 U

Nástroj MCP: `update-contributory-settings`

### Tělo požadavku

`founder` "state" | "territorial" povinné

`chapter` string | null

`employmentRegulated` boolean

### Odpověď · 200

`founder` string povinné

`chapter` null | string povinné

`transferSteps` string\[\]

`fundPostings` object\[\]

`key` string povinné

`ref` string povinné

`label` null | string povinné

`table` null | string povinné

`rowChoice` array | null povinné

`fromReserve` boolean povinné

`revenueAccount` boolean povinné

`approvalOrgans` string\[\]

`approvalDecisions` string\[\]

`papChangeCodes` object

`employmentRegulated` boolean

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/contributory/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "founder": "state"
}'
```

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

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/contributory/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "founder": "state"
    },
)
data = response.json()
```

## Transfers received, with the entries each one made

GET `/v1/ledger/contributory/transfers`

Transfers received, with the entries each one made

Nástroj MCP: `list-contributory-transfers`

### 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` "contributory\_transfer" povinné

`id` string povinné

`name` string povinné

`providerName` string povinné

`providerIco` null | string povinné

`purposeCode` null | string povinné

`projectId` null | string povinné

`kind` string povinné

`revenueAccount` string povinné

`receivableAccount` string povinné

`amountHaler` integer povinné

`year` integer povinné

`entries` object\[\] povinné

`id` string povinné

`date` string povinné date

`number` integer | null povinné

`description` null | string povinné

`step` string povinné

`reversed` boolean 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/ledger/contributory/transfers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/transfers', {
  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/ledger/contributory/transfers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Record a transfer received: operating or for fixed assets, with its provider and účelový znak. Nothing posts until a step does

POST `/v1/ledger/contributory/transfers`

Record a transfer received: operating or for fixed assets, with its provider and účelový znak. Nothing posts until a step does

Nástroj MCP: `create-contributory-transfer`

### Tělo požadavku

`name` string povinné max 200 chars

`providerName` string povinné max 200 chars

`providerIco` string

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

`purposeCode` string

`kind` "operating" | "investment" povinné

`revenueAccount` "671" | "672"

`receivableAccount` "344" | "346" | "348"

`amountHaler` integer min -9007199254740991 max 9007199254740991 výchozí `0`

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

`year` integer povinné min 2000 max 2100

### Odpověď · 201

`id` string povinné

`name` string povinné

`providerName` string povinné

`providerIco` null | string povinné

`purposeCode` null | string povinné

`projectId` null | string povinné

`kind` string povinné

`revenueAccount` string povinné

`receivableAccount` string povinné

`amountHaler` integer povinné

`year` integer povinné

`entries` object\[\] povinné

`id` string povinné

`date` string povinné date

`number` integer | null povinné

`description` null | string povinné

`step` string povinné

`reversed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/transfers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "providerName": "Pekárna U Lípy s.r.o.",
  "kind": "operating",
  "year": 2026
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/transfers', {
  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.",
    "providerName": "Pekárna U Lípy s.r.o.",
    "kind": "operating",
    "year": 2026
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/contributory/transfers",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "providerName": "Pekárna U Lípy s.r.o.",
        "kind": "operating",
        "year": 2026
    },
)
data = response.json()
```

## Post one step of a transfer per ČÚS 703: advance, settlement, surplus returned, estimate, no-settlement claim, money received, or release of 403 to income

POST `/v1/ledger/contributory/transfers/{id}/post`

Post one step of a transfer per ČÚS 703: advance, settlement, surplus returned, estimate, no-settlement claim, money received, or release of 403 to income. Points 5.3.1 to 5.3.7, 5.5.1 and 4.17 for a recipient that is no organisational unit of the state. Reverse a step with reverseContributoryEntry.

Nástroj MCP: `post-contributory-transfer-step`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`step` "advance\_received" | "long\_advance\_received" | "settled\_in\_year" | "advance\_cleared" | "long\_advance\_cleared" | "surplus\_returned" | "top\_up\_received" | "estimate" | "settled\_later" | "no\_settlement" | "received" | "release" povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné max 9007199254740991

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

`estimateHaler` integer min -9007199254740991 max 9007199254740991

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

`moneyAccount` string

`description` string max 200 chars

### Odpověď · 201

`transferId` string povinné

`entryId` null | string povinné

`step` string povinné

`lines` object\[\] povinné

`accountNumber` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/contributory/transfers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/post \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "step": "advance_received",
  "date": "2026-10-30",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/contributory/transfers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/post', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "step": "advance_received",
    "date": "2026-10-30",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/contributory/transfers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/post",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "step": "advance_received",
        "date": "2026-10-30",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## The rozvaha or výkaz zisku a ztráty of a contributory organisation as an XML message for CSÚIS, for upload on its portal

POST `/v1/ledger/csuis/export`

The rozvaha or výkaz zisku a ztráty of a contributory organisation as an XML message for CSÚIS, for upload on its portal. Validated against package no. 57 of the XSD schemas of the Státní pokladna. Unsigned, and nothing is sent: the responsible person uploads it. personId is the number CSÚIS gave that person.

Nástroj MCP: `export-csuis-statement`

### Tělo požadavku

`report` "balance\_sheet" | "income\_statement" povinné

`periodId` string povinné

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`personName` string povinné max 200 chars

`email` string povinné email

`personId` string povinné max 15 chars

ID of the person.

`phone` string max 30 chars

`chapter` string max 3 chars

### Odpověď · 200

Vrací soubor application/xml.

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/csuis/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "report": "balance_sheet",
  "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "personName": "Pekárna U Lípy s.r.o.",
  "email": "info@example.cz",
  "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}' \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/csuis/export', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "report": "balance_sheet",
    "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "personName": "Pekárna U Lípy s.r.o.",
    "email": "info@example.cz",
    "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  }),
});
const file = await response.arrayBuffer();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/csuis/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "report": "balance_sheet",
        "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "personName": "Pekárna U Lípy s.r.o.",
        "email": "info@example.cz",
        "personId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
)
content = response.content
```

## Who a contributory organisation last sent as the responsible person of a CSÚIS message

GET `/v1/ledger/csuis/sender`

Who a contributory organisation last sent as the responsible person of a CSÚIS message

Nástroj MCP: `get-csuis-sender`

### Odpověď · 200

`ico` null | string povinné

`name` null | string povinné

`email` null | string

`personId` string

`personName` string

```bash
curl https://api.damedoklad.cz/v1/ledger/csuis/sender \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/csuis/sender', {
  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/ledger/csuis/sender",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: analytika

GET `/v1/ledger/dimensions`

List střediska, činnosti, and zakázky

Nástroj MCP: `list-dimensions`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`kind` "center" | "activity" | "project"

`active` "true" | "false"

### Odpověď · 200

`data` object\[\] povinné

`object` "dimension" povinné

`id` string povinné

`kind` string povinné

`code` string povinné

`name` string povinné

`isActive` boolean povinné

`purposeCode` string | null

`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/ledger/dimensions \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/dimensions', {
  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/ledger/dimensions",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Vytvoření: analytika

POST `/v1/ledger/dimensions`

Create a středisko (center), činnost (activity), or zakázka (project)

Nástroj MCP: `create-dimension`

### Tělo požadavku

`kind` "center" | "activity" | "project" povinné

`code` string povinné max 24 chars

`name` string povinné max 200 chars

`purposeCode` string

### Odpověď · 201

`id` string povinné

`kind` string povinné

`code` string povinné

`name` string povinné

`isActive` boolean povinné

`purposeCode` string | null

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/dimensions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "center",
    "code": "string",
    "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/ledger/dimensions",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "center",
        "code": "string",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Detail: analytika

GET `/v1/ledger/dimensions/{id}`

Get a středisko, činnost, or zakázka

Nástroj MCP: `get-dimension`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`kind` string povinné

`code` string povinné

`name` string povinné

`isActive` boolean povinné

`purposeCode` string | null

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/dimensions/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/ledger/dimensions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: analytika

PATCH `/v1/ledger/dimensions/{id}`

Rename or deactivate a středisko, činnost, or zakázka

Nástroj MCP: `update-dimension`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`isActive` boolean

`purposeCode` string | null

### Odpověď · 200

`id` string povinné

`kind` string povinné

`code` string povinné

`name` string povinné

`isActive` boolean povinné

`purposeCode` string | null

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/dimensions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "isActive": false,
  "purposeCode": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/dimensions/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.",
    "isActive": false,
    "purposeCode": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/dimensions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "isActive": False,
        "purposeCode": "string"
    },
)
data = response.json()
```

## Smazání: analytika

DELETE `/v1/ledger/dimensions/{id}`

Delete a dimension nothing has been posted to. Otherwise deactivate it

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

Nástroj MCP: `delete-dimension`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/dimensions/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/ledger/dimensions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The ČNB rate list for a date. Fetches and caches it when it is not stored yet

GET `/v1/ledger/exchange-rates`

The ČNB rate list for a date. Fetches and caches it when it is not stored yet

Nástroj MCP: `list-exchange-rates`

### Parametry dotazu

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "exchange\_rate" povinné

`currency` string povinné

`country` null | string

`currencyName` string

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`source` string povinné

`id` null | string

`date` string date

`validDate` string date

`stale` boolean

`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/ledger/exchange-rates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-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/ledger/exchange-rates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Set a manual rate for a currency and date, for currencies or days ČNB does not publish

POST `/v1/ledger/exchange-rates`

Set a manual rate for a currency and date, for currencies or days ČNB does not publish

Nástroj MCP: `set-exchange-rate`

### Tělo požadavku

`currency` string povinné 3 chars

ISO 4217 currency code, for example CZK or EUR.

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`rate` number povinné

`amount` integer max 9007199254740991

### Odpověď · 201

`currency` string povinné

`country` null | string

`currencyName` string

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`source` string povinné

`id` null | string

`date` string date

`validDate` string date

`stale` boolean

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/exchange-rates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "currency": "CZK",
  "date": "2026-10-30",
  "rate": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "currency": "CZK",
    "date": "2026-10-30",
    "rate": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/exchange-rates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "currency": "CZK",
        "date": "2026-10-30",
        "rate": 1
    },
)
data = response.json()
```

## Download the ČNB daily rates for a date and cache them. Manual rates stay

POST `/v1/ledger/exchange-rates/fetch`

Download the ČNB daily rates for a date and cache them. Manual rates stay

Nástroj MCP: `fetch-exchange-rates`

### Tělo požadavku

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`validDate` string povinné date

`count` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/exchange-rates/fetch \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/exchange-rates/fetch",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## List the pevné kurzy this firm uses during the year

GET `/v1/ledger/exchange-rates/fixed`

List the pevné kurzy this firm uses during the year

Nástroj MCP: `list-fixed-rates`

### 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` "fx\_fixed\_rate" povinné

`id` string povinné

`currency` string povinné

`validFrom` string povinné date

`validTo` string povinné date

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`sourceValidDate` string povinné date

`createdAt` 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/ledger/exchange-rates/fixed \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed', {
  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/ledger/exchange-rates/fixed",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Use a pevný kurz for a currency over a period: the ČNB rate of its first day, ending at the latest with the accounting period

POST `/v1/ledger/exchange-rates/fixed`

Use a pevný kurz for a currency over a period: the ČNB rate of its first day, ending at the latest with the accounting period. Zákon 563/1991 Sb. § 24d odst. 4 fixes the rate to the one published for the first day, so it cannot be typed in. Documents and payments dated in the period use it. The balance sheet date keeps the general rate. Banks, insurers, and similar institutions may not use a pevný kurz (§ 24d odst. 5).

Nástroj MCP: `create-fixed-rate`

### Tělo požadavku

`currency` string povinné 3 chars

ISO 4217 currency code, for example CZK or EUR.

`validFrom` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`validTo` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`currency` string povinné

`validFrom` string povinné date

`validTo` string povinné date

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`sourceValidDate` string povinné date

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "currency": "CZK",
  "validFrom": "2026-10-30",
  "validTo": "2026-10-30"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "currency": "CZK",
    "validFrom": "2026-10-30",
    "validTo": "2026-10-30"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "currency": "CZK",
        "validFrom": "2026-10-30",
        "validTo": "2026-10-30"
    },
)
data = response.json()
```

## Stop using a pevný kurz. Anything already posted keeps the rate it was posted at

DELETE `/v1/ledger/exchange-rates/fixed/{id}`

Stop using a pevný kurz. Anything already posted keeps the rate it was posted at

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

Nástroj MCP: `delete-fixed-rate`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`currency` string povinné

`validFrom` string povinné date

`validTo` string povinné date

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`sourceValidDate` string povinné date

`createdAt` string povinné date-time

```bash
curl -X DELETE https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates/fixed/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/ledger/exchange-rates/fixed/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The rate for a currency on a date, for filling exchangeRate on a document

GET `/v1/ledger/exchange-rates/lookup`

The rate for a currency on a date, for filling exchangeRate on a document. ratePerUnit is CZK per one unit of the currency. stale means ČNB was unreachable and a recent rate stands in.

Nástroj MCP: `lookup-exchange-rate`

### Parametry dotazu

`currency` string povinné 3 chars

ISO 4217 currency code, for example CZK or EUR.

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`currency` string povinné

`country` null | string

`currencyName` string

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`source` string povinné

`id` null | string

`date` string date

`validDate` string date

`stale` boolean

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates/lookup', {
  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/ledger/exchange-rates/lookup",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The ČNB monthly list of other currencies (kurzy ostatních měn), published on the last working day of a month for the whole next month

GET `/v1/ledger/exchange-rates/monthly`

The ČNB monthly list of other currencies (kurzy ostatních měn), published on the last working day of a month for the whole next month. year and month name the month of publication. Rate lookups use the list automatically for currencies outside the daily rates.

Nástroj MCP: `list-monthly-exchange-rates`

### Parametry dotazu

`year` integer povinné min 2000 max 2100

`month` integer povinné min 1 max 12

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

### Odpověď · 200

`data` object\[\] povinné

`object` "exchange\_rate" povinné

`currency` string povinné

`country` null | string

`currencyName` string

`amount` integer povinné

`rate` number povinné

`ratePerUnit` number povinné

`source` string povinné

`id` null | string

`date` string date

`validDate` string date

`stale` boolean

`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/ledger/exchange-rates/monthly \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exchange-rates/monthly', {
  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/ledger/exchange-rates/monthly",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download an accounting report as CSV (semicolons, decimal comma, UTF-8 with BOM)

GET `/v1/ledger/exports/{report}/csv`

Download an accounting report as CSV (semicolons, decimal comma, UTF-8 with BOM). report: balance-sheet, income-statement, income-statement-functional, cash-flow, equity-changes, trial-balance, journal, cash-book, receivables, payables, income-expense, assets-liabilities. Takes the same filters as the report, plus unit and lang.

Nástroj MCP: `export-accounting-report-csv`

### Parametry v cestě

`report` string povinné

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`structure` "full" | "short" | "micro"

`level` "analytic" | "synthetic"

`unit` "czk" | "thousands"

`lang` "cs" | "en"

`account` string max 8 chars

`sourceType` string max 32 chars

`search` string max 200 chars

### Odpověď · 200

Vrací soubor text/csv; charset=utf-8.

```bash
curl https://api.damedoklad.cz/v1/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv', {
  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/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/csv",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Download an accounting report as a printable PDF, such as the rozvaha or výkaz zisku a ztráty in the statutory layout

GET `/v1/ledger/exports/{report}/pdf`

Download an accounting report as a printable PDF, such as the rozvaha or výkaz zisku a ztráty in the statutory layout. Same reports and filters as the CSV export. unit=thousands prints whole thousands of CZK, as the statements are filed.

Nástroj MCP: `export-accounting-report-pdf`

### Parametry v cestě

`report` string povinné

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`structure` "full" | "short" | "micro"

`level` "analytic" | "synthetic"

`unit` "czk" | "thousands"

`lang` "cs" | "en"

`account` string max 8 chars

`sourceType` string max 32 chars

`search` string max 200 chars

### Odpověď · 200

Vrací soubor application/pdf.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exports/obj_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/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Download an accounting report as an Excel workbook

GET `/v1/ledger/exports/{report}/xlsx`

Download an accounting report as an Excel workbook. Same reports and filters as the CSV export. Money cells are real numbers.

Nástroj MCP: `export-accounting-report-xlsx`

### Parametry v cestě

`report` string povinné

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`structure` "full" | "short" | "micro"

`level` "analytic" | "synthetic"

`unit` "czk" | "thousands"

`lang` "cs" | "en"

`account` string max 8 chars

`sourceType` string max 32 chars

`search` string max 200 chars

### Odpověď · 200

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

```bash
curl https://api.damedoklad.cz/v1/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/xlsx \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/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/ledger/exports/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/xlsx",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Detail: hlavní kniha, účet

GET `/v1/ledger/general-ledger/{number}`

Hlavní kniha for one account: opening balance, movements with running balance, monthly turnover. A synthetic number includes its analytic accounts.

Nástroj MCP: `get-account-ledger`

### Parametry v cestě

`number` string povinné

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`account` null | object povinné

`number` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`type` string povinné

`periodId` string povinné

`periodName` string povinné

`from` string povinné date

`to` string povinné date

`openingHaler` integer povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`closingHaler` integer povinné

`movements` object\[\] povinné

`id` string povinné

`entryId` null | string povinné

`entryNumber` integer povinné

`entryDate` string povinné date

`accountNumber` null | string povinné

`description` null | string povinné

`documentNumber` null | string povinné

`sourceType` null | string povinné

`sourceId` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` string | null povinné

`projectId` null | string povinné

`balanceHaler` integer povinné

`byMonth` object\[\] povinné

`month` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`balanceHaler` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/general-ledger/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/ledger/general-ledger/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Výkaz o příjmech a výdajích for jednoduché účetnictví, by hlavní and hospodářská činnost

GET `/v1/ledger/income-expense-statement`

Výkaz o příjmech a výdajích for jednoduché účetnictví, by hlavní and hospodářská činnost

Nástroj MCP: `get-income-expense-statement`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`income` object povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`totalHaler` integer | null povinné

`total` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`totalHaler` integer | null povinné

`expense` object povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`totalHaler` integer | null povinné

`total` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`totalHaler` integer | null povinné

`difference` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`totalHaler` integer | null povinné

`exceedsSingleEntryLimit` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/income-expense-statement \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/income-expense-statement', {
  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/ledger/income-expense-statement",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List the účetní deník with lines. Filter by period, dates, account, contact, source, or dimension

GET `/v1/ledger/journal`

List the účetní deník with lines. Filter by period, dates, account, contact, source, or dimension

Nástroj MCP: `list-journal-entries`

### 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.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`account` string max 8 chars

`periodId` string

ID of the period. Find it with list-periods.

`sourceType` string max 32 chars

`contactId` string

ID of the contact. Find it with list-contacts.

### Odpověď · 200

`data` object\[\] povinné

`object` "journal\_entry" povinné

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`sourceType` string povinné

`sourceId` null | string povinné

`sourceEvent` null | string povinné

`documentNumber` null | string povinné

`reversalOfId` null | string povinné

`reversedById` null | string povinné

`canReverse` boolean povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`object` "journal\_line" povinné

`id` string povinné

`accountNumber` string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`description` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` null | string povinné

`projectId` null | string povinné

`currency` null | string povinné

`foreignAmount` null | number 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/ledger/journal \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/journal', {
  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/ledger/journal",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Post an interní doklad: a balanced manual entry with at least two lines

POST `/v1/ledger/journal`

Post an interní doklad: a balanced manual entry with at least two lines. Debit must equal credit. Set isOpening for počáteční stavy of the first year in the app, posted against 701. Accounts 702 and 710 belong to the year-end close.

Nástroj MCP: `create-journal-entry`

### Tělo požadavku

`entryDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`description` string povinné max 200 chars

`documentNumber` string max 64 chars

`isOpening` boolean

`lines` object\[\] povinné

`accountNumber` string povinné

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

`debitHaler` integer min 0 max 9007199254740991

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

`creditHaler` integer min 0 max 9007199254740991

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

`description` string max 240 chars

`contactId` string

ID of the contact. Find it with list-contacts.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`pairingSymbol` string max 32 chars

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`sourceType` string povinné

`sourceId` null | string povinné

`sourceEvent` null | string povinné

`documentNumber` null | string povinné

`reversalOfId` null | string povinné

`reversedById` null | string povinné

`canReverse` boolean povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`object` "journal\_line" povinné

`id` string povinné

`accountNumber` string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`description` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` null | string povinné

`projectId` null | string povinné

`currency` null | string povinné

`foreignAmount` null | number povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/journal \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entryDate": "2026-10-30",
  "description": "Pečivo, říjen",
  "lines": [
    {
      "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "accountNumber": "518"
    },
    {
      "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "accountNumber": "518"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/journal', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "entryDate": "2026-10-30",
    "description": "Pečivo, říjen",
    "lines": [
      {
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "accountNumber": "518"
      },
      {
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "accountNumber": "518"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/journal",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "entryDate": "2026-10-30",
        "description": "Pečivo, říjen",
        "lines": [
            {
                "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "accountNumber": "518"
            },
            {
                "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "accountNumber": "518"
            }
        ]
    },
)
data = response.json()
```

## Get one journal entry with its lines

GET `/v1/ledger/journal/{id}`

Get one journal entry with its lines

Nástroj MCP: `get-journal-entry`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`sourceType` string povinné

`sourceId` null | string povinné

`sourceEvent` null | string povinné

`documentNumber` null | string povinné

`reversalOfId` null | string povinné

`reversedById` null | string povinné

`canReverse` boolean povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`object` "journal\_line" povinné

`id` string povinné

`accountNumber` string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`description` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` null | string povinné

`projectId` null | string povinné

`currency` null | string povinné

`foreignAmount` null | number povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/journal/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/ledger/journal/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Reverse a manual entry with swapped sides. Posted entries are never edited

POST `/v1/ledger/journal/{id}/reverse`

Reverse a manual entry with swapped sides. Posted entries are never edited. Entries that came from a document, the close, or a revaluation are undone from there instead.

Nástroj MCP: `reverse-journal-entry`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`description` string max 200 chars

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`number` integer povinné

`entryDate` string povinné date

`description` string povinné

`sourceType` string povinné

`sourceId` null | string povinné

`sourceEvent` null | string povinné

`documentNumber` null | string povinné

`reversalOfId` null | string povinné

`reversedById` null | string povinné

`canReverse` boolean povinné

`totalHaler` integer | null povinné

`lines` object\[\] povinné

`object` "journal\_line" povinné

`id` string povinné

`accountNumber` string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`description` null | string povinné

`contactId` null | string povinné

`centerId` null | string povinné

`activityId` null | string povinné

`projectId` null | string povinné

`currency` null | string povinné

`foreignAmount` null | number povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/journal/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "description": "Pečivo, říjen"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/journal/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30",
    "description": "Pečivo, říjen"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/journal/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reverse",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30",
        "description": "Pečivo, říjen"
    },
)
data = response.json()
```

## List úvěry and zápůjčky of daňová evidence and jednoduché účetnictví with their balances

GET `/v1/ledger/loans`

List úvěry and zápůjčky of daňová evidence and jednoduché účetnictví with their balances

Nástroj MCP: `list-loans`

### 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` "ledger\_loan" povinné

`id` string povinné

`kind` string povinné

`name` string povinné

`contactId` string | null povinné

`balanceHaler` integer povinné

`movements` object\[\] povinné

`object` "ledger\_loan\_movement" povinné

`id` string povinné

`movedOn` string povinné date

`kind` string povinné

`amountHaler` integer povinné

`moneyAccount` null | string povinné

`cashEntryId` null | string 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/ledger/loans \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/loans', {
  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/ledger/loans",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Add a loan received or granted. Its movements feed the přehled o majetku a závazcích

POST `/v1/ledger/loans`

Add a loan received or granted. Its movements feed the přehled o majetku a závazcích

Nástroj MCP: `create-loan`

### Tělo požadavku

`kind` "received" | "granted" povinné

`name` string povinné max 200 chars

`contactId` string

ID of the contact. Find it with list-contacts.

### Odpověď · 201

`id` string povinné

`kind` string povinné

`name` string povinné

`contactId` string | null povinné

`balanceHaler` integer povinné

`movements` object\[\] povinné

`object` "ledger\_loan\_movement" povinné

`id` string povinné

`movedOn` string povinné date

`kind` string povinné

`amountHaler` integer povinné

`moneyAccount` null | string povinné

`cashEntryId` null | string povinné

`note` string | null povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/loans', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "kind": "received",
    "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/ledger/loans",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "received",
        "name": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Record a loan movement: an opening balance, a drawdown, or a repayment. With moneyAccount it also writes the pass-through peněžní deník row

POST `/v1/ledger/loans/{id}/movements`

Record a loan movement: an opening balance, a drawdown, or a repayment. With moneyAccount it also writes the pass-through peněžní deník row. Loan principal is neither income nor an expense, so the row is a pass-through. Interest is an ordinary expense row of its own.

Nástroj MCP: `create-loan-movement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`movedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`kind` "opening" | "drawdown" | "repayment" povinné

`amountHaler` integer povinné max 9007199254740991

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

`moneyAccount` "bank" | "cash"

`note` string max 240 chars

### Odpověď · 201

`id` string povinné

`kind` string povinné

`name` string povinné

`contactId` string | null povinné

`balanceHaler` integer povinné

`movements` object\[\] povinné

`object` "ledger\_loan\_movement" povinné

`id` string povinné

`movedOn` string povinné date

`kind` string povinné

`amountHaler` integer povinné

`moneyAccount` null | string povinné

`cashEntryId` null | string povinné

`note` string | null povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "movedOn": "2026-10-30",
  "kind": "opening",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "movedOn": "2026-10-30",
    "kind": "opening",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "movedOn": "2026-10-30",
        "kind": "opening",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Remove a loan movement, reversing its peněžní deník row, while its period is open

DELETE `/v1/ledger/loans/{id}/movements/{movementId}`

Remove a loan movement, reversing its peněžní deník row, while its period is open

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

Nástroj MCP: `delete-loan-movement`

### Parametry v cestě

`id` string povinné

`movementId` string povinné

ID of the movement. Find it with list-movements.

### Odpověď · 200

`id` string povinné

`kind` string povinné

`name` string povinné

`contactId` string | null povinné

`balanceHaler` integer povinné

`movements` object\[\] povinné

`object` "ledger\_loan\_movement" povinné

`id` string povinné

`movedOn` string povinné date

`kind` string povinné

`amountHaler` integer povinné

`moneyAccount` null | string povinné

`cashEntryId` null | string povinné

`note` string | null povinné

```bash
curl -X DELETE https://api.damedoklad.cz/v1/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements/mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements/mov_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/ledger/loans/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/movements/mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List date locks by area (books, stock, orders, assets, vat, service) and the single records that are locked

GET `/v1/ledger/locks`

List date locks by area (books, stock, orders, assets, vat, service) and the single records that are locked

Nástroj MCP: `list-date-locks`

### 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` "date\_lock" povinné

`id` string povinné

`area` string povinné

`lockedThrough` string povinné date

`level` integer povinné

`note` null | string povinné

`appliesToMe` boolean povinné

`updatedAt` 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/ledger/locks \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/locks', {
  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/ledger/locks",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Lock an area up to a date, or move the lock. Level 1 leaves owner and accountant free to write, level 2 stops everyone

PUT `/v1/ledger/locks/{area}`

Lock an area up to a date, or move the lock. Level 1 leaves owner and accountant free to write, level 2 stops everyone. The books lock also stops automatic postings dated inside it. Moving the date back reopens those days, and the change is in the audit log.

Nástroj MCP: `set-date-lock`

### Parametry v cestě

`area` string povinné

### Tělo požadavku

`lockedThrough` string povinné YYYY-MM-DD

`level` 1 | 2 výchozí `1`

`note` string max 240 chars

### Odpověď · 200

`id` string povinné

`area` string povinné

`lockedThrough` string povinné date

`level` integer povinné

`note` null | string povinné

`appliesToMe` boolean povinné

`updatedAt` string povinné date-time

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/locks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "lockedThrough": "2026-10-30"
}'
```

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

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/locks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "lockedThrough": "2026-10-30"
    },
)
data = response.json()
```

## Remove the date lock of an area

DELETE `/v1/ledger/locks/{area}`

Remove the date lock of an area

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

Nástroj MCP: `delete-date-lock`

### Parametry v cestě

`area` string povinné

### Odpověď · 200

`id` string povinné

`area` string povinné

`deleted` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/locks/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/ledger/locks/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List single records that are locked

GET `/v1/ledger/locks/records`

List single records that are locked

Nástroj MCP: `list-record-locks`

### 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` "record\_lock" povinné

`id` string povinné

`objectType` null | string povinné

`objectId` null | string povinné

`label` null | string povinné

`level` integer povinné

`note` null | string povinné

`createdAt` 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/ledger/locks/records \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/locks/records', {
  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/ledger/locks/records",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Lock one record by its id: a document, stock document, asset, journal entry, complaint, service job, or bank movement. Every write addressed to it is refused until unlocked, and so is paying a locked document from the bank or the till

POST `/v1/ledger/locks/records`

Lock one record by its id: a document, stock document, asset, journal entry, complaint, service job, or bank movement. Every write addressed to it is refused until unlocked, and so is paying a locked document from the bank or the till

Nástroj MCP: `create-record-lock`

### Tělo požadavku

`objectId` string povinné

ID of the object.

`level` 1 | 2 výchozí `1`

`note` string max 240 chars

### Odpověď · 201

`id` string povinné

`objectType` null | string povinné

`objectId` null | string povinné

`label` null | string povinné

`level` integer povinné

`note` null | string povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/locks/records \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "objectId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

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

```python
import os
import requests

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

## Unlock one record, by the id of the lock

DELETE `/v1/ledger/locks/records/{id}`

Unlock one record, by the id of the lock

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

Nástroj MCP: `delete-record-lock`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`objectType` null | string povinné

`objectId` null | string povinné

`label` null | string povinné

`level` integer povinné

`note` null | string povinné

`createdAt` string povinné date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/locks/records/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/ledger/locks/records/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Lock a VAT month once filed: documents reported in it are refused until it is unlocked

POST `/v1/ledger/locks/vat/period`

Lock a VAT month once filed: documents reported in it are refused until it is unlocked. A quarterly payer locks the whole quarter. A correction of a filed month is a dodatečné přiznání, so unlock first, or date the correction in an open month where the law allows it.

Nástroj MCP: `lock-vat-period`

### Tělo požadavku

`year` integer povinné min 2000 max 2100

`month` integer povinné min 1 max 12

`level` 1 | 2 výchozí `1`

### Odpověď · 200

`id` string povinné

`area` string povinné

`lockedThrough` string povinné date

`level` integer povinné

`note` null | string povinné

`appliesToMe` boolean povinné

`updatedAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/locks/vat/period \
  -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/ledger/locks/vat/period', {
  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/ledger/locks/vat/period",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "year": 2026,
        "month": 1
    },
)
data = response.json()
```

## The opening balances posted through the migration screen, if any

GET `/v1/ledger/opening-balances`

The opening balances posted through the migration screen, if any

Nástroj MCP: `get-opening-balances`

### Odpověď · 200

`posted` boolean povinné

`date` null | string povinné date

`entryIds` string\[\] povinné

`resultHaler` integer

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/opening-balances', {
  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/ledger/opening-balances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Post opening balances for a company migrating mid-life: balance sheet accounts through 701, and result accounts of a year under way as turnover

POST `/v1/ledger/opening-balances`

Post opening balances for a company migrating mid-life: balance sheet accounts through 701, and result accounts of a year under way as turnover. Debits must equal credits across all rows. Allowed once; undo it to enter it again. A stated opening balance of a bank account or register in these rows gives way to them.

Nástroj MCP: `post-opening-balances`

### Tělo požadavku

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`documentNumber` string max 64 chars

`rows` object\[\] povinné

`accountNumber` string povinné

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

`debitHaler` integer min 0 max 9007199254740991

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

`creditHaler` integer min 0 max 9007199254740991

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

### Odpověď · 201

`posted` boolean povinné

`date` null | string povinné date

`entryIds` string\[\] povinné

`resultHaler` integer

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/opening-balances \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "rows": [
    {
      "accountNumber": "518"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/opening-balances', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30",
    "rows": [
      {
        "accountNumber": "518"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/opening-balances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30",
        "rows": [
            {
                "accountNumber": "518"
            }
        ]
    },
)
data = response.json()
```

## Undo the opening balances with reversal entries, while their period is open

DELETE `/v1/ledger/opening-balances`

Undo the opening balances with reversal entries, while their period is open

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

Nástroj MCP: `undo-opening-balances`

### Odpověď · 200

`posted` boolean povinné

`date` null | string povinné date

`entryIds` string\[\] povinné

`resultHaler` integer

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/opening-balances', {
  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/ledger/opening-balances",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Check opening balances before posting: the difference that must be zero, the running result, and the entries that would post

POST `/v1/ledger/opening-balances/preview`

Check opening balances before posting: the difference that must be zero, the running result, and the entries that would post

Nástroj MCP: `preview-opening-balances`

### Tělo požadavku

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`documentNumber` string max 64 chars

`rows` object\[\] povinné

`accountNumber` string povinné

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

`debitHaler` integer min 0 max 9007199254740991

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

`creditHaler` integer min 0 max 9007199254740991

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

### Odpověď · 200

`differenceHaler` integer povinné

`resultHaler` integer povinné

`openingLines` object\[\] povinné

`accountNumber` null | string povinné

`debitHaler` integer

`creditHaler` integer

`description` null | string

`turnoverLines` object\[\] povinné

`accountNumber` null | string povinné

`creditHaler` integer

`debitHaler` integer

`description` null | string

`canPost` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/opening-balances/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "rows": [
    {
      "accountNumber": "518"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/opening-balances/preview', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "rows": [
      {
        "accountNumber": "518"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/opening-balances/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "rows": [
            {
                "accountNumber": "518"
            }
        ]
    },
)
data = response.json()
```

## Kniha závazků at any date, derived from received invoices and their settlements. Without a journal it also holds what payroll still owes

GET `/v1/ledger/payables`

Kniha závazků at any date, derived from received invoices and their settlements. Without a journal it also holds what payroll still owes

Nástroj MCP: `get-payables-book`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Odpověď · 200

`date` string povinné date

`rows` object\[\] povinné

`id` string povinné

`number` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`currency` null | string povinné

`totalHaler` integer | null povinné

`paidHaler` integer povinné

`openHaler` integer povinné

`openCzkHaler` integer povinné

`overdueDays` integer povinné

`type` string

`kind` string

`totals` object povinné

`openCzkHaler` integer povinné

`overdueCzkHaler` integer povinné

`payrollCzkHaler` integer

`retainedCzkHaler` integer

`total` integer povinné

`hasMore` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/payables', {
  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/ledger/payables",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Seznam: účetní období

GET `/v1/ledger/periods`

List accounting periods with their status, entry counts, and year-end close

Nástroj MCP: `list-periods`

### 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` "period" povinné

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean 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/ledger/periods \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods', {
  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/ledger/periods",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What must be done before the year-end close: unpaired movements, drafts, depreciation, stocktake, revaluation, accruals, VAT, income tax

GET `/v1/ledger/periods/{id}/checklist`

What must be done before the year-end close: unpaired movements, drafts, depreciation, stocktake, revaluation, accruals, VAT, income tax. Each item says done, todo, or not\_applicable, how many things are open, and where to fix them. Items the books cannot prove are confirmed by hand with confirmYearEndChecklistItem. The checklist advises and never blocks the close.

Nástroj MCP: `get-year-end-checklist`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`items` object\[\] povinné

`params` object povinné

`months` string\[\]

`from` string date

`to` string date

`accounts` any\[\]

`periods` string\[\]

`date` string date

`key` string povinné

`status` string povinné

`count` integer povinné

`action` object povinné

`path` null | string

`tab` string

`canConfirm` boolean povinné

`confirmation` null | object povinné

`at` string povinné date-time

`note` null | string povinné

`openCount` integer povinné

`ready` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/checklist', {
  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/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/checklist",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Confirm or clear one item of the year-end checklist that a person has to vouch for

PUT `/v1/ledger/periods/{id}/checklist/{item}`

Confirm or clear one item of the year-end checklist that a person has to vouch for

Nástroj MCP: `confirm-year-end-checklist-item`

### Parametry v cestě

`id` string povinné

`item` string povinné

### Tělo požadavku

`confirmed` boolean povinné

`note` string max 500 chars

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`items` object\[\] povinné

`params` object povinné

`months` string\[\]

`from` string date

`to` string date

`accounts` any\[\]

`periods` string\[\]

`date` string date

`key` string povinné

`status` string povinné

`count` integer povinné

`action` object povinné

`path` null | string

`tab` string

`canConfirm` boolean povinné

`confirmation` null | object povinné

`at` string povinné date-time

`note` null | string povinné

`openCount` integer povinné

`ready` boolean povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/checklist/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "confirmed": false
}'
```

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

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/checklist/itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "confirmed": False
    },
)
data = response.json()
```

## Uzavření: účetní období

POST `/v1/ledger/periods/{id}/close`

Lock a period of daňová evidence or jednoduché účetnictví. Podvojné účetnictví closes through the year-end close

Nástroj MCP: `close-period`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`confirm` true povinné

### Odpověď · 200

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/close \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "confirm": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/close', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "confirm": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Year-end close preview: the result, the 710, 702, and 701 entries, and blocking errors and warnings

GET `/v1/ledger/periods/{id}/closing`

Year-end close preview: the result, the 710, 702, and 701 entries, and blocking errors and warnings

Nástroj MCP: `preview-closing`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`closingDate` string povinné date

`openingDate` null | string povinné date

`nextPeriodName` string povinné

`resultHaler` integer povinné

`legalForm` string povinné

`entries` object povinné

`resultCarry` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`profitAndLoss` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`resultTransfer` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`balanceSheet` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`opening` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`ownerTransfer` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`errors` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

`params` object povinné

`differenceHaler` integer

`period` string

`warnings` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

`params` object povinné

`count` integer

`accounts` object\[\]

`accountNumber` null | string povinné

`balanceHaler` integer povinné

`date` string date

`missingRates` any\[\]

`canClose` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing', {
  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/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Run the year-end close: post 710 and 702 closing entries and 701 opening entries, carry the result to 431 (491 for a sole trader), lock the period

POST `/v1/ledger/periods/{id}/closing`

Run the year-end close: post 710 and 702 closing entries and 701 opening entries, carry the result to 431 (491 for a sole trader), lock the period. Creates the next period if needed. An earlier result still on 431 moves to 428 or 429 (491 for a sole trader), per ČÚS 018 bod 3.1.11. A v.o.s. must post the partners share first. Can be undone until something else is posted into the next period.

Nástroj MCP: `run-closing`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`confirm` true povinné

### Odpověď · 201

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "confirm": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "confirm": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Undo the year-end close with reversal entries and reopen the period, if nothing else is posted into the next period

DELETE `/v1/ledger/periods/{id}/closing`

Undo the year-end close with reversal entries and reopen the period, if nothing else is posted into the next period

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

Nástroj MCP: `undo-closing`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing', {
  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/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closing",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Reopen the latest closed period. A year-end close must be undone instead

POST `/v1/ledger/periods/{id}/reopen`

Reopen the latest closed period. A year-end close must be undone instead

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

Nástroj MCP: `reopen-period`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`confirm` true povinné

### Odpověď · 200

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "confirm": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reopen', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "confirm": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## The result before and after tax, the legal form, and the tax, provision, and partner share postings already made for a period

GET `/v1/ledger/periods/{id}/year-end`

The result before and after tax, the legal form, and the tax, provision, and partner share postings already made for a period

Nástroj MCP: `get-year-end-overview`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`legalForm` string povinné

`resultHaler` integer povinné

`taxHaler` integer povinné

`shareHaler` integer povinné

`beforeTaxHaler` integer povinné

`beforeShareHaler` integer povinné

`steps` object\[\] povinné

`object` "year\_end\_step" povinné

`id` string povinné

`periodId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer povinné

`details` object povinné

`resultHaler` integer

`sharePercent` integer

`kind` string

`note` null | string

`allocations` object\[\]

`amountHaler` integer povinné

`accountNumber` null | string povinné

`entryId` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end', {
  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/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Transfer the partners share of the result through 596: all of it for a v.o.s., the komplementář percentage for a k.s.

POST `/v1/ledger/periods/{id}/year-end/partner-share`

Transfer the partners share of the result through 596: all of it for a v.o.s., the komplementář percentage for a k.s.

Nástroj MCP: `create-partner-share`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`sharePercent` number max 100

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer povinné

`details` object povinné

`resultHaler` integer

`sharePercent` integer

`kind` string

`note` null | string

`allocations` object\[\]

`amountHaler` integer povinné

`accountNumber` null | string povinné

`entryId` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/partner-share \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "sharePercent": 1
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/partner-share', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "sharePercent": 1
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/partner-share",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "sharePercent": 1
    },
)
data = response.json()
```

## Post income tax (591/341), an income tax provision (599/453) or its release (453/599), a statutory provision (552/451), or another provision (554/459) at the last day of the period

POST `/v1/ledger/periods/{id}/year-end/steps`

Post income tax (591/341), an income tax provision (599/453) or its release (453/599), a statutory provision (552/451), or another provision (554/459) at the last day of the period

Nástroj MCP: `create-year-end-step`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`kind` "income\_tax" | "tax\_provision" | "tax\_provision\_release" | "statutory\_provision" | "other\_provision" povinné

`amountHaler` integer povinné max 9007199254740991

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

`description` string max 200 chars

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer povinné

`details` object povinné

`resultHaler` integer

`sharePercent` integer

`kind` string

`note` null | string

`allocations` object\[\]

`amountHaler` integer povinné

`accountNumber` null | string povinné

`entryId` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/steps \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "income_tax",
  "amountHaler": 1210000
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/steps', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "kind": "income_tax",
    "amountHaler": 1210000
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/periods/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/year-end/steps",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "kind": "income_tax",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Create the accounting period after the latest one

POST `/v1/ledger/periods/next`

Create the accounting period after the latest one

Nástroj MCP: `create-next-period`

### Odpověď · 201

`id` string povinné

`name` string povinné

`startsOn` string povinné date

`endsOn` string povinné date

`closedAt` null | string povinné date-time

`status` string povinné

`journalEntryCount` integer povinné

`cashEntryCount` integer povinné

`closing` null | object povinné

`id` string povinné

`resultHaler` integer povinné

`createdAt` string povinné date-time

`earlierPeriodOpen` boolean povinné

`laterPeriodClosed` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/periods/next \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/periods/next', {
  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/ledger/periods/next",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Ekonomické ukazatele by year: liquidity, profitability, activity, and debt, each with its stated formula

GET `/v1/ledger/ratios`

Ekonomické ukazatele by year: liquidity, profitability, activity, and debt, each with its stated formula. Textbook formulas, stated on every row. Read from balances before the closing entries; the current year is a running figure.

Nástroj MCP: `get-economic-ratios`

### Parametry dotazu

`years` integer min 1 max 10

`toYear` integer min 2000 max 2100

### Odpověď · 200

`years` integer\[\] povinné

`currentYear` integer povinné

`ratios` object\[\] povinné

`key` string povinné

`group` string povinné

`cs` string povinné

`en` string povinné

`formula` object povinné

`cs` string povinné

`en` string povinné

`unit` null | string povinné

`values` object\[\] povinné

`year` integer povinné

`value` null | number povinné

`longTerm` object\[\]

`year` integer povinné

`receivablesHaler` integer povinné

`payablesHaler` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/ratios', {
  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/ledger/ratios",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Download the ekonomické ukazatele as a PDF

GET `/v1/ledger/ratios/pdf`

Download the ekonomické ukazatele as a PDF

Nástroj MCP: `get-economic-ratios-pdf`

### Parametry dotazu

`years` integer min 1 max 10

`toYear` integer min 2000 max 2100

### Odpověď · 200

Vrací soubor application/pdf.

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/ratios/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/ledger/ratios/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Kniha pohledávek at any date, derived from issued invoices and credit notes and their payments

GET `/v1/ledger/receivables`

Kniha pohledávek at any date, derived from issued invoices and credit notes and their payments

Nástroj MCP: `get-receivables-book`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Odpověď · 200

`date` string povinné date

`rows` object\[\] povinné

`id` string povinné

`number` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`currency` null | string povinné

`totalHaler` integer | null povinné

`paidHaler` integer povinné

`openHaler` integer povinné

`openCzkHaler` integer povinné

`overdueDays` integer povinné

`retentions` object\[\]

`amountHaler` integer | null povinné

`dueDate` null | string povinné date

`retainedNotDueHaler` integer

`retainedNotDueCzkHaler` integer

`retainedHaler` integer

`retainedCzkHaler` integer

`totals` object povinné

`openCzkHaler` integer povinné

`overdueCzkHaler` integer povinné

`retainedCzkHaler` integer

`total` integer povinné

`hasMore` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/receivables', {
  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/ledger/receivables",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List batch re-classifications: who moved what, when, and why

GET `/v1/ledger/reclassifications`

List batch re-classifications: who moved what, when, and why

Nástroj MCP: `list-reclassifications`

### 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` "reclassification\_batch" povinné

`id` string povinné

`date` string povinné date

`reason` string povinné

`toAccount` null | string povinné

`toCenterId` null | string povinné

`toActivityId` string | null povinné

`toProjectId` string | null povinné

`filters` object povinné

`to` string povinné date

`from` string povinné date

`search` string

`account` null | string povinné

`lineCount` integer povinné

`amountHaler` integer povinné

`entryId` null | string povinné

`createdById` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | 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/ledger/reclassifications \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/reclassifications', {
  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/ledger/reclassifications",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Move selected journal lines to another account or dimension with one correcting entry. Originals stay, and the batch is recorded in the audit log

POST `/v1/ledger/reclassifications`

Move selected journal lines to another account or dimension with one correcting entry. Originals stay, and the batch is recorded in the audit log. The entry date must be in the same open period as every line, because moving a cost across years would change a result that is already reported.

Nástroj MCP: `create-reclassification`

### Tělo požadavku

`filter` object povinné

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`account` string povinné min 3 chars max 8 chars

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`search` string max 200 chars

`target` object povinné

`toAccount` string

`toCenterId` string | null

ID of the to center.

`toActivityId` string | null

ID of the to activity.

`toProjectId` string | null

ID of the to project.

`lineIds` string\[\] povinné

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`reason` string povinné max 200 chars

### Odpověď · 201

`id` string povinné

`date` string povinné date

`reason` string povinné

`toAccount` null | string povinné

`toCenterId` null | string povinné

`toActivityId` string | null povinné

`toProjectId` string | null povinné

`filters` object povinné

`to` string povinné date

`from` string povinné date

`search` string

`account` null | string povinné

`lineCount` integer povinné

`amountHaler` integer povinné

`entryId` null | string povinné

`createdById` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/reclassifications \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filter": {
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "account": "string",
    "from": "2026-10-30",
    "to": "2026-10-30"
  },
  "target": {
    "toAccount": "518",
    "toCenterId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "toActivityId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  },
  "lineIds": [
    "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ],
  "date": "2026-10-30",
  "reason": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/reclassifications', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "filter": {
      "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "account": "string",
      "from": "2026-10-30",
      "to": "2026-10-30"
    },
    "target": {
      "toAccount": "518",
      "toCenterId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "toActivityId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
    "lineIds": [
      "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    ],
    "date": "2026-10-30",
    "reason": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/reclassifications",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "filter": {
            "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
            "account": "string",
            "from": "2026-10-30",
            "to": "2026-10-30"
        },
        "target": {
            "toAccount": "518",
            "toCenterId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
            "toActivityId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        },
        "lineIds": [
            "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
        ],
        "date": "2026-10-30",
        "reason": "string"
    },
)
data = response.json()
```

## Undo a batch re-classification with a reversal entry, which frees its lines to be moved again

DELETE `/v1/ledger/reclassifications/{id}`

Undo a batch re-classification with a reversal entry, which frees its lines to be moved again

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

Nástroj MCP: `undo-reclassification`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`date` string povinné date

`reason` string povinné

`toAccount` null | string povinné

`toCenterId` null | string povinné

`toActivityId` string | null povinné

`toProjectId` string | null povinné

`filters` object povinné

`to` string povinné date

`from` string povinné date

`search` string

`account` null | string povinné

`lineCount` integer povinné

`amountHaler` integer povinné

`entryId` null | string povinné

`createdById` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/reclassifications/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/ledger/reclassifications/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The journal lines a batch re-classification could move: account, date range, and optional dimension, contact, and text filters

GET `/v1/ledger/reclassifications/preview`

The journal lines a batch re-classification could move: account, date range, and optional dimension, contact, and text filters. Lines of closed periods, reversed entries, and the year-end close are left out. Control accounts that a document payment reads (311, 321, 314, 051, 052, 151, 152, 153, 324, 343) cannot be moved.

Nástroj MCP: `preview-reclassification`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`account` string povinné min 3 chars max 8 chars

`from` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`contactId` string

ID of the contact. Find it with list-contacts.

`search` string max 200 chars

### Odpověď · 200

`truncated` boolean povinné

`lineCount` integer povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`lines` object\[\] povinné

`id` string povinné

`entryId` null | string povinné

`date` string povinné date

`documentNumber` string | null povinné

`description` null | string povinné

`accountNumber` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`centerId` string | null povinné

`activityId` string | null povinné

`projectId` string | null povinné

`sourceType` null | string povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/reclassifications/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/ledger/reclassifications/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Reconcile synthetic and analytic accounts, and 311 and 315, 321 and 325, fixed assets, and inventories against their own records

GET `/v1/ledger/reconciliation`

Reconcile synthetic and analytic accounts, and 311 and 315, 321 and 325, fixed assets, and inventories against their own records. A synthetic account with analytics should hold nothing directly. A difference on a subledger row means the ledger and the record disagree: a year-end revaluation of foreign documents is one honest cause, and způsob B inventories another.

Nástroj MCP: `get-ledger-reconciliation`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`periodId` string povinné

`periodName` string povinné

`date` string povinné date

`accounts` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`balanceHaler` integer povinné

`analyticHaler` integer povinné

`unassignedHaler` integer povinné

`usesAnalytics` boolean povinné

`analytics` object\[\] povinné

`accountNumber` null | string povinné

`balanceHaler` integer povinné

`inChart` boolean povinné

`ok` boolean povinné

`subledgers` object\[\] povinné

`key` string povinné

`label` null | string povinné

`labelEn` string povinné

`ledgerHaler` integer povinné

`subledgerHaler` integer povinné

`differenceHaler` integer povinné

`ok` boolean povinné

`ok` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/reconciliation', {
  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/ledger/reconciliation",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## List recurring internal documents

GET `/v1/ledger/recurring-documents`

List recurring internal documents

Nástroj MCP: `list-recurring-journal-documents`

### 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` "recurring\_journal\_document" povinné

`id` string povinné

`name` string povinné

`description` string povinné

`frequency` string povinné

`nextDate` string povinné date

`endDate` null | string povinné date

`status` string povinné

`lines` object\[\] povinné

`debitHaler` integer

`accountNumber` null | string povinné

`creditHaler` integer

`lastPostedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` 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/ledger/recurring-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/recurring-documents', {
  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/ledger/recurring-documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a recurring internal document: balanced lines posted monthly, quarterly, or yearly from a start date

POST `/v1/ledger/recurring-documents`

Create a recurring internal document: balanced lines posted monthly, quarterly, or yearly from a start date. Dates already due post at once. The hourly job posts the rest, once per date.

Nástroj MCP: `create-recurring-journal-document`

### Tělo požadavku

`name` string povinné max 200 chars

`description` string povinné max 200 chars

`frequency` "monthly" | "quarterly" | "yearly" povinné

`startDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`endDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`lines` object\[\] povinné

`accountNumber` string povinné

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

`debitHaler` integer min 0 max 9007199254740991

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

`creditHaler` integer min 0 max 9007199254740991

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

`description` string max 240 chars

`contactId` string

ID of the contact. Find it with list-contacts.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`pairingSymbol` string max 32 chars

### Odpověď · 201

`id` string povinné

`name` string povinné

`description` string povinné

`frequency` string povinné

`nextDate` string povinné date

`endDate` null | string povinné date

`status` string povinné

`lines` object\[\] povinné

`debitHaler` integer

`accountNumber` null | string povinné

`creditHaler` integer

`lastPostedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/recurring-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "description": "Pečivo, říjen",
  "frequency": "monthly",
  "startDate": "2026-10-30",
  "lines": [
    {
      "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "accountNumber": "518"
    },
    {
      "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "accountNumber": "518"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/recurring-documents', {
  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.",
    "description": "Pečivo, říjen",
    "frequency": "monthly",
    "startDate": "2026-10-30",
    "lines": [
      {
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "accountNumber": "518"
      },
      {
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "accountNumber": "518"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/recurring-documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "description": "Pečivo, říjen",
        "frequency": "monthly",
        "startDate": "2026-10-30",
        "lines": [
            {
                "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "accountNumber": "518"
            },
            {
                "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "accountNumber": "518"
            }
        ]
    },
)
data = response.json()
```

## Change, pause, or resume a recurring internal document. Entries already posted do not change

PATCH `/v1/ledger/recurring-documents/{id}`

Change, pause, or resume a recurring internal document. Entries already posted do not change

Nástroj MCP: `update-recurring-journal-document`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`description` string max 200 chars

`frequency` "monthly" | "quarterly" | "yearly"

`nextDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`endDate` string | null

Date as YYYY-MM-DD.

`status` "active" | "paused"

`lines` object\[\]

`accountNumber` string povinné

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

`debitHaler` integer min 0 max 9007199254740991

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

`creditHaler` integer min 0 max 9007199254740991

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

`description` string max 240 chars

`contactId` string

ID of the contact. Find it with list-contacts.

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`pairingSymbol` string max 32 chars

### Odpověď · 200

`id` string povinné

`name` string povinné

`description` string povinné

`frequency` string povinné

`nextDate` string povinné date

`endDate` null | string povinné date

`status` string povinné

`lines` object\[\] povinné

`debitHaler` integer

`accountNumber` null | string povinné

`creditHaler` integer

`lastPostedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/recurring-documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "description": "Pečivo, říjen",
  "frequency": "monthly"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/recurring-documents/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.",
    "description": "Pečivo, říjen",
    "frequency": "monthly"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/recurring-documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "description": "Pečivo, říjen",
        "frequency": "monthly"
    },
)
data = response.json()
```

## Post every recurring internal document due by a date

POST `/v1/ledger/recurring-documents/run`

Post every recurring internal document due by a date

Nástroj MCP: `run-due-recurring-journal-documents`

### Tělo požadavku

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`documents` integer povinné

`posted` integer povinné

`failed` object\[\] povinné

`documentId` string povinné

`date` string povinné date

`error` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/recurring-documents/run \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/recurring-documents/run",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30"
    },
)
data = response.json()
```

## The transition to accounting of this company, if any, with its tax adjustment plan by year

GET `/v1/ledger/regime-transition`

The transition to accounting of this company, if any, with its tax adjustment plan by year

Nástroj MCP: `get-regime-transition`

### Odpověď · 200

`id` null | string povinné

`status` string povinné

`effectiveFrom` null | string date

`method` null | string

`snapshot` null | object

`payables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`adjustment` object povinné

`netHaler` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`spreadableHaler` integer povinné

`immediateIncreaseHaler` integer povinné

`fromRegime` string povinné

`receivables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`advancesPaid` any\[\] povinné

`inventoryHaler` integer povinné

`advancesReceived` any\[\] povinné

`plan` object\[\]

`year` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`increaseHaler` integer

`decreaseHaler` integer

`journalEntryId` null | string

`endedYear` integer | null

`postedAt` null | string date-time

```bash
curl https://api.damedoklad.cz/v1/ledger/regime-transition \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/regime-transition', {
  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/ledger/regime-transition",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Move from daňová evidence or jednoduché účetnictví to podvojné účetnictví from the first day of a period: post the opening entry against 701 and 491, keep the Příloha 3 adjustment for the tax return, and switch the regime

POST `/v1/ledger/regime-transition`

Move from daňová evidence or jednoduché účetnictví to podvojné účetnictví from the first day of a period: post the opening entry against 701 and 491, keep the Příloha 3 adjustment for the tax return, and switch the regime. One-off, or § 23 odst. 14 ZDP over 9 tax periods for zásoby and pohledávky. The date must have arrived and hold no cash book rows. The tax base is adjusted in the return, not in the books.

Nástroj MCP: `start-regime-transition`

### Tělo požadavku

`effectiveFrom` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`method` "one\_off" | "spread" výchozí `"one_off"`

`inventoryHaler` integer min 0 max 9007199254740991

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

`stampsHaler` integer min 0 max 9007199254740991

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

`advancesPaidTangibleHaler` integer min 0 max 9007199254740991

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

`other` object\[\]

`accountNumber` string povinné

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

`side` "debit" | "credit" povinné

`amountHaler` integer povinné max 9007199254740991

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

`description` string max 240 chars

`confirm` true povinné

### Odpověď · 201

`id` null | string povinné

`status` string povinné

`effectiveFrom` null | string date

`method` null | string

`snapshot` null | object

`payables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`adjustment` object povinné

`netHaler` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`spreadableHaler` integer povinné

`immediateIncreaseHaler` integer povinné

`fromRegime` string povinné

`receivables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`advancesPaid` any\[\] povinné

`inventoryHaler` integer povinné

`advancesReceived` any\[\] povinné

`plan` object\[\]

`year` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`increaseHaler` integer

`decreaseHaler` integer

`journalEntryId` null | string

`endedYear` integer | null

`postedAt` null | string date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/regime-transition \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "effectiveFrom": "2026-10-30",
  "confirm": true
}'
```

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

```python
import os
import requests

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

## Undo the transition while nothing else is posted in its period: reverse the opening entry and go back to daňová evidence

DELETE `/v1/ledger/regime-transition/{id}`

Undo the transition while nothing else is posted in its period: reverse the opening entry and go back to daňová evidence

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

Nástroj MCP: `undo-regime-transition`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` null | string povinné

`status` string povinné

`effectiveFrom` null | string date

`method` null | string

`snapshot` null | object

`payables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`adjustment` object povinné

`netHaler` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`spreadableHaler` integer povinné

`immediateIncreaseHaler` integer povinné

`fromRegime` string povinné

`receivables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`advancesPaid` any\[\] povinné

`inventoryHaler` integer povinné

`advancesReceived` any\[\] povinné

`plan` object\[\]

`year` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`increaseHaler` integer

`decreaseHaler` integer

`journalEntryId` null | string

`endedYear` integer | null

`postedAt` null | string date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/regime-transition/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/ledger/regime-transition/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Say the activity ended or stopped: § 23 odst. 14 ZDP brings the rest of the zásoby and pohledávky into that tax year

POST `/v1/ledger/regime-transition/{id}/end-spread`

Say the activity ended or stopped: § 23 odst. 14 ZDP brings the rest of the zásoby and pohledávky into that tax year

Nástroj MCP: `end-regime-transition-spread`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`endedYear` integer povinné min 2000 max 2100

`confirm` true povinné

### Odpověď · 200

`id` null | string povinné

`status` string povinné

`effectiveFrom` null | string date

`method` null | string

`snapshot` null | object

`payables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`adjustment` object povinné

`netHaler` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`spreadableHaler` integer povinné

`immediateIncreaseHaler` integer povinné

`fromRegime` string povinné

`receivables` object\[\] povinné

`number` null | string povinné

`netHaler` integer povinné

`contactOid` string povinné

`amountHaler` integer | null povinné

`contactName` null | string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`advancesPaid` any\[\] povinné

`inventoryHaler` integer povinné

`advancesReceived` any\[\] povinné

`plan` object\[\]

`year` integer povinné

`decreaseHaler` integer povinné

`increaseHaler` integer povinné

`increaseHaler` integer

`decreaseHaler` integer

`journalEntryId` null | string

`endedYear` integer | null

`postedAt` null | string date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/regime-transition/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/end-spread \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "endedYear": 2026,
  "confirm": true
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/regime-transition/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/end-spread', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "endedYear": 2026,
    "confirm": true
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/regime-transition/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/end-spread",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "endedYear": 2026,
        "confirm": True
    },
)
data = response.json()
```

## Přechod z daňové evidence nebo jednoduchého účetnictví na účetnictví: the opening entry and the tax adjustment under Příloha 3 ZDP for a date. Posts nothing

GET `/v1/ledger/regime-transition/preview`

Přechod z daňové evidence nebo jednoduchého účetnictví na účetnictví: the opening entry and the tax adjustment under Příloha 3 ZDP for a date. Posts nothing

Nástroj MCP: `preview-regime-transition`

### Parametry dotazu

`effectiveFrom` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`effectiveFrom` null | string povinné date

`closingDate` string povinné date

`money` object\[\] povinné

`accountNumber` null | string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`receivables` object\[\] povinné

`amountHaler` integer | null povinné

`contactOid` string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`netHaler` integer povinné

`number` null | string povinné

`contactName` null | string povinné

`payables` object\[\] povinné

`amountHaler` integer | null povinné

`contactOid` string povinné

`description` null | string povinné

`pairingSymbol` null | string povinné

`netHaler` integer povinné

`number` null | string povinné

`contactName` null | string povinné

`advancesReceived` any\[\] povinné

`advancesPaid` any\[\] povinné

`inventoryHaler` integer povinné

`inventory` object\[\] povinné

`accountNumber` null | string povinné

`amountHaler` integer | null povinné

`description` null | string povinné

`assets` any\[\] povinné

`loans` any\[\] povinné

`entry` object povinné

`lines` object\[\] povinné

`accountNumber` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`contactOid` string

`description` null | string povinné

`pairingSymbol` null | string

`equityHaler` integer povinné

`debitHaler` integer povinné

`adjustment` object povinné

`increaseHaler` integer povinné

`decreaseHaler` integer povinné

`netHaler` integer povinné

`spreadableHaler` integer povinné

`immediateIncreaseHaler` integer povinné

`plans` object povinné

`one_off` object\[\] povinné

`year` integer povinné

`increaseHaler` integer povinné

`decreaseHaler` integer povinné

`spread` object\[\] povinné

`year` integer povinné

`increaseHaler` integer povinné

`decreaseHaler` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/regime-transition/preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/regime-transition/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/ledger/regime-transition/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What is on 431 at a date, which accounts it can go to, and the distributions already posted

GET `/v1/ledger/result-distribution`

What is on 431 at a date, which accounts it can go to, and the distributions already posted

Nástroj MCP: `get-result-distribution`

### Parametry dotazu

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`legalForm` string povinné

`balanceHaler` integer povinné

`kind` string povinné

`earlierOpenPeriod` null | string povinné

`targets` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`nameEn` null | string povinné

`distributions` any\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/result-distribution \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/result-distribution', {
  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/ledger/result-distribution",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Post the owners decision on the result on 431: to 428, 429, 364, or funds. Every haléř must be allocated

POST `/v1/ledger/result-distribution`

Post the owners decision on the result on 431: to 428, 429, 364, or funds. Every haléř must be allocated. A dividend goes to 364 gross. Withholding tax under § 36 ZDP is a separate entry when it is paid out. Sole traders move the result to 491 at opening instead, and a v.o.s. uses 596.

Nástroj MCP: `distribute-result`

### Tělo požadavku

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`note` string max 500 chars

`allocations` object\[\] povinné

`accountNumber` string povinné

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

`amountHaler` integer povinné max 9007199254740991

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

`description` string max 240 chars

### Odpověď · 201

`id` string povinné

`periodId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer povinné

`details` object povinné

`resultHaler` integer

`sharePercent` integer

`kind` string

`note` null | string

`allocations` object\[\]

`amountHaler` integer povinné

`accountNumber` null | string povinné

`entryId` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/result-distribution \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "allocations": [
    {
      "accountNumber": "518",
      "amountHaler": 1210000
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/result-distribution', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "date": "2026-10-30",
    "allocations": [
      {
        "accountNumber": "518",
        "amountHaler": 1210000
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/result-distribution",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "date": "2026-10-30",
        "allocations": [
            {
                "accountNumber": "518",
                "amountHaler": 1210000
            }
        ]
    },
)
data = response.json()
```

## List posted revaluations of foreign-currency documents

GET `/v1/ledger/revaluations`

List posted revaluations of foreign-currency documents

Nástroj MCP: `list-revaluations`

### 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/ledger/revaluations \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/revaluations', {
  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/ledger/revaluations",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Revalue open foreign-currency receivables and payables, and foreign bank and cash balances, at the ČNB rate of a date, posting to 563 and 663

POST `/v1/ledger/revaluations`

Revalue open foreign-currency receivables and payables, and foreign bank and cash balances, at the ČNB rate of a date, posting to 563 and 663. One entry per document or money account. Later payments differ from the restated value. Zákon 563/1991 Sb. § 24 odst. 2 písm. b) and § 24c odst. 1.

Nástroj MCP: `post-revaluation`

### Tělo požadavku

`date` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 201

`id` string povinné

`date` string povinné date

`gainHaler` integer povinné

`lossHaler` integer povinné

`documentCount` integer povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

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

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

```python
import os
import requests

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

## Undo a revaluation with reversal entries, while its period is open and its documents have no later postings

DELETE `/v1/ledger/revaluations/{id}`

Undo a revaluation with reversal entries, while its period is open and its documents have no later postings

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

Nástroj MCP: `undo-revaluation`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`date` string povinné date

`gainHaler` integer povinné

`lossHaler` integer povinné

`documentCount` integer povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/revaluations/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/ledger/revaluations/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## What a year-end revaluation of open foreign-currency receivables and payables, and foreign bank and cash balances, would post to 563 and 663

GET `/v1/ledger/revaluations/preview`

What a year-end revaluation of open foreign-currency receivables and payables, and foreign bank and cash balances, would post to 563 and 663

Nástroj MCP: `preview-revaluation`

### Parametry dotazu

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`date` string povinné date

`gainHaler` integer povinné

`lossHaler` integer povinné

`missingRates` string\[\] povinné

`notes` object\[\] povinné

`accountNumber` null | string povinné

`name` null | string povinné

`code` null | string povinné

`message` null | string povinné

`documents` object\[\] povinné

`sourceType` null | string povinné

`sourceId` null | string povinné

`documentNumber` null | string povinné

`accountNumber` null | string povinné

`currency` null | string povinné

`balanceForeign` integer povinné

`balanceCzkHaler` integer povinné

`rate` number povinné

`rateAmount` integer povinné

`rateValidDate` string povinné date

`restatedCzkHaler` integer povinné

`adjustmentHaler` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/revaluations/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/ledger/revaluations/preview",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Saldo at a date on any account: journal lines grouped by párovací symbol, else by document number, with what stays open

GET `/v1/ledger/saldo`

Saldo at a date on any account: journal lines grouped by párovací symbol, else by document number, with what stays open. With no accountNumber it reads accounts marked trackSaldo, and 311, 314, 315, 321, 324, 325. Periods run together, so an item stays open across a year end.

Nástroj MCP: `get-saldo`

### Parametry dotazu

`accountNumber` string

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

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`toleranceHaler` integer min 0 max 9007199254740991

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

`settled` "true" | "false"

`byContact` "true" | "false"

`detail` "true" | "false"

`format` "csv" | "xlsx"

### Odpověď · 200

`date` string povinné date

`rows` object\[\] povinné

`accountNumber` null | string povinné

`symbol` string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`balanceHaler` integer povinné

`firstDate` string povinné date

`lastDate` string povinné date

`currency` null | string povinné

`foreignBalance` integer | null povinné

`settled` boolean povinné

`lines` object\[\]

`accountNumber` null | string povinné

`pairingSymbol` null | string povinné

`contactName` string | null povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`currency` string | null povinné

`foreignAmount` string | null povinné

`description` string | null povinné

`entryDate` string povinné date

`documentNumber` string | null povinné

`entryNumber` integer povinné

`entryId` null | string povinné

`contactId` string | null povinné

`foreignBalances` object\[\]

`currency` null | string povinné

`balance` integer povinné

`documentType` null | string

`documentId` null | string

`totals` object povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`balanceHaler` integer povinné

`foreign` object\[\]

`currency` null | string povinné

`balance` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/saldo', {
  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/ledger/saldo",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The párovací symbol set on a document, or null when it groups by its number

GET `/v1/ledger/saldo/documents/{id}/symbol`

The párovací symbol set on a document, or null when it groups by its number

Nástroj MCP: `get-document-pairing-symbol`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`documentId` null | string povinné

`documentType` null | string povinné

`symbol` null | string povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol', {
  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/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Put a párovací symbol on a document, or clear it: every line of the document and its payments then groups under it in saldo

PUT `/v1/ledger/saldo/documents/{id}/symbol`

Put a párovací symbol on a document, or clear it: every line of the document and its payments then groups under it in saldo. Nothing posted changes: saldo reads the symbol through the document, so this also works on an issued document in a closed period. A symbol typed on a journal line goes first.

Nástroj MCP: `set-document-pairing-symbol`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`documentType` "invoice" | "received\_invoice" | "credit\_note" | "proforma" | "supplier\_advance" | "other\_receivable" | "other\_payable" | "debit\_note" povinné

`symbol` string | null povinné

### Odpověď · 200

`documentId` null | string povinné

`documentType` null | string povinné

`symbol` null | string povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "documentType": "invoice",
  "symbol": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "documentType": "invoice",
    "symbol": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/saldo/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/symbol",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "documentType": "invoice",
        "symbol": "string"
    },
)
data = response.json()
```

## Download the saldo as CSV or XLSX

GET `/v1/ledger/saldo/export`

Download the saldo as CSV or XLSX

Nástroj MCP: `export-saldo`

### Parametry dotazu

`accountNumber` string

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

`date` string YYYY-MM-DD

Date as YYYY-MM-DD.

`toleranceHaler` integer min 0 max 9007199254740991

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

`settled` "true" | "false"

`byContact` "true" | "false"

`detail` "true" | "false"

`format` "csv" | "xlsx"

### Odpověď · 200

Vrací soubor text/csv.

```bash
curl https://api.damedoklad.cz/v1/ledger/saldo/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/saldo/export', {
  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/ledger/saldo/export",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## Detail: nastavení, hlavní kniha

GET `/v1/ledger/settings`

Legal form and size category the year-end close and the příloha depend on

Nástroj MCP: `get-ledger-settings`

### Odpověď · 200

`legalForm` string povinné

`entitySize` string povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/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/ledger/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Úprava: nastavení, hlavní kniha

PUT `/v1/ledger/settings`

Set the legal form (company, sole\_trader, vos, ks) and size category (micro, small, medium, large)

Nástroj MCP: `update-ledger-settings`

### Tělo požadavku

`legalForm` "company" | "sole\_trader" | "vos" | "ks"

`entitySize` "micro" | "small" | "medium" | "large"

### Odpověď · 200

`legalForm` string povinné

`entitySize` string povinné

```bash
curl -X PUT https://api.damedoklad.cz/v1/ledger/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "legalForm": "company",
  "entitySize": "micro"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "legalForm": "company",
    "entitySize": "micro"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/ledger/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "legalForm": "company",
        "entitySize": "micro"
    },
)
data = response.json()
```

## List balance sheet and income statement rows an account can be mapped to through statementRow

GET `/v1/ledger/statement-rows`

List balance sheet and income statement rows an account can be mapped to through statementRow

Nástroj MCP: `get-statement-rows`

### Odpověď · 200

`data` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`statement` string povinné

`side` string

`functionRows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`hasMore` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/statement-rows \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statement-rows', {
  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/ledger/statement-rows",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Rozvaha in the statutory layout of vyhláška 500/2002 Sb. with brutto, korekce, netto, and the prior period

GET `/v1/ledger/statements/balance-sheet`

Rozvaha in the statutory layout of vyhláška 500/2002 Sb. with brutto, korekce, netto, and the prior period. structure: full (plný rozsah), short (zkrácený), micro (písmena). Every row has exact haléře and a \`thousands\` block in whole thousands of CZK, footed as the law requires. Filter by dimension for an internal view.

Nástroj MCP: `get-balance-sheet`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`structure` "full" | "short" | "micro"

### Odpověď · 200

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`dic` null | string povinné

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`asOf` string povinné date

`priorPeriodName` null | string povinné

`priorAsOf` null | string povinné date

`structure` string povinné

`currency` null | string povinné

`legalBasis` null | string povinné

`assets` object povinné

`total` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`netHaler` integer povinné

`priorNetHaler` integer povinné

`thousands` object povinné

`gross` integer povinné

`correction` integer povinné

`net` integer povinné

`priorNet` integer povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`grossHaler` integer povinné

`correctionHaler` integer povinné

`netHaler` integer povinné

`priorNetHaler` integer povinné

`thousands` object povinné

`gross` integer povinné

`correction` integer povinné

`net` integer povinné

`priorNet` integer povinné

`liabilities` object povinné

`total` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`balanced` boolean povinné

`differenceHaler` integer povinné

`unmappedAccounts` any\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/balance-sheet \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/balance-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/ledger/statements/balance-sheet",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Přehled o peněžních tocích by the indirect method (§§ 40–43 of vyhláška 500/2002 Sb., ČÚS 023), reconciled to the real closing cash

GET `/v1/ledger/statements/cash-flow`

Přehled o peněžních tocích by the indirect method (§§ 40–43 of vyhláška 500/2002 Sb., ČÚS 023), reconciled to the real closing cash

Nástroj MCP: `get-cash-flow-statement`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`dic` null | string povinné

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`asOf` string povinné date

`priorPeriodName` null | string povinné

`priorAsOf` null | string povinné date

`structure` string povinné

`currency` null | string povinné

`legalBasis` null | string povinné

`method` null | string povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`kind` string povinné

`valueHaler` integer | null povinné

`thousands` object povinné

`value` integer povinné

`openingCashHaler` integer povinné

`closingCashHaler` integer povinné

`computedClosingHaler` integer

`differenceHaler` integer povinné

`balanced` boolean povinné

`voluntary` boolean

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/cash-flow \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/cash-flow', {
  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/ledger/statements/cash-flow",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Přehled o změnách vlastního kapitálu (§ 44 of vyhláška 500/2002 Sb.): opening, increases, decreases, and closing of each equity item

GET `/v1/ledger/statements/equity-changes`

Přehled o změnách vlastního kapitálu (§ 44 of vyhláška 500/2002 Sb.): opening, increases, decreases, and closing of each equity item

Nástroj MCP: `get-equity-changes-statement`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`dic` null | string povinné

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`asOf` string povinné date

`priorPeriodName` null | string povinné

`priorAsOf` null | string povinné date

`structure` string povinné

`currency` null | string povinné

`legalBasis` null | string povinné

`resultHaler` integer povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`openingHaler` integer povinné

`increaseHaler` integer povinné

`decreaseHaler` integer povinné

`closingHaler` integer povinné

`thousands` object

`opening` integer povinné

`increase` integer povinné

`decrease` integer povinné

`closing` integer povinné

`level` integer

`kind` string

`leaf` boolean

`total` object povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`openingHaler` integer povinné

`increaseHaler` integer povinné

`decreaseHaler` integer povinné

`closingHaler` integer povinné

`level` integer

`kind` string

`balanced` boolean

`mismatched` any\[\]

`issues` any\[\]

`voluntary` boolean

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/equity-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/ledger/statements/equity-changes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Výkaz zisku a ztráty (druhové členění) in the statutory layout of vyhláška 500/2002 Sb. with the prior period

GET `/v1/ledger/statements/income-statement`

Výkaz zisku a ztráty (druhové členění) in the statutory layout of vyhláška 500/2002 Sb. with the prior period. structure: full or short (římské číslice, písmena, výpočtové řádky). Same amount blocks as the balance sheet.

Nástroj MCP: `get-income-statement`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

`structure` "full" | "short" | "micro"

### Odpověď · 200

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`dic` null | string povinné

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`asOf` string povinné date

`priorPeriodName` null | string povinné

`priorAsOf` null | string povinné date

`structure` string povinné

`currency` null | string povinné

`legalBasis` null | string povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`kind` string povinné

`level` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`mainHaler` integer

`economicHaler` integer

`priorMainHaler` integer

`priorEconomicHaler` integer

`resultHaler` integer povinné

`priorResultHaler` integer

`netTurnoverHaler` integer

`unmappedAccounts` any\[\] povinné

`main` object

`beforeTaxHaler` integer povinné

`afterTaxHaler` integer povinné

`economic` object

`beforeTaxHaler` integer povinné

`afterTaxHaler` integer povinné

`costs` object\[\]

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`kind` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`priorMainHaler` integer povinné

`priorEconomicHaler` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`revenue` object\[\]

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`kind` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`priorMainHaler` integer povinné

`priorEconomicHaler` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`result` array | null

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`level` integer povinné

`kind` string povinné

`mainHaler` integer povinné

`economicHaler` integer povinné

`priorMainHaler` integer povinné

`priorEconomicHaler` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/income-statement \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/income-statement', {
  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/ledger/statements/income-statement",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Výkaz zisku a ztráty in účelové členění (příloha č. 3 of vyhláška 500/2002 Sb.) with the prior period. Same result as the druhové výkaz

GET `/v1/ledger/statements/income-statement-functional`

Výkaz zisku a ztráty in účelové členění (příloha č. 3 of vyhláška 500/2002 Sb.) with the prior period. Same result as the druhové výkaz. The decree does not say which cost is sales, distribution, or administration. defaultedAccounts counts cost accounts still on the default split; point an account elsewhere with functionRow.

Nástroj MCP: `get-functional-income-statement`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`asOf` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`entity` object povinné

`name` null | string povinné

`ico` null | string povinné

`dic` null | string povinné

`regime` string povinné

`periodId` string povinné

`periodName` string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`asOf` string povinné date

`priorPeriodName` any povinné

Null in every recorded response.

`priorAsOf` any povinné

Null in every recorded response.

`structure` string povinné

`currency` null | string povinné

`legalBasis` null | string povinné

`rows` object\[\] povinné

`key` string povinné

`code` null | string povinné

`label` null | string povinné

`labelEn` string povinné

`kind` string povinné

`level` integer povinné

`valueHaler` integer | null povinné

`priorHaler` integer povinné

`thousands` object povinné

`value` integer povinné

`prior` integer povinné

`resultHaler` integer povinné

`priorResultHaler` integer povinné

`netTurnoverHaler` integer povinné

`defaultedAccounts` integer povinné

`unmappedAccounts` any\[\] povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/income-statement-functional \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/income-statement-functional', {
  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/ledger/statements/income-statement-functional",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## The saved příloha k účetní závěrce for a period, or a fresh draft generated from the books if none is saved yet

GET `/v1/ledger/statements/notes`

The saved příloha k účetní závěrce for a period, or a fresh draft generated from the books if none is saved yet

Nástroj MCP: `get-statement-notes`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

### Odpověď · 200

`id` null | string povinné

`periodId` string povinné

`periodName` string povinné

`category` string povinné

`sections` object\[\] povinné

`key` string povinné

`legal` string

`title` null | string povinné

`titleEn` string

`source` string

`text` string povinné

`edited` boolean

`generatedAt` null | string povinné date-time

`updatedAt` null | string povinné date-time

`openSections` integer povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/notes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/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/ledger/statements/notes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Generate and save the příloha k účetní závěrce from the books. An edited příloha stays unless regenerate is set

POST `/v1/ledger/statements/notes`

Generate and save the příloha k účetní závěrce from the books. An edited příloha stays unless regenerate is set

Nástroj MCP: `generate-statement-notes`

### Tělo požadavku

`periodId` string

ID of the period. Find it with list-periods.

`category` "micro" | "small" | "medium" | "large"

`regenerate` boolean

### Odpověď · 201

`id` null | string povinné

`periodId` string povinné

`periodName` string povinné

`category` string povinné

`sections` object\[\] povinné

`key` string povinné

`legal` string

`title` null | string povinné

`titleEn` string

`source` string

`text` string povinné

`edited` boolean

`generatedAt` null | string povinné date-time

`updatedAt` null | string povinné date-time

`openSections` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/statements/notes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "category": "micro",
  "regenerate": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/notes', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "category": "micro",
    "regenerate": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/statements/notes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "periodId": "per_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "category": "micro",
        "regenerate": False
    },
)
data = response.json()
```

## Save edited text of příloha sections. Sections not named stay as they are

PATCH `/v1/ledger/statements/notes`

Save edited text of příloha sections. Sections not named stay as they are

Nástroj MCP: `update-statement-notes`

### Tělo požadavku

`periodId` string

ID of the period. Find it with list-periods.

`sections` object\[\] povinné

`key` string povinné max 40 chars

`text` string povinné max 20000 chars

### Odpověď · 200

`id` null | string povinné

`periodId` string povinné

`periodName` string povinné

`category` string povinné

`sections` object\[\] povinné

`key` string povinné

`legal` string

`title` null | string povinné

`titleEn` string

`source` string

`text` string povinné

`edited` boolean

`generatedAt` null | string povinné date-time

`updatedAt` null | string povinné date-time

`openSections` integer povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/statements/notes \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "sections": [
    {
      "key": "string",
      "text": "string"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/notes', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "sections": [
      {
        "key": "string",
        "text": "string"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/statements/notes",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "sections": [
            {
                "key": "string",
                "text": "string"
            }
        ]
    },
)
data = response.json()
```

## Download the saved příloha k účetní závěrce as a PDF

GET `/v1/ledger/statements/notes/pdf`

Download the saved příloha k účetní závěrce as a PDF. Sign it and file it yourself. Refused while sections still hold bracketed prompts.

Nástroj MCP: `download-statement-notes`

### Parametry dotazu

`periodId` string

ID of the period. Find it with list-periods.

### Odpověď · 200

Vrací soubor application/pdf.

```bash
curl https://api.damedoklad.cz/v1/ledger/statements/notes/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/statements/notes/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/ledger/statements/notes/pdf",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
content = response.content
```

## List předkontace: which accounts each document type posts to

GET `/v1/ledger/templates`

List předkontace: which accounts each document type posts to

Nástroj MCP: `list-accounting-templates`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`documentType` "issued\_invoice" | "received\_invoice" | "credit\_note" | "proforma"

### Odpověď · 200

`data` object\[\] povinné

`object` "accounting\_template" povinné

`id` string povinné

`code` string povinné

`name` string povinné

`documentType` string povinné

`debitAccount` string povinné

`creditAccount` string povinné

`isDefault` boolean povinné

`isSystem` boolean 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/ledger/templates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/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/ledger/templates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Create a předkontace. Set isDefault to use it for documents of that type that name none

POST `/v1/ledger/templates`

Create a předkontace. Set isDefault to use it for documents of that type that name none

Nástroj MCP: `create-accounting-template`

### Tělo požadavku

`code` string povinné max 24 chars

`name` string povinné max 200 chars

`documentType` "issued\_invoice" | "received\_invoice" | "credit\_note" | "proforma" povinné

`debitAccount` string povinné

`creditAccount` string povinné

`isDefault` boolean

### Odpověď · 201

`id` string povinné

`code` string povinné

`name` string povinné

`documentType` string povinné

`debitAccount` string povinné

`creditAccount` string povinné

`isDefault` boolean povinné

`isSystem` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/ledger/templates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "code": "string",
  "name": "Pekárna U Lípy s.r.o.",
  "documentType": "issued_invoice",
  "debitAccount": "518",
  "creditAccount": "518"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/templates', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "code": "string",
    "name": "Pekárna U Lípy s.r.o.",
    "documentType": "issued_invoice",
    "debitAccount": "518",
    "creditAccount": "518"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/ledger/templates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "code": "string",
        "name": "Pekárna U Lípy s.r.o.",
        "documentType": "issued_invoice",
        "debitAccount": "518",
        "creditAccount": "518"
    },
)
data = response.json()
```

## Update a předkontace. It applies to documents posted from now on

PATCH `/v1/ledger/templates/{id}`

Update a předkontace. It applies to documents posted from now on

Nástroj MCP: `update-accounting-template`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`code` string max 24 chars

`name` string max 200 chars

`debitAccount` string

`creditAccount` string

`isDefault` boolean

### Odpověď · 200

`id` string povinné

`code` string povinné

`name` string povinné

`documentType` string povinné

`debitAccount` string povinné

`creditAccount` string povinné

`isDefault` boolean povinné

`isSystem` boolean povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/ledger/templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "code": "string",
  "name": "Pekárna U Lípy s.r.o.",
  "debitAccount": "518"
}'
```

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

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/ledger/templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "code": "string",
        "name": "Pekárna U Lípy s.r.o.",
        "debitAccount": "518"
    },
)
data = response.json()
```

## Delete a předkontace no document uses

DELETE `/v1/ledger/templates/{id}`

Delete a předkontace no document uses

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

Nástroj MCP: `delete-accounting-template`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/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/ledger/templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Obratová předvaha: opening balance, debit and credit turnover, closing balance per account

GET `/v1/ledger/trial-balance`

Obratová předvaha: opening balance, debit and credit turnover, closing balance per account. Filter by period, dates, and dimension. level=synthetic folds analytic accounts into their parent.

Nástroj MCP: `get-trial-balance`

### Parametry dotazu

`centerId` string

ID of the center.

`activityId` string

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

`projectId` string

ID of the project.

`periodId` string

ID of the period. Find it with list-periods.

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`level` "analytic" | "synthetic"

### Odpověď · 200

`periodId` null | string povinné

`periodName` string povinné

`from` string povinné date

`to` string povinné date

`provisionalResultHaler` integer povinné

`rows` object\[\] povinné

`accountNumber` null | string povinné

`openingHaler` integer povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`name` null | string povinné

`openingDebitHaler` integer povinné

`openingCreditHaler` integer povinné

`closingHaler` integer povinné

`closingDebitHaler` integer povinné

`closingCreditHaler` integer povinné

`nameEn` null | string povinné

`totals` object povinné

`openingDebitHaler` integer povinné

`openingCreditHaler` integer povinné

`debitHaler` integer povinné

`creditHaler` integer povinné

`closingDebitHaler` integer povinné

`closingCreditHaler` integer povinné

`balanced` boolean povinné

```bash
curl https://api.damedoklad.cz/v1/ledger/trial-balance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/trial-balance', {
  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/ledger/trial-balance",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```

## Undo a tax, provision, partner share, or result distribution posting with a reversal entry, while its period is open

DELETE `/v1/ledger/year-end/steps/{id}`

Undo a tax, provision, partner share, or result distribution posting with a reversal entry, while its period is open

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

Nástroj MCP: `undo-year-end-step`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`periodId` string povinné

`kind` string povinné

`date` string povinné date

`amountHaler` integer povinné

`details` object povinné

`resultHaler` integer

`sharePercent` integer

`kind` string

`note` null | string

`allocations` object\[\]

`amountHaler` integer povinné

`accountNumber` null | string povinné

`entryId` null | string povinné

`createdAt` string povinné date-time

`undoneAt` null | string povinné date-time

```bash
curl -X DELETE https://api.damedoklad.cz/v1/ledger/year-end/steps/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/ledger/year-end/steps/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/ledger/year-end/steps/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
)
data = response.json()
```
