# Banka a pokladna · API DameDokladu

> Operace ve skupině Banka a pokladna.

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

# Banka a pokladna

Operace ve skupině Banka a pokladna.

## Seznam: bankovní účty

GET `/v1/bank-accounts`

List own bank accounts with current balance and the number of unmatched movements

Nástroj MCP: `list-bank-accounts`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Odpověď · 200

`data` object\[\] povinné

`object` "bank\_account" povinné

`id` string povinné

`contactId` null | string

`label` null | string

`accountNumber` null | string povinné

`bankCode` null | string povinné

`iban` null | string povinné

`currency` string povinné

`isDefault` boolean povinné

`publishedFromRegistry` boolean

`bic` null | string

`bankName` null | string

`bankStreet` string | null

`bankCity` string | null

`name` string

`swift` null | string

`ledgerAccount` string

`isActive` boolean

`openingBalanceHaler` integer

`openingDate` null | string date

`openingExchangeRate` string | null

`openingState` string

`bankBalanceHaler` integer | null

`bankBalanceOn` null | string date

`fio` object

`configured` boolean povinné

`enabled` boolean povinné

`lastSyncedAt` null | string povinné date-time

`lastSyncedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string date-time

`balanceHaler` integer

`unmatchedCount` integer

`balanceDiffHaler` integer | null

`sepaCreditorId` null | string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Vytvoření: bankovní účet

POST `/v1/bank-accounts`

Create a bank account. The analytic 221xxx account and the IBAN are filled in when omitted. A stated opening balance posts MD 221xxx / D 701, or the opening bank of the peněžní deník, unless opening entries already hold the account

Nástroj MCP: `create-bank-account`

### Tělo požadavku

`name` string povinné max 200 chars

`accountNumber` string povinné

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

`bankCode` string povinné

`iban` string max 42 chars

IBAN without spaces.

`swift` string

`sepaCreditorId` string min 5 chars max 35 chars

Identifier of the creditor in SEPA direct debit (CID), issued through the bank

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`ledgerAccount` string

`isDefault` boolean

`openingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

`openingDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`openingExchangeRate` number max 100000

### Odpověď · 201

`id` string povinné

`contactId` null | string

`label` null | string

`accountNumber` null | string povinné

`bankCode` null | string povinné

`iban` null | string povinné

`currency` string povinné

`isDefault` boolean povinné

`publishedFromRegistry` boolean

`bic` null | string

`bankName` null | string

`bankStreet` string | null

`bankCity` string | null

`name` string

`swift` null | string

`ledgerAccount` string

`isActive` boolean

`openingBalanceHaler` integer

`openingDate` null | string date

`openingExchangeRate` string | null

`openingState` string

`bankBalanceHaler` integer | null

`bankBalanceOn` null | string date

`fio` object

`configured` boolean povinné

`enabled` boolean povinné

`lastSyncedAt` null | string povinné date-time

`lastSyncedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string date-time

`balanceHaler` integer

`unmatchedCount` integer

`balanceDiffHaler` integer | null

`sepaCreditorId` null | string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bank-accounts', {
  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.",
    "accountNumber": "string",
    "bankCode": "0100"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bank-accounts",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "accountNumber": "string",
        "bankCode": "0100"
    },
)
data = response.json()
```

## Detail: bankovní účet

GET `/v1/bank-accounts/{id}`

Get one bank account

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

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`contactId` null | string

`label` null | string

`accountNumber` null | string povinné

`bankCode` null | string povinné

`iban` null | string povinné

`currency` string povinné

`isDefault` boolean povinné

`publishedFromRegistry` boolean

`bic` null | string

`bankName` null | string

`bankStreet` string | null

`bankCity` string | null

`name` string

`swift` null | string

`ledgerAccount` string

`isActive` boolean

`openingBalanceHaler` integer

`openingDate` null | string date

`openingExchangeRate` string | null

`openingState` string

`bankBalanceHaler` integer | null

`bankBalanceOn` null | string date

`fio` object

`configured` boolean povinné

`enabled` boolean povinné

`lastSyncedAt` null | string povinné date-time

`lastSyncedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string date-time

`balanceHaler` integer

`unmatchedCount` integer

`balanceDiffHaler` integer | null

`sepaCreditorId` null | string

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

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

## Úprava: bankovní účet

PATCH `/v1/bank-accounts/{id}`

Update a bank account. Currency and the analytic account are locked once movements are paired. A changed opening balance reverses what it posted and posts anew

Nástroj MCP: `update-bank-account`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`accountNumber` string

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

`bankCode` string

`iban` string | null

IBAN without spaces.

`swift` string | null

`sepaCreditorId` string min 5 chars max 35 chars

Identifier of the creditor in SEPA direct debit (CID), issued through the bank

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`ledgerAccount` string

`isDefault` boolean

`openingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

`openingDate` string | null

Date as YYYY-MM-DD.

`openingExchangeRate` number max 100000

`isActive` boolean

### Odpověď · 200

`id` string povinné

`contactId` null | string

`label` null | string

`accountNumber` null | string povinné

`bankCode` null | string povinné

`iban` null | string povinné

`currency` string povinné

`isDefault` boolean povinné

`publishedFromRegistry` boolean

`bic` null | string

`bankName` null | string

`bankStreet` string | null

`bankCity` string | null

`name` string

`swift` null | string

`ledgerAccount` string

`isActive` boolean

`openingBalanceHaler` integer

`openingDate` null | string date

`openingExchangeRate` string | null

`openingState` string

`bankBalanceHaler` integer | null

`bankBalanceOn` null | string date

`fio` object

`configured` boolean povinné

`enabled` boolean povinné

`lastSyncedAt` null | string povinné date-time

`lastSyncedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string date-time

`balanceHaler` integer

`unmatchedCount` integer

`balanceDiffHaler` integer | null

`sepaCreditorId` null | string

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bank-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.",
    "accountNumber": "string",
    "bankCode": "0100"
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Smazání: bankovní účet

DELETE `/v1/bank-accounts/{id}`

Delete a bank account that has no movements, statements, or payment orders. Its posted opening balance is reversed

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

Nástroj MCP: `delete-bank-account`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

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

## Save the Fio API token of an account and turn automatic sync on or off. The token is stored encrypted and never returned

PUT `/v1/bank-accounts/{id}/fio`

Save the Fio API token of an account and turn automatic sync on or off. The token is stored encrypted and never returned

Nástroj MCP: `update-bank-account-fio`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`token` string

`enabled` boolean

### Odpověď · 200

`id` string povinné

`contactId` null | string

`label` null | string

`accountNumber` null | string povinné

`bankCode` null | string povinné

`iban` null | string povinné

`currency` string povinné

`isDefault` boolean povinné

`publishedFromRegistry` boolean

`bic` null | string

`bankName` null | string

`bankStreet` string | null

`bankCity` string | null

`name` string

`swift` null | string

`ledgerAccount` string

`isActive` boolean

`openingBalanceHaler` integer

`openingDate` null | string date

`openingExchangeRate` string | null

`openingState` string

`bankBalanceHaler` integer | null

`bankBalanceOn` null | string date

`fio` object

`configured` boolean povinné

`enabled` boolean povinné

`lastSyncedAt` null | string povinné date-time

`lastSyncedOn` null | string povinné date

`lastError` null | string povinné

`createdAt` string date-time

`balanceHaler` integer

`unmatchedCount` integer

`balanceDiffHaler` integer | null

`sepaCreditorId` null | string

```bash
curl -X PUT https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fio \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "token": "string",
  "enabled": false
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fio', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "token": "string",
    "enabled": false
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.put(
    "https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fio",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "token": "string",
        "enabled": False
    },
)
data = response.json()
```

## Download new movements of a Fio account now. Fio allows one call per token in 30 seconds

POST `/v1/bank-accounts/{id}/fio/sync`

Download new movements of a Fio account now. Fio allows one call per token in 30 seconds

Nástroj MCP: `sync-bank-account-fio`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`bankAccountId` string povinné

`from` string povinné date

`to` string povinné date

`importedCount` integer povinné

`duplicateCount` integer povinné

`autoMatchedCount` integer povinné

`closingBalanceHaler` integer | null povinné

`warnings` any\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fio/sync \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## The predefined choices for movements without a document: bank fee, interest, taxes, own transfer

GET `/v1/bank-categories`

The predefined choices for movements without a document: bank fee, interest, taxes, own transfer

Nástroj MCP: `list-bank-categories`

### 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` "bank\_category" povinné

`id` string povinné

`direction` string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`nameCs` string povinné

`nameEn` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Unpaid issued invoices, debit notes, and other receivables ready for a příkaz k inkasu. \`hasBankAccount\` tells whether the customer has a Czech account, \`mandates\` how many active SEPA mandates

GET `/v1/bank-collectable-documents`

Unpaid issued invoices, debit notes, and other receivables ready for a příkaz k inkasu. \`hasBankAccount\` tells whether the customer has a Czech account, \`mandates\` how many active SEPA mandates

Nástroj MCP: `list-collectable-documents`

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

`dueTo` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

### Odpověď · 200

`data` object\[\] povinné

`object` "collectable\_document" povinné

`kind` string povinné

`id` string povinné

`number` null | string povinné

`contactId` null | string povinné

`contactName` null | string povinné

`variableSymbol` null | string povinné

`dueDate` null | string povinné date

`currency` null | string povinné

`totalHaler` integer | null povinné

`remainingHaler` integer | null povinné

`hasBankAccount` boolean povinné

`mandates` integer povinné

`inPayment` boolean povinné

`paymentOrderId` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

```bash
curl https://api.damedoklad.cz/v1/bank-collectable-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## List bank movements across accounts with their pairing and suggested matches. status=open means anything not fully paired

GET `/v1/bank-movements`

List bank movements across accounts with their pairing and suggested matches. status=open means anything not fully paired

Nástroj MCP: `list-bank-movements`

### 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` "unmatched" | "partial" | "matched" | "non\_document" | "open"

`bankAccountId` string

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

`statementId` string

ID of the statement.

### Odpověď · 200

`data` object\[\] povinné

`object` "bank\_movement" povinné

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Add one movement by hand, for a bank that gives no export

POST `/v1/bank-movements`

Add one movement by hand, for a bank that gives no export

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

### Tělo požadavku

`bankAccountId` string povinné

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

`bookedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné min -9007199254740991 max 9007199254740991

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

`counterpartyAccount` string max 42 chars

`counterpartyBankCode` string

`counterpartyName` string max 200 chars

`variableSymbol` string

`constantSymbol` string

`specificSymbol` string

`message` string max 400 chars

### Odpověď · 201

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "bookedOn": "2026-10-30",
  "amountHaler": 1210000
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bank-movements",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "bookedOn": "2026-10-30",
        "amountHaler": 1210000
    },
)
data = response.json()
```

## Get one bank movement with its pairing and suggestions

GET `/v1/bank-movements/{id}`

Get one bank movement with its pairing and suggestions

Nástroj MCP: `get-bank-movement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

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

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

## Book a movement without a document: bank fee, interest, tax payment, transfer between own accounts, or a chosen account

POST `/v1/bank-movements/{id}/classify`

Book a movement without a document: bank fee, interest, tax payment, transfer between own accounts, or a chosen account

Nástroj MCP: `classify-bank-movement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`category` "bank\_fee" | "interest\_received" | "interest\_paid" | "interest\_tax" | "tax\_vat" | "tax\_income" | "tax\_payroll" | "tax\_road" | "insurance\_social" | "insurance\_health" | "insurance\_social\_own" | "insurance\_health\_own" | "card\_settlement" | "own\_transfer" | "reversal" | "other" povinné

`amountHaler` integer max 9007199254740991

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

`accountNumber` string

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

`classification` "income\_taxable" | "income\_nontax" | "expense\_deductible" | "expense\_nontax" | "transfer"

`counterBankAccountId` string

ID of the counter bank account.

`exchangeRate` number max 100000

`feeHaler` integer max 9007199254740991

For category card\_settlement: what the provider kept. The clearing account clears by the payout and this, and this goes on the fee account

`note` string max 2000 chars

`pairingSymbol` string max 32 chars

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/classify \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "category": "bank_fee"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/classify",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "category": "bank_fee"
    },
)
data = response.json()
```

## Pair a movement with one document, or split it across several. Also confirms a suggestion. Posts to the books, except kind hand\_payment: the line takes over a payment typed by hand, which already did. When that line is for less, on another account or on another date (code hand\_payment\_other\_date, the date of the statement coming first), resolution keep lets the payment stand, with the rest waiting and the money moved across analytics; resolution correct redoes the payment from the line

POST `/v1/bank-movements/{id}/match`

Pair a movement with one document, or split it across several. Also confirms a suggestion. Posts to the books, except kind hand\_payment: the line takes over a payment typed by hand, which already did. When that line is for less, on another account or on another date (code hand\_payment\_other\_date, the date of the statement coming first), resolution keep lets the payment stand, with the rest waiting and the money moved across analytics; resolution correct redoes the payment from the line

Nástroj MCP: `match-bank-movement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`allocations` object\[\] povinné

`kind` "invoice" | "received\_invoice" | "proforma" | "proforma\_refund" | "supplier\_advance" | "supplier\_advance\_refund" | "credit\_note" | "debit\_note" | "other\_receivable" | "other\_payable" | "payroll\_payment" | "travel\_order" | "travel\_advance" | "hand\_payment" povinné

`documentId` string povinné

ID of the document.

`amountHaler` integer max 9007199254740991

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

`documentAmountHaler` integer max 9007199254740991

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

`resolution` "keep" | "correct"

`note` string max 2000 chars

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/match \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "allocations": [
    {
      "kind": "invoice",
      "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/match', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "allocations": [
      {
        "kind": "invoice",
        "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/match",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "allocations": [
            {
                "kind": "invoice",
                "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## The rest of a payment typed by hand will not arrive: the payment shrinks to what statement lines confirmed, and the rest is open on the document again

POST `/v1/bank-movements/{id}/release-rest`

The rest of a payment typed by hand will not arrive: the payment shrinks to what statement lines confirmed, and the rest is open on the document again

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

Nástroj MCP: `release-hand-payment-rest`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`released` integer povinné

`confirmedCount` integer povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/release-rest \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## Undo the pairing of a movement, or one part of a split. Reverses the postings

POST `/v1/bank-movements/{id}/unmatch`

Undo the pairing of a movement, or one part of a split. Reverses the postings

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

Nástroj MCP: `unmatch-bank-movement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`allocationId` string

ID of the allocation.

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`statementId` null | string povinné

`source` string povinné

`externalId` null | string povinné

`bookedOn` string povinné date

`valueDate` string | null povinné

`amountHaler` integer povinné

`currency` string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`counterpartyName` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`bankType` null | string povinné

`isReversal` boolean povinné

`status` string povinné

`allocatedHaler` integer povinné

`remainingHaler` integer | null povinné

`createdAt` string povinné date-time

`allocations` object\[\] povinné

`object` "bank\_allocation" povinné

`id` string povinné

`kind` string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`paymentId` null | string povinné

`amountHaler` integer povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`counterBankAccountId` null | string povinné

`exchangeRate` null | number povinné

`orderItemId` null | string povinné

`confidence` null | number povinné

`matchedBy` string povinné

`note` null | string povinné

`createdAt` string povinné date-time

`suggestions` object\[\] povinné

`type` string povinné

`kind` string

`documentId` null | string

`number` null | string

`contactName` null | string

`orderItemId` null | string

`amountHaler` integer povinné

`remainingHaler` integer | null

`confidence` null | number povinné

`level` string povinné

`reason` null | string povinné

`source` string

`accountNumber` null | string

`classification` string | null

`category` null | string

`counterBankAccountId` null | string

`ruleId` string

`ruleName` string

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/unmatch \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "allocationId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

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

```python
import os
import requests

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

## Run automatic pairing over all open movements. Only exact matches above the safe threshold are paired

POST `/v1/bank-movements/auto-match`

Run automatic pairing over all open movements. Only exact matches above the safe threshold are paired

Nástroj MCP: `auto-match-bank-movements`

### Odpověď · 200

`checkedCount` integer povinné

`matchedCount` integer povinné

`movementIds` string\[\] povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/bank-movements/auto-match \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## Unpaid documents a movement can be paired with. direction=in lists issued invoices, proformas, debit notes, other receivables, and refunds of advances from suppliers; out lists received invoices, advances to suppliers, credit notes, other payables, payroll payments, and advances on business trips. Business trips follow their own side, and payments typed by hand (hand\_payment) wait on either for the line that takes them over

GET `/v1/bank-open-documents`

Unpaid documents a movement can be paired with. direction=in lists issued invoices, proformas, debit notes, other receivables, and refunds of advances from suppliers; out lists received invoices, advances to suppliers, credit notes, other payables, payroll payments, and advances on business trips. Business trips follow their own side, and payments typed by hand (hand\_payment) wait on either for the line that takes them over

Nástroj MCP: `list-bank-open-documents`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`direction` "in" | "out"

### Odpověď · 200

`data` object\[\] povinné

`object` "open\_document" povinné

`kind` string povinné

`id` string povinné

`number` null | string povinné

`variableSymbol` null | string povinné

`currency` null | string povinné

`totalHaler` integer | null povinné

`remainingHaler` integer | null povinné

`issueDate` null | string povinné date

`dueDate` null | string povinné date

`contactName` null | string povinné

`contactId` null | string povinné

`inPayment` boolean povinné

`incoming` boolean

`bankAccountId` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

```bash
curl https://api.damedoklad.cz/v1/bank-open-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## Post every stated opening balance of bank accounts and cash registers that is not in the books yet. A sweep does this by itself every few hours, so this only says at once what a closed period still stops. Safe to repeat

POST `/v1/bank-opening-balances/post`

Post every stated opening balance of bank accounts and cash registers that is not in the books yet. A sweep does this by itself every few hours, so this only says at once what a closed period still stops. Safe to repeat. Legal effect: posts MD 221xxx or 211xxx / D 701, or sets the opening cash and bank of the peněžní deník. A balance the opening entries already hold posts nothing. notPosted lists what a closed period stopped.

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

### Odpověď · 200

`notPosted` any\[\] povinné

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

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

## Totals for the bank page: movements waiting to be paired and how many of the newest have a confident suggestion

GET `/v1/bank-overview`

Totals for the bank page: movements waiting to be paired and how many of the newest have a confident suggestion

Nástroj MCP: `get-bank-overview`

### Odpověď · 200

`unmatchedCount` integer povinné

`unmatchedAbsHaler` integer povinné

`suggestedCount` integer povinné

`suggestedCountPartial` boolean povinné

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

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

## Unpaid received invoices, advances to suppliers, and other payables ready for a payment order, with a due date filter. \`kind\` tells them apart, inPayment marks those already on an order

GET `/v1/bank-payable-invoices`

Unpaid received invoices, advances to suppliers, and other payables ready for a payment order, with a due date filter. \`kind\` tells them apart, inPayment marks those already on an order

Nástroj MCP: `list-payable-received-invoices`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`dueTo` string YYYY-MM-DD

Date as YYYY-MM-DD.

`dueFrom` string YYYY-MM-DD

Date as YYYY-MM-DD.

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

### Odpověď · 200

`data` object\[\] povinné

`object` "payable\_invoice" povinné

`kind` string povinné

`id` string povinné

`number` null | string povinné

`supplierDocumentNumber` null | string

`contactName` null | string povinné

`variableSymbol` null | string povinné

`dueDate` null | string povinné date

`currency` null | string povinné

`totalHaler` integer | null povinné

`remainingHaler` integer | null povinné

`hasBankAccount` boolean povinné

`inPayment` boolean povinné

`paymentOrderId` null | string povinné

`approvalBlocked` 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/bank-payable-invoices \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## List pairing rules such as "ČEZ → 502". Rules only ever suggest, a person confirms

GET `/v1/bank-rules`

List pairing rules such as "ČEZ → 502". Rules only ever suggest, a person confirms

Nástroj MCP: `list-bank-rules`

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

### 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/bank-rules \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## Create a pairing rule: what to recognise on a movement, and how to book it

POST `/v1/bank-rules`

Create a pairing rule: what to recognise on a movement, and how to book it

Nástroj MCP: `create-bank-rule`

### Tělo požadavku

`name` string povinné max 200 chars

`direction` "any" | "in" | "out"

`counterpartyNameContains` string max 200 chars

`counterpartyAccount` string

`counterpartyBankCode` string

`messageContains` string max 200 chars

`variableSymbol` string

`category` "bank\_fee" | "interest\_received" | "interest\_paid" | "interest\_tax" | "tax\_vat" | "tax\_income" | "tax\_payroll" | "tax\_road" | "insurance\_social" | "insurance\_health" | "insurance\_social\_own" | "insurance\_health\_own" | "card\_settlement" | "own\_transfer" | "reversal" | "other" povinné

`accountNumber` string

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

`classification` "income\_taxable" | "income\_nontax" | "expense\_deductible" | "expense\_nontax" | "transfer"

`priority` integer min 0 max 1000

`isActive` boolean

### Odpověď · 201

`id` string povinné

`name` string povinné

`direction` string povinné

`counterpartyNameContains` null | string povinné

`counterpartyAccount` string | null povinné

`counterpartyBankCode` string | null povinné

`messageContains` null | string povinné

`variableSymbol` string | null povinné

`category` string povinné

`accountNumber` null | string povinné

`classification` string | null povinné

`priority` integer povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

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

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

```python
import os
import requests

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

## Update a pairing rule

PATCH `/v1/bank-rules/{id}`

Update a pairing rule

Nástroj MCP: `update-bank-rule`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`direction` "any" | "in" | "out"

`counterpartyNameContains` string max 200 chars

`counterpartyAccount` string

`counterpartyBankCode` string

`messageContains` string max 200 chars

`variableSymbol` string

`category` "bank\_fee" | "interest\_received" | "interest\_paid" | "interest\_tax" | "tax\_vat" | "tax\_income" | "tax\_payroll" | "tax\_road" | "insurance\_social" | "insurance\_health" | "insurance\_social\_own" | "insurance\_health\_own" | "card\_settlement" | "own\_transfer" | "reversal" | "other"

`accountNumber` string

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

`classification` "income\_taxable" | "income\_nontax" | "expense\_deductible" | "expense\_nontax" | "transfer"

`priority` integer min 0 max 1000

`isActive` boolean

### Odpověď · 200

`id` string povinné

`name` string povinné

`direction` string povinné

`counterpartyNameContains` null | string povinné

`counterpartyAccount` string | null povinné

`counterpartyBankCode` string | null povinné

`messageContains` null | string povinné

`variableSymbol` string | null povinné

`category` string povinné

`accountNumber` null | string povinné

`classification` string | null povinné

`priority` integer povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

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

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

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/bank-rules/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Pekárna U Lípy s.r.o.",
        "direction": "any",
        "counterpartyNameContains": "Pekárna U Lípy s.r.o."
    },
)
data = response.json()
```

## Delete a pairing rule

DELETE `/v1/bank-rules/{id}`

Delete a pairing rule

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

Nástroj MCP: `delete-bank-rule`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

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

## List imported statements with opening and closing balances and the continuity check against the previous statement

GET `/v1/bank-statements`

List imported statements with opening and closing balances and the continuity check against the previous statement

Nástroj MCP: `list-bank-statements`

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

`bankAccountId` string

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

### Odpověď · 200

`data` object\[\] povinné

`object` "bank\_statement" povinné

`id` string povinné

`bankAccountId` string povinné

`format` string povinné

`fileName` null | string povinné

`number` null | string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`openingBalanceHaler` integer | null povinné

`closingBalanceHaler` integer | null povinné

`debitTotalHaler` integer povinné

`creditTotalHaler` integer povinné

`movementCount` integer povinné

`importedCount` integer povinné

`duplicateCount` integer povinné

`autoMatchedCount` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

`diffHaler` integer povinné

`createdAt` string povinné date-time

`continuity` string

`continuityDiffHaler` integer

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Import a statement file sent as base64: GPC/ABO, CAMT.053, MT940, or CSV with a column mapping. Re-importing never double-books

POST `/v1/bank-statements/import`

Import a statement file sent as base64: GPC/ABO, CAMT.053, MT940, or CSV with a column mapping. Re-importing never double-books. The format is detected unless given. A file already imported to the account returns duplicateFile: true. Movements already on the account are skipped by fingerprint, also across formats. Safe exact matches are paired automatically.

Nástroj MCP: `import-bank-statement`

### Tělo požadavku

`bankAccountId` string povinné

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

`fileBase64` string povinné min 4 chars max 20000000 chars

File content encoded as base64.

`fileName` string max 200 chars

`format` "auto" | "gpc" | "camt053" | "mt940" | "csv"

`encoding` "windows-1250" | "utf-8" | "iso-8859-2"

`gpcVariant` "fio" | "cs"

`csv` object

`mapping` object povinné

`bookedOn` string

Date as YYYY-MM-DD.

`amount` string

`credit` string

`debit` string

`currency` string

ISO 4217 currency code, for example CZK or EUR.

`counterpartyAccount` string

`counterpartyBankCode` string

`counterpartyIban` string

IBAN without spaces.

`counterpartyName` string

`variableSymbol` string

`constantSymbol` string

`specificSymbol` string

`message` string

`externalId` string

ID of the external.

`bankType` string

`delimiter` string 1 chars

`number` string max 40 chars

`openingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

`closingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

### Odpověď · 201

`duplicateFile` boolean povinné

`importedCount` integer povinné

`duplicateCount` integer povinné

`autoMatchedCount` integer povinné

`statements` object\[\] povinné

`object` "bank\_statement" povinné

`id` string povinné

`bankAccountId` string povinné

`format` string povinné

`fileName` null | string povinné

`number` null | string povinné

`periodFrom` null | string povinné date

`periodTo` null | string povinné date

`openingBalanceHaler` integer | null povinné

`closingBalanceHaler` integer | null povinné

`debitTotalHaler` integer povinné

`creditTotalHaler` integer povinné

`movementCount` integer povinné

`importedCount` integer povinné

`duplicateCount` integer povinné

`autoMatchedCount` integer povinné

`warnings` object\[\] povinné

`code` null | string povinné

`message` null | string povinné

`diffHaler` integer povinné

`createdAt` string povinné date-time

`continuity` string

`continuityDiffHaler` integer

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

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

```python
import os
import requests

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

## Read the columns of a CSV file sent as base64 and suggest the mapping, without importing anything

POST `/v1/bank-statements/inspect-csv`

Read the columns of a CSV file sent as base64 and suggest the mapping, without importing anything

Nástroj MCP: `inspect-bank-csv`

### Tělo požadavku

`fileBase64` string povinné min 4 chars max 20000000 chars

File content encoded as base64.

`encoding` "windows-1250" | "utf-8" | "iso-8859-2"

`delimiter` string 1 chars

### Odpověď · 200

`delimiter` string povinné

`headers` string\[\] povinné

`sampleRows` string\[\]\[\] povinné

`rowCount` integer povinné

`suggestedMapping` object povinné

`bookedOn` string povinné

`amount` string povinné

`variableSymbol` null | string povinné

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

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

```python
import os
import requests

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

## Imported settlements from card terminals and gateways, newest first. status=imported lists what still waits for its bank movement

GET `/v1/card-settlements`

Imported settlements from card terminals and gateways, newest first. status=imported lists what still waits for its bank movement

Nástroj MCP: `list-card-settlements`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

`search` string max 200 chars

`from` string YYYY-MM-DD

Date as YYYY-MM-DD.

`to` string YYYY-MM-DD

Date as YYYY-MM-DD.

`status` "imported" | "posted"

### Odpověď · 200

`data` object\[\] povinné

`object` "card\_settlement" povinné

`id` string povinné

`provider` null | string povinné

`format` string povinné

`formatStatus` string povinné

`fileName` null | string povinné

`settledOn` null | string povinné date

`currency` null | string povinné

`grossHaler` integer povinné

`refundHaler` integer povinné

`feeHaler` integer povinné

`otherHaler` integer povinné

`payoutHaler` integer povinné

`differenceHaler` integer povinné

`payoutReference` null | string povinné

`status` string povinné

`clearingAccount` null | string povinné

`feeAccount` null | string povinné

`movementId` null | string povinné

`postedAt` null | string povinné date-time

`lines` object\[\]

`reference` null | string povinné

`amountHaler` integer povinné

`variableSymbol` null | string povinné

`occurredOn` null | string povinné date

`description` null | string povinné

`kind` string povinné

`position` integer povinné

`feeHaler` integer povinné

`object` "card\_settlement\_line" povinné

`id` string

`documentKind` null | string

`documentId` null | string

`paymentId` null | string

`movementCandidates` object\[\]

`id` string povinné

`bookedOn` string povinné date

`amountHaler` integer | null povinné

`variableSymbol` null | string povinné

`counterpartyName` null | string povinné

`symbolMatches` 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/card-settlements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

```python
import os
import requests

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

## One settlement with its lines and the bank movements that could have paid it out

GET `/v1/card-settlements/{id}`

One settlement with its lines and the bank movements that could have paid it out

Nástroj MCP: `get-card-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`provider` null | string povinné

`format` string povinné

`formatStatus` string povinné

`fileName` null | string povinné

`settledOn` null | string povinné date

`currency` null | string povinné

`grossHaler` integer povinné

`refundHaler` integer povinné

`feeHaler` integer povinné

`otherHaler` integer povinné

`payoutHaler` integer povinné

`differenceHaler` integer povinné

`payoutReference` null | string povinné

`status` string povinné

`clearingAccount` null | string povinné

`feeAccount` null | string povinné

`movementId` null | string povinné

`postedAt` null | string povinné date-time

`lines` object\[\]

`reference` null | string povinné

`amountHaler` integer povinné

`variableSymbol` null | string povinné

`occurredOn` null | string povinné date

`description` null | string povinné

`kind` string povinné

`position` integer povinné

`feeHaler` integer povinné

`object` "card\_settlement\_line" povinné

`id` string

`documentKind` null | string

`documentId` null | string

`paymentId` null | string

`movementCandidates` object\[\]

`id` string povinné

`bookedOn` string povinné date

`amountHaler` integer | null povinné

`variableSymbol` null | string povinné

`counterpartyName` null | string povinné

`symbolMatches` boolean povinné

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

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

```python
import os
import requests

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

## Remove an imported settlement that has not been posted

DELETE `/v1/card-settlements/{id}`

Remove an imported settlement that has not been posted

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

Nástroj MCP: `delete-card-settlement`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

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

```python
import os
import requests

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

## Pair a settlement with the bank movement of its payout and post it: the payout and the fee clear the clearing account. Pays open invoices named by symbol

POST `/v1/card-settlements/{id}/post`

Pair a settlement with the bank movement of its payout and post it: the payout and the fee clear the clearing account. Pays open invoices named by symbol. Refused if the file does not add up or the movement is for another amount. Unpairing the movement in Banka reverses all of it.

Nástroj MCP: `post-card-settlement`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`movementId` string povinné

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

`clearingAccount` string

`feeAccount` string

### Odpověď · 200

`id` string povinné

`provider` null | string povinné

`format` string povinné

`formatStatus` string povinné

`fileName` null | string povinné

`settledOn` null | string povinné date

`currency` null | string povinné

`grossHaler` integer povinné

`refundHaler` integer povinné

`feeHaler` integer povinné

`otherHaler` integer povinné

`payoutHaler` integer povinné

`differenceHaler` integer povinné

`payoutReference` null | string povinné

`status` string povinné

`clearingAccount` null | string povinné

`feeAccount` null | string povinné

`movementId` null | string povinné

`postedAt` null | string povinné date-time

`lines` object\[\]

`reference` null | string povinné

`amountHaler` integer povinné

`variableSymbol` null | string povinné

`occurredOn` null | string povinné date

`description` null | string povinné

`kind` string povinné

`position` integer povinné

`feeHaler` integer povinné

`object` "card\_settlement\_line" povinné

`id` string

`documentKind` null | string

`documentId` null | string

`paymentId` null | string

`movementCandidates` object\[\]

`id` string povinné

`bookedOn` string povinné date

`amountHaler` integer | null povinné

`variableSymbol` null | string povinné

`counterpartyName` null | string povinné

`symbolMatches` boolean povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/card-settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/post \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "movementId": "mov_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'
```

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

```python
import os
import requests

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

## Read a settlement file from a card terminal or gateway sent as base64. dryRun shows the result without saving. Importing the same file again changes nothing

POST `/v1/card-settlements/import`

Read a settlement file from a card terminal or gateway sent as base64. dryRun shows the result without saving. Importing the same file again changes nothing. Only ComGate publishes what its rows mean. For GoPay, ThePay, KB SmartPay and PayU the rows are read by a rule of thumb, so saving needs confirmUnverified: true after a person checked the preview. PayU needs columns. Nothing is posted until postCardSettlement.

Nástroj MCP: `import-card-settlement`

### Tělo požadavku

`provider` "comgate" | "gopay" | "thepay" | "kb\_smartpay" | "payu" povinné

`fileBase64` string povinné min 4 chars max 20000000 chars

File content encoded as base64.

`fileName` string max 200 chars

`encoding` "windows-1250" | "utf-8" | "iso-8859-2"

`settledOn` string YYYY-MM-DD

Date as YYYY-MM-DD.

`columns` object

`gross` string povinné max 120 chars

`fee` string max 120 chars

`net` string max 120 chars

`date` string max 120 chars

Date as YYYY-MM-DD.

`variableSymbol` string max 120 chars

`reference` string max 120 chars

`batch` string max 120 chars

`dryRun` boolean

`confirmUnverified` boolean

### Odpověď · 201

`provider` null | string povinné

`format` string povinné

`formatStatus` string povinné

`settledOn` null | string povinné date

`currency` null | string povinné

`grossHaler` integer povinné

`refundHaler` integer povinné

`feeHaler` integer povinné

`otherHaler` integer povinné

`payoutHaler` integer povinné

`differenceHaler` integer povinné

`payoutReference` null | string povinné

`warnings` string\[\] povinné

`lines` object\[\]

`reference` null | string povinné

`amountHaler` integer povinné

`variableSymbol` null | string povinné

`occurredOn` null | string povinné date

`description` null | string povinné

`kind` string povinné

`position` integer povinné

`feeHaler` integer povinné

`object` "card\_settlement\_line" povinné

`id` string

`documentKind` null | string

`documentId` null | string

`paymentId` null | string

`id` string

`fileName` null | string

`status` string

`clearingAccount` string | null

`feeAccount` string | null

`movementId` string | null

`postedAt` string | null

`duplicateFile` boolean

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

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

```python
import os
import requests

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

## The clearing and fee accounts for card settlements, and which provider formats are published and which are unverified

GET `/v1/card-settlements/settings`

The clearing and fee accounts for card settlements, and which provider formats are published and which are unverified

Nástroj MCP: `get-card-settlement-settings`

### Odpověď · 200

`clearingAccount` null | string povinné

`feeAccount` null | string povinné

`providers` object\[\] povinné

`id` string povinné

`label` null | string povinné

`format` string povinné

`formatStatus` string povinné

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

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

## Set the clearing account card sales wait on, and the account for fees. Applies to card sales from now on

PATCH `/v1/card-settlements/settings`

Set the clearing account card sales wait on, and the account for fees. Applies to card sales from now on. The clearing account must exist in the chart. Default is 261; an analytic such as 261100 keeps card money apart from cash on its way to the bank.

Nástroj MCP: `update-card-settlement-settings`

### Tělo požadavku

`clearingAccount` string

`feeAccount` string

### Odpověď · 200

`clearingAccount` null | string povinné

`feeAccount` null | string povinné

`providers` object\[\] povinné

`id` string povinné

`label` null | string povinné

`format` string povinné

`formatStatus` string povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/card-settlements/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "clearingAccount": "string",
  "feeAccount": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/card-settlements/settings', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "clearingAccount": "string",
    "feeAccount": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/card-settlements/settings",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "clearingAccount": "string",
        "feeAccount": "string"
    },
)
data = response.json()
```

## List cash documents, newest first. With registerId each row carries the running balance

GET `/v1/cash-documents`

List cash documents, newest first. With registerId each row carries the running balance

Nástroj MCP: `list-cash-documents`

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

`registerId` string

ID of the register.

`kind` "receipt" | "expense"

### Odpověď · 200

`data` object\[\] povinné

`object` "cash\_document" povinné

`id` string povinné

`registerId` string povinné

`kind` string povinné

`number` string povinné

`issuedOn` string povinné date

`amountHaler` integer povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`vatRate` integer povinné

`exchangeRate` null | number povinné

`counterpartyName` null | string povinné

`contactId` null | string povinné

`description` string povinné

`documentKind` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`negativeOverride` boolean povinné

`status` string povinné

`createdAt` string povinné date-time

`balanceHaler` integer | null

`eetPrepaidLoadHaler` integer

`eetPrepaidUseHaler` integer

`eetVoucherId` null | string

`eetMandateId` string | null

`paidAt` null | string date-time

`registerBalanceHaler` integer

`warnings` object\[\]

`code` null | string povinné

`limitHaler` integer povinné

`totalHaler` integer | null povinné

`message` null | string povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Issue a receipt or expense cash document and post it. Refuses a negative register balance unless allowNegative is true, and warns over the 270 000 Kč cash limit

POST `/v1/cash-documents`

Issue a receipt or expense cash document and post it. Refuses a negative register balance unless allowNegative is true, and warns over the 270 000 Kč cash limit

Nástroj MCP: `create-cash-document`

### Tělo požadavku

`registerId` string povinné

ID of the register.

`kind` "receipt" | "expense" povinné

`issuedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`amountHaler` integer povinné max 9007199254740991

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

`description` string povinné max 400 chars

`counterpartyName` string max 200 chars

`contactId` string

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

`documentKind` "invoice" | "received\_invoice" | "proforma" | "proforma\_refund" | "supplier\_advance" | "supplier\_advance\_refund" | "credit\_note" | "debit\_note" | "other\_receivable" | "other\_payable"

`documentId` string

ID of the document.

`documentAmountHaler` integer max 9007199254740991

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

`category` "bank\_fee" | "interest\_received" | "interest\_paid" | "interest\_tax" | "tax\_vat" | "tax\_income" | "tax\_payroll" | "tax\_road" | "insurance\_social" | "insurance\_health" | "insurance\_social\_own" | "insurance\_health\_own" | "card\_settlement" | "own\_transfer" | "reversal" | "other"

`accountNumber` string

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

`classification` "income\_taxable" | "income\_nontax" | "expense\_deductible" | "expense\_nontax" | "transfer"

`vatRate` number min 0 max 100

`vatMode` "domestic" | "eu\_registration" | "margin\_used\_goods" | "margin\_art" | "margin\_collectibles" | "margin\_travel"

`vatCountry` string 2 chars

`purchaseHaler` integer min 0 max 9007199254740991

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

`purchaseLineId` string

ID of the purchase line.

`exchangeRate` number max 100000

`allowNegative` boolean

`eetPrepaidLoadHaler` integer min 0 max 9007199254740991

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

`eetPrepaidUseHaler` integer min 0 max 9007199254740991

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

`eetVoucherId` string

ID of the eet voucher. Find it with list-eet-vouchers.

`eetMandateId` string

ID of the eet mandate. Find it with list-eet-mandates.

`eetOwnSale` boolean

`paidAt` string date-time

### Odpověď · 201

`id` string povinné

`registerId` string povinné

`kind` string povinné

`number` string povinné

`issuedOn` string povinné date

`amountHaler` integer povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`vatRate` integer povinné

`exchangeRate` null | number povinné

`counterpartyName` null | string povinné

`contactId` null | string povinné

`description` string povinné

`documentKind` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`negativeOverride` boolean povinné

`status` string povinné

`createdAt` string povinné date-time

`balanceHaler` integer | null

`eetPrepaidLoadHaler` integer

`eetPrepaidUseHaler` integer

`eetVoucherId` null | string

`eetMandateId` string | null

`paidAt` null | string date-time

`registerBalanceHaler` integer

`warnings` object\[\]

`code` null | string povinné

`limitHaler` integer povinné

`totalHaler` integer | null povinné

`message` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/cash-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "registerId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "receipt",
  "issuedOn": "2026-10-30",
  "amountHaler": 1210000,
  "description": "Pečivo, říjen"
}'
```

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

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/cash-documents",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "registerId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "kind": "receipt",
        "issuedOn": "2026-10-30",
        "amountHaler": 1210000,
        "description": "Pečivo, říjen"
    },
)
data = response.json()
```

## Get one cash document

GET `/v1/cash-documents/{id}`

Get one cash document

Nástroj MCP: `get-cash-document`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`registerId` string povinné

`kind` string povinné

`number` string povinné

`issuedOn` string povinné date

`amountHaler` integer povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`vatRate` integer povinné

`exchangeRate` null | number povinné

`counterpartyName` null | string povinné

`contactId` null | string povinné

`description` string povinné

`documentKind` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`negativeOverride` boolean povinné

`status` string povinné

`createdAt` string povinné date-time

`balanceHaler` integer | null

`eetPrepaidLoadHaler` integer

`eetPrepaidUseHaler` integer

`eetVoucherId` null | string

`eetMandateId` string | null

`paidAt` null | string date-time

`registerBalanceHaler` integer

`warnings` object\[\]

`code` null | string povinné

`limitHaler` integer povinné

`totalHaler` integer | null povinné

`message` null | string povinné

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

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

## Cancel a cash document: the number stays used and the postings are reversed

POST `/v1/cash-documents/{id}/cancel`

Cancel a cash document: the number stays used and the postings are reversed

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

Nástroj MCP: `cancel-cash-document`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`allowNegative` boolean

### Odpověď · 200

`id` string povinné

`registerId` string povinné

`kind` string povinné

`number` string povinné

`issuedOn` string povinné date

`amountHaler` integer povinné

`netHaler` integer povinné

`vatHaler` integer povinné

`vatRate` integer povinné

`exchangeRate` null | number povinné

`counterpartyName` null | string povinné

`contactId` null | string povinné

`description` string povinné

`documentKind` null | string povinné

`documentId` null | string povinné

`documentNumber` null | string povinné

`category` null | string povinné

`accountNumber` null | string povinné

`classification` null | string povinné

`negativeOverride` boolean povinné

`status` string povinné

`createdAt` string povinné date-time

`balanceHaler` integer | null

`eetPrepaidLoadHaler` integer

`eetPrepaidUseHaler` integer

`eetVoucherId` null | string

`eetMandateId` string | null

`paidAt` null | string date-time

`registerBalanceHaler` integer

`warnings` object\[\]

`code` null | string povinné

`limitHaler` integer povinné

`totalHaler` integer | null povinné

`message` null | string povinné

```bash
curl -X POST https://api.damedoklad.cz/v1/cash-documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "allowNegative": false
}'
```

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

```python
import os
import requests

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

## Download a cash document as PDF

GET `/v1/cash-documents/{id}/pdf`

Download a cash document as PDF

Nástroj MCP: `get-cash-document-pdf`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

Vrací soubor application/pdf.

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

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

## List cash registers with current balance

GET `/v1/cash-registers`

List cash registers with current balance

Nástroj MCP: `list-cash-registers`

### Parametry dotazu

`limit` integer min 1 max 500

`offset` integer min 0 max 9007199254740991

### Odpověď · 200

`data` object\[\] povinné

`object` "cash\_register" povinné

`id` string povinné

`name` string povinné

`currency` string povinné

`ledgerAccount` string povinné

`openingBalanceHaler` integer povinné

`openingDate` null | string povinné date

`openingExchangeRate` null | number povinné

`openingState` string povinné

`receiptPrefix` string povinné

`expensePrefix` string povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

`balanceHaler` integer povinné

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Create a cash register. The analytic 211xxx account is filled in when omitted. A stated opening balance posts MD 211xxx / D 701, or the opening cash of the peněžní deník, unless opening entries already hold the account

POST `/v1/cash-registers`

Create a cash register. The analytic 211xxx account is filled in when omitted. A stated opening balance posts MD 211xxx / D 701, or the opening cash of the peněžní deník, unless opening entries already hold the account

Nástroj MCP: `create-cash-register`

### Tělo požadavku

`name` string povinné max 200 chars

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`ledgerAccount` string

`openingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

`openingDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

`openingExchangeRate` number max 100000

`receiptPrefix` string

`expensePrefix` string

### Odpověď · 201

`id` string povinné

`name` string povinné

`currency` string povinné

`ledgerAccount` string povinné

`openingBalanceHaler` integer povinné

`openingDate` null | string povinné date

`openingExchangeRate` null | number povinné

`openingState` string povinné

`receiptPrefix` string povinné

`expensePrefix` string povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

`balanceHaler` integer povinné

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

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/cash-registers', {
  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."
  }),
});
const data = await response.json();
```

```python
import os
import requests

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

## Get one cash register

GET `/v1/cash-registers/{id}`

Get one cash register

Nástroj MCP: `get-cash-register`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`name` string povinné

`currency` string povinné

`ledgerAccount` string povinné

`openingBalanceHaler` integer povinné

`openingDate` null | string povinné date

`openingExchangeRate` null | number povinné

`openingState` string povinné

`receiptPrefix` string povinné

`expensePrefix` string povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

`balanceHaler` integer povinné

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

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

## Update a cash register. Currency, analytic account, and opening balance are locked once it has documents

PATCH `/v1/cash-registers/{id}`

Update a cash register. Currency, analytic account, and opening balance are locked once it has documents

Nástroj MCP: `update-cash-register`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`name` string max 200 chars

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`ledgerAccount` string

`openingBalanceHaler` integer min -9007199254740991 max 9007199254740991

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

`openingDate` string | null

Date as YYYY-MM-DD.

`openingExchangeRate` number max 100000

`receiptPrefix` string

`expensePrefix` string

`isActive` boolean

### Odpověď · 200

`id` string povinné

`name` string povinné

`currency` string povinné

`ledgerAccount` string povinné

`openingBalanceHaler` integer povinné

`openingDate` null | string povinné date

`openingExchangeRate` null | number povinné

`openingState` string povinné

`receiptPrefix` string povinné

`expensePrefix` string povinné

`isActive` boolean povinné

`createdAt` string povinné date-time

`balanceHaler` integer povinné

```bash
curl -X PATCH https://api.damedoklad.cz/v1/cash-registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Hlavní pokladna",
  "ledgerAccount": "211001"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/cash-registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Hlavní pokladna",
    "ledgerAccount": "211001"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/cash-registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "name": "Hlavní pokladna",
        "ledgerAccount": "211001"
    },
)
data = response.json()
```

## Delete a cash register that has no documents. Its posted opening balance is reversed

DELETE `/v1/cash-registers/{id}`

Delete a cash register that has no documents. Its posted opening balance is reversed

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

Nástroj MCP: `delete-cash-register`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`deleted` boolean povinné

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

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

## List payment orders

GET `/v1/payment-orders`

List payment orders

Nástroj MCP: `list-payment-orders`

### 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` "draft" | "exported" | "completed" | "cancelled"

`kind` "payment" | "collection"

### Odpověď · 200

`data` object\[\] povinné

`object` "payment\_order" povinné

`id` string povinné

`bankAccountId` string povinné

`number` integer povinné

`executionDate` string povinné date

`currency` string povinné

`totalHaler` integer povinné

`status` string povinné

`exportedFormat` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`items` object\[\] povinné

`object` "payment\_order\_item" povinné

`id` string povinné

`orderId` string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`otherPayableId` null | string povinné

`payrollPaymentId` null | string povinné

`amountHaler` integer povinné

`counterpartyName` null | string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`status` string povinné

`movementId` null | string povinné

`salesDocumentId` null | string

`invoiceId` null | string

`mandateId` null | string

`sequenceType` null | string

`counterpartyBic` null | string

`counterpartyCountry` null | string

`chargeBearer` null | string

`paymentReason` null | string

`kind` string

`scheme` string

`warnings` object\[\]

`receivedInvoiceId` null | string povinné

`number` string povinné

`contactName` null | string povinné

`status` null | string povinné

`warnings` object\[\] povinné

`code` null | string povinné

`level` string povinné

`reason` null | string povinné

`liability` string

`total` integer

Rows that match, on all pages.

`hasMore` boolean povinné

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

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

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

## Create a payment order from unpaid received invoices, advances to suppliers, and other payables, or with kind collection a příkaz k inkasu from issued invoices, debit notes, and other receivables. scheme foreign pays abroad in the document's currency from any account. They are marked as in payment and pair when the movement arrives. The answer lists supplier warnings (§ 109), which never block

POST `/v1/payment-orders`

Create a payment order from unpaid received invoices, advances to suppliers, and other payables, or with kind collection a příkaz k inkasu from issued invoices, debit notes, and other receivables. scheme foreign pays abroad in the document's currency from any account. They are marked as in payment and pair when the movement arrives. The answer lists supplier warnings (§ 109), which never block

Nástroj MCP: `create-payment-order`

### Tělo požadavku

`bankAccountId` string povinné

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

`executionDate` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`kind` "payment" | "collection"

collection is a příkaz k inkasu: money the bank pulls from customers. Default payment

`scheme` "domestic" | "sepa" | "foreign"

foreign lets the order be in another currency than the account. Default follows the account: CZK domestic, EUR SEPA, others foreign

`items` object\[\] povinné

`receivedInvoiceId` string

ID of the received invoice. Find it with list-received-invoices.

`supplierAdvanceId` string

ID of the supplier advance. Find it with list-supplier-advances.

`otherPayableId` string

ID of the other payable.

`invoiceId` string

ID of the invoice. Find it with list-invoices.

`debitNoteId` string

ID of the debit note.

`otherReceivableId` string

ID of the other receivable.

`mandateId` string

For a SEPA collection. Without it the only active mandate of the contact is used

`amountHaler` integer max 9007199254740991

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

`message` string max 140 chars

`foreign` object

`account` string max 34 chars

IBAN, or the account number where the country has no IBAN

`bic` string

`street` string max 70 chars

`city` string max 35 chars

`country` string

`bankName` string max 70 chars

`bankStreet` string max 70 chars

`bankCity` string max 35 chars

`chargeBearer` "SHA" | "OUR" | "BEN"

Who bears the charges. Default SHA, the only one allowed within the EU/EEA

`paymentReason` string

Payment title from the ČNB list, which some banks ask for

### Odpověď · 201

`id` string povinné

`bankAccountId` string povinné

`number` integer povinné

`executionDate` string povinné date

`currency` string povinné

`totalHaler` integer povinné

`status` string povinné

`exportedFormat` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`items` object\[\] povinné

`object` "payment\_order\_item" povinné

`id` string povinné

`orderId` string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`otherPayableId` null | string povinné

`payrollPaymentId` null | string povinné

`amountHaler` integer povinné

`counterpartyName` null | string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`status` string povinné

`movementId` null | string povinné

`salesDocumentId` null | string

`invoiceId` null | string

`mandateId` null | string

`sequenceType` null | string

`counterpartyBic` null | string

`counterpartyCountry` null | string

`chargeBearer` null | string

`paymentReason` null | string

`kind` string

`scheme` string

`warnings` object\[\]

`receivedInvoiceId` null | string povinné

`number` string povinné

`contactName` null | string povinné

`status` null | string povinné

`warnings` object\[\] povinné

`code` null | string povinné

`level` string povinné

`reason` null | string povinné

`liability` string

```bash
curl -X POST https://api.damedoklad.cz/v1/payment-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "executionDate": "2026-10-30",
  "items": [
    {
      "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payment-orders', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "executionDate": "2026-10-30",
    "items": [
      {
        "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payment-orders",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "bankAccountId": "cba_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "executionDate": "2026-10-30",
        "items": [
            {
                "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## Get a payment order with its items

GET `/v1/payment-orders/{id}`

Get a payment order with its items

Nástroj MCP: `get-payment-order`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`number` integer povinné

`executionDate` string povinné date

`currency` string povinné

`totalHaler` integer povinné

`status` string povinné

`exportedFormat` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`items` object\[\] povinné

`object` "payment\_order\_item" povinné

`id` string povinné

`orderId` string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`otherPayableId` null | string povinné

`payrollPaymentId` null | string povinné

`amountHaler` integer povinné

`counterpartyName` null | string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`status` string povinné

`movementId` null | string povinné

`salesDocumentId` null | string

`invoiceId` null | string

`mandateId` null | string

`sequenceType` null | string

`counterpartyBic` null | string

`counterpartyCountry` null | string

`chargeBearer` null | string

`paymentReason` null | string

`kind` string

`scheme` string

`warnings` object\[\]

`receivedInvoiceId` null | string povinné

`number` string povinné

`contactName` null | string povinné

`status` null | string povinné

`warnings` object\[\] povinné

`code` null | string povinné

`level` string povinné

`reason` null | string povinné

`liability` string

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

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

## Cancel a payment order and release its invoices. An order with a paid item cannot be cancelled

POST `/v1/payment-orders/{id}/cancel`

Cancel a payment order and release its invoices. An order with a paid item cannot be cancelled

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

Nástroj MCP: `cancel-payment-order`

### Parametry v cestě

`id` string povinné

### Odpověď · 200

`id` string povinné

`bankAccountId` string povinné

`number` integer povinné

`executionDate` string povinné date

`currency` string povinné

`totalHaler` integer povinné

`status` string povinné

`exportedFormat` null | string povinné

`exportedAt` null | string povinné date-time

`createdAt` string povinné date-time

`items` object\[\] povinné

`object` "payment\_order\_item" povinné

`id` string povinné

`orderId` string povinné

`receivedInvoiceId` null | string povinné

`supplierAdvanceId` null | string povinné

`otherPayableId` null | string povinné

`payrollPaymentId` null | string povinné

`amountHaler` integer povinné

`counterpartyName` null | string povinné

`counterpartyAccount` null | string povinné

`counterpartyBankCode` null | string povinné

`counterpartyIban` null | string povinné

`variableSymbol` null | string povinné

`constantSymbol` null | string povinné

`specificSymbol` string | null povinné

`message` null | string povinné

`status` string povinné

`movementId` null | string povinné

`salesDocumentId` null | string

`invoiceId` null | string

`mandateId` null | string

`sequenceType` null | string

`counterpartyBic` null | string

`counterpartyCountry` null | string

`chargeBearer` null | string

`paymentReason` null | string

`kind` string

`scheme` string

`warnings` object\[\]

`receivedInvoiceId` null | string povinné

`number` string povinné

`contactName` null | string povinné

`status` null | string povinné

`warnings` object\[\] povinné

`code` null | string povinné

`level` string povinné

`reason` null | string povinné

`liability` string

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

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

```python
import os
import requests

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

## Download an order for the bank. kpc: domestic KPC/ABO in CZK, also a příkaz k inkasu. xml: domestic pain.001, or pain.008 for a collection, as the Czech Banking Association describes. sepa: pain.001 in EUR. foreign: pain.001 for a foreign payment. direct\_debit: pain.008 SEPA in EUR

GET `/v1/payment-orders/{id}/export`

Download an order for the bank. kpc: domestic KPC/ABO in CZK, also a příkaz k inkasu. xml: domestic pain.001, or pain.008 for a collection, as the Czech Banking Association describes. sepa: pain.001 in EUR. foreign: pain.001 for a foreign payment. direct\_debit: pain.008 SEPA in EUR

Nástroj MCP: `export-payment-order`

### Parametry v cestě

`id` string povinné

### Parametry dotazu

`format` "kpc" | "sepa" | "xml" | "foreign" | "direct\_debit"

### Odpověď · 200

Vrací soubor application/octet-stream.

```bash
curl https://api.damedoklad.cz/v1/payment-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor
```

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

## Before paying: warn about unreliable VAT payers and bank accounts not published in the ADIS register, with the § 109 liability they bring. Warns and never blocks. A registry that cannot be reached is reported, not an error

POST `/v1/payment-orders/check`

Before paying: warn about unreliable VAT payers and bank accounts not published in the ADIS register, with the § 109 liability they bring. Warns and never blocks. A registry that cannot be reached is reported, not an error

Nástroj MCP: `check-payment-order`

### Tělo požadavku

`items` object\[\] povinné

`receivedInvoiceId` string

ID of the received invoice. Find it with list-received-invoices.

`supplierAdvanceId` string

ID of the supplier advance. Find it with list-supplier-advances.

`otherPayableId` string

ID of the other payable.

### Odpověď · 200

`data` object\[\] povinné

`receivedInvoiceId` null | string povinné

`number` null | string povinné

`contactName` null | string povinné

`status` null | string povinné

`warnings` object\[\] povinné

`code` null | string povinné

`level` string povinné

`reason` null | string povinné

`liability` string

```bash
curl -X POST https://api.damedoklad.cz/v1/payment-orders/check \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    {
      "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/payment-orders/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "items": [
      {
        "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
      }
    ]
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/payment-orders/check",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "items": [
            {
                "receivedInvoiceId": "rin_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "supplierAdvanceId": "sad_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
                "otherPayableId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
            }
        ]
    },
)
data = response.json()
```

## Customers' SEPA mandates, which a SEPA direct debit draws on

GET `/v1/sepa-mandates`

Customers' SEPA mandates, which a SEPA direct debit draws on

Nástroj MCP: `list-sepa-mandates`

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

`contactId` string

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

`status` "active" | "revoked"

### Odpověď · 200

`data` object\[\] povinné

`object` "sepa\_mandate" povinné

`id` string povinné

`contactId` string povinné

`reference` string povinné

`signedOn` string povinné date

`scheme` string povinné

`recurrence` string povinné

`debtorIban` string povinné

`debtorBic` null | string povinné

`status` 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/sepa-mandates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"
```

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

## Record a customer's signed SEPA mandate. The paper stays with the company, and the bank asks only for its identifier and date

POST `/v1/sepa-mandates`

Record a customer's signed SEPA mandate. The paper stays with the company, and the bank asks only for its identifier and date

Nástroj MCP: `create-sepa-mandate`

### Tělo požadavku

`contactId` string povinné

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

`reference` string povinné max 35 chars

Identifier of the mandate, as the customer signed it

`signedOn` string povinné YYYY-MM-DD

Date as YYYY-MM-DD.

`scheme` "CORE" | "B2B"

CORE for consumers and anyone else, B2B between businesses. Default CORE

`recurrence` "recurring" | "one\_off"

`debtorIban` string povinné min 5 chars max 42 chars

IBAN without spaces.

`debtorBic` string

### Odpověď · 201

`id` string povinné

`contactId` string povinné

`reference` string povinné

`signedOn` string povinné date

`scheme` string povinné

`recurrence` string povinné

`debtorIban` string povinné

`debtorBic` null | string povinné

`status` string povinné

`createdAt` string povinné date-time

```bash
curl -X POST https://api.damedoklad.cz/v1/sepa-mandates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "reference": "string",
  "signedOn": "2026-10-30",
  "debtorIban": "string"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/sepa-mandates', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    "reference": "string",
    "signedOn": "2026-10-30",
    "debtorIban": "string"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.post(
    "https://api.damedoklad.cz/v1/sepa-mandates",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
        "reference": "string",
        "signedOn": "2026-10-30",
        "debtorIban": "string"
    },
)
data = response.json()
```

## Revoke a SEPA mandate with status revoked, which stops any order that has not left yet, or correct its BIC. Another account or other terms are a new mandate

PATCH `/v1/sepa-mandates/{id}`

Revoke a SEPA mandate with status revoked, which stops any order that has not left yet, or correct its BIC. Another account or other terms are a new mandate

Nástroj MCP: `update-sepa-mandate`

### Parametry v cestě

`id` string povinné

### Tělo požadavku

`debtorBic` string | null

`status` "active" | "revoked"

### Odpověď · 200

`id` string povinné

`contactId` string povinné

`reference` string povinné

`signedOn` string povinné date

`scheme` string povinné

`recurrence` string povinné

`debtorIban` string povinné

`debtorBic` null | string povinné

`status` string povinné

`createdAt` string povinné date-time

```bash
curl -X PATCH https://api.damedoklad.cz/v1/sepa-mandates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "debtorBic": "string",
  "status": "active"
}'
```

```javascript
const response = await fetch('https://api.damedoklad.cz/v1/sepa-mandates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.DAMEDOKLAD_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "debtorBic": "string",
    "status": "active"
  }),
});
const data = await response.json();
```

```python
import os
import requests

response = requests.patch(
    "https://api.damedoklad.cz/v1/sepa-mandates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
    headers={"Authorization": f"Bearer {os.environ['DAMEDOKLAD_API_KEY']}"},
    json={
        "debtorBic": "string",
        "status": "active"
    },
)
data = response.json()
```

## Build a Czech QR payment string (SPAYD) from payment details

POST `/v1/spayd`

Build a Czech QR payment string (SPAYD) from payment details

Nástroj MCP: `create-spayd`

### Tělo požadavku

`iban` string povinné max 42 chars

IBAN without spaces.

`bic` string

`amountHaler` integer min 0 max 9007199254740991

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

`currency` string 3 chars

ISO 4217 currency code, for example CZK or EUR.

`variableSymbol` string

`specificSymbol` string

`constantSymbol` string

`recipientName` string max 200 chars

`message` string max 400 chars

`dueDate` string YYYY-MM-DD

Date as YYYY-MM-DD.

### Odpověď · 200

`spayd` string povinné

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

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

```python
import os
import requests

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