Skip to content

Operations in the Bank and cash group.

Base URLhttps://api.damedoklad.cz/v1AuthenticationErrors and limitsConventions

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

GET/v1/bank-accounts

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

MCP tool: list-bank-accounts

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991

Response · 200

dataobject[]required
object"bank_account"required
idstringrequired
contactIdnull | string
labelnull | string
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
currencystringrequired
isDefaultbooleanrequired
publishedFromRegistryboolean
bicnull | string
bankNamenull | string
bankStreetstring | null
bankCitystring | null
namestring
swiftnull | string
ledgerAccountstring
isActiveboolean
openingBalanceHalerinteger
openingDatenull | stringdate
openingExchangeRatestring | null
openingStatestring
bankBalanceHalerinteger | null
bankBalanceOnnull | stringdate
fioobject
configuredbooleanrequired
enabledbooleanrequired
lastSyncedAtnull | stringrequireddate-time
lastSyncedOnnull | stringrequireddate
lastErrornull | stringrequired
createdAtstringdate-time
balanceHalerinteger
unmatchedCountinteger
balanceDiffHalerinteger | null
sepaCreditorIdnull | string
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-accounts
curl https://api.damedoklad.cz/v1/bank-accounts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

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

MCP tool: create-bank-account

Request body

namestringrequiredmax 200 chars
accountNumberstringrequired
Account number from the chart of accounts, for example 311. list-accounts lists them.
bankCodestringrequired
ibanstringmax 42 chars
IBAN without spaces.
swiftstring
sepaCreditorIdstringmin 5 charsmax 35 chars
Identifier of the creditor in SEPA direct debit (CID), issued through the bank
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
ledgerAccountstring
isDefaultboolean
openingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
openingDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
openingExchangeRatenumbermax 100000

Response · 201

idstringrequired
contactIdnull | string
labelnull | string
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
currencystringrequired
isDefaultbooleanrequired
publishedFromRegistryboolean
bicnull | string
bankNamenull | string
bankStreetstring | null
bankCitystring | null
namestring
swiftnull | string
ledgerAccountstring
isActiveboolean
openingBalanceHalerinteger
openingDatenull | stringdate
openingExchangeRatestring | null
openingStatestring
bankBalanceHalerinteger | null
bankBalanceOnnull | stringdate
fioobject
configuredbooleanrequired
enabledbooleanrequired
lastSyncedAtnull | stringrequireddate-time
lastSyncedOnnull | stringrequireddate
lastErrornull | stringrequired
createdAtstringdate-time
balanceHalerinteger
unmatchedCountinteger
balanceDiffHalerinteger | null
sepaCreditorIdnull | string
POST/v1/bank-accounts
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"
}'

Get one bank account

GET/v1/bank-accounts/{id}

Get one bank account

MCP tool: get-bank-account

Path parameters

idstringrequired

Response · 200

idstringrequired
contactIdnull | string
labelnull | string
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
currencystringrequired
isDefaultbooleanrequired
publishedFromRegistryboolean
bicnull | string
bankNamenull | string
bankStreetstring | null
bankCitystring | null
namestring
swiftnull | string
ledgerAccountstring
isActiveboolean
openingBalanceHalerinteger
openingDatenull | stringdate
openingExchangeRatestring | null
openingStatestring
bankBalanceHalerinteger | null
bankBalanceOnnull | stringdate
fioobject
configuredbooleanrequired
enabledbooleanrequired
lastSyncedAtnull | stringrequireddate-time
lastSyncedOnnull | stringrequireddate
lastErrornull | stringrequired
createdAtstringdate-time
balanceHalerinteger
unmatchedCountinteger
balanceDiffHalerinteger | null
sepaCreditorIdnull | string
GET/v1/bank-accounts/{id}
curl https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

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

MCP tool: update-bank-account

Path parameters

idstringrequired

Request body

namestringmax 200 chars
accountNumberstring
Account number from the chart of accounts, for example 311. list-accounts lists them.
bankCodestring
ibanstring | null
IBAN without spaces.
swiftstring | null
sepaCreditorIdstringmin 5 charsmax 35 chars
Identifier of the creditor in SEPA direct debit (CID), issued through the bank
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
ledgerAccountstring
isDefaultboolean
openingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
openingDatestring | null
Date as YYYY-MM-DD.
openingExchangeRatenumbermax 100000
isActiveboolean

Response · 200

idstringrequired
contactIdnull | string
labelnull | string
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
currencystringrequired
isDefaultbooleanrequired
publishedFromRegistryboolean
bicnull | string
bankNamenull | string
bankStreetstring | null
bankCitystring | null
namestring
swiftnull | string
ledgerAccountstring
isActiveboolean
openingBalanceHalerinteger
openingDatenull | stringdate
openingExchangeRatestring | null
openingStatestring
bankBalanceHalerinteger | null
bankBalanceOnnull | stringdate
fioobject
configuredbooleanrequired
enabledbooleanrequired
lastSyncedAtnull | stringrequireddate-time
lastSyncedOnnull | stringrequireddate
lastErrornull | stringrequired
createdAtstringdate-time
balanceHalerinteger
unmatchedCountinteger
balanceDiffHalerinteger | null
sepaCreditorIdnull | string
PATCH/v1/bank-accounts/{id}
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"
}'

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

DELETE/v1/bank-accounts/{id}

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: delete-bank-account

Path parameters

idstringrequired

Response · 200

idstringrequired
deletedbooleanrequired
DELETE/v1/bank-accounts/{id}
curl -X DELETE https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: update-bank-account-fio

Path parameters

idstringrequired

Request body

tokenstring
enabledboolean

Response · 200

idstringrequired
contactIdnull | string
labelnull | string
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
currencystringrequired
isDefaultbooleanrequired
publishedFromRegistryboolean
bicnull | string
bankNamenull | string
bankStreetstring | null
bankCitystring | null
namestring
swiftnull | string
ledgerAccountstring
isActiveboolean
openingBalanceHalerinteger
openingDatenull | stringdate
openingExchangeRatestring | null
openingStatestring
bankBalanceHalerinteger | null
bankBalanceOnnull | stringdate
fioobject
configuredbooleanrequired
enabledbooleanrequired
lastSyncedAtnull | stringrequireddate-time
lastSyncedOnnull | stringrequireddate
lastErrornull | stringrequired
createdAtstringdate-time
balanceHalerinteger
unmatchedCountinteger
balanceDiffHalerinteger | null
sepaCreditorIdnull | string
PUT/v1/bank-accounts/{id}/fio
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
}'

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

MCP tool: sync-bank-account-fio

Path parameters

idstringrequired

Response · 200

bankAccountIdstringrequired
fromstringrequireddate
tostringrequireddate
importedCountintegerrequired
duplicateCountintegerrequired
autoMatchedCountintegerrequired
closingBalanceHalerinteger | nullrequired
warningsany[]required
POST/v1/bank-accounts/{id}/fio/sync
curl -X POST https://api.damedoklad.cz/v1/bank-accounts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/fio/sync \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-bank-categories

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"bank_category"required
idstringrequired
directionstringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
nameCsstringrequired
nameEnnull | stringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-categories
curl https://api.damedoklad.cz/v1/bank-categories \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-collectable-documents

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
dueTostringYYYY-MM-DD
Date as YYYY-MM-DD.
dueFromstringYYYY-MM-DD
Date as YYYY-MM-DD.
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.

Response · 200

dataobject[]required
object"collectable_document"required
kindstringrequired
idstringrequired
numbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
variableSymbolnull | stringrequired
dueDatenull | stringrequireddate
currencynull | stringrequired
totalHalerinteger | nullrequired
remainingHalerinteger | nullrequired
hasBankAccountbooleanrequired
mandatesintegerrequired
inPaymentbooleanrequired
paymentOrderIdnull | stringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-collectable-documents
curl https://api.damedoklad.cz/v1/bank-collectable-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-bank-movements

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
status"unmatched" | "partial" | "matched" | "non_document" | "open"
bankAccountIdstring
ID of the bank account. Find it with list-bank-accounts.
statementIdstring
ID of the statement.

Response · 200

dataobject[]required
object"bank_movement"required
idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-movements
curl https://api.damedoklad.cz/v1/bank-movements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-bank-movement

Request body

bankAccountIdstringrequired
ID of the bank account. Find it with list-bank-accounts.
bookedOnstringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
amountHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
counterpartyAccountstringmax 42 chars
counterpartyBankCodestring
counterpartyNamestringmax 200 chars
variableSymbolstring
constantSymbolstring
specificSymbolstring
messagestringmax 400 chars

Response · 201

idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
POST/v1/bank-movements
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
}'

Get one bank movement with its pairing and suggestions

GET/v1/bank-movements/{id}

Get one bank movement with its pairing and suggestions

MCP tool: get-bank-movement

Path parameters

idstringrequired

Response · 200

idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
GET/v1/bank-movements/{id}
curl https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: classify-bank-movement

Path parameters

idstringrequired

Request body

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"required
amountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
accountNumberstring
Account number from the chart of accounts, for example 311. list-accounts lists them.
classification"income_taxable" | "income_nontax" | "expense_deductible" | "expense_nontax" | "transfer"
counterBankAccountIdstring
ID of the counter bank account.
exchangeRatenumbermax 100000
feeHalerintegermax 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
notestringmax 2000 chars
pairingSymbolstringmax 32 chars

Response · 200

idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
POST/v1/bank-movements/{id}/classify
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"
}'

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

MCP tool: match-bank-movement

Path parameters

idstringrequired

Request body

allocationsobject[]required
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"required
documentIdstringrequired
ID of the document.
amountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
documentAmountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
resolution"keep" | "correct"
notestringmax 2000 chars

Response · 200

idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
POST/v1/bank-movements/{id}/match
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"
    }
  ]
}'

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: release-hand-payment-rest

Path parameters

idstringrequired

Response · 200

releasedintegerrequired
confirmedCountintegerrequired
POST/v1/bank-movements/{id}/release-rest
curl -X POST https://api.damedoklad.cz/v1/bank-movements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/release-rest \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: unmatch-bank-movement

Path parameters

idstringrequired

Request body

allocationIdstring
ID of the allocation.

Response · 200

idstringrequired
bankAccountIdstringrequired
statementIdnull | stringrequired
sourcestringrequired
externalIdnull | stringrequired
bookedOnstringrequireddate
valueDatestring | nullrequired
amountHalerintegerrequired
currencystringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
counterpartyNamenull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
bankTypenull | stringrequired
isReversalbooleanrequired
statusstringrequired
allocatedHalerintegerrequired
remainingHalerinteger | nullrequired
createdAtstringrequireddate-time
allocationsobject[]required
object"bank_allocation"required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
paymentIdnull | stringrequired
amountHalerintegerrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
counterBankAccountIdnull | stringrequired
exchangeRatenull | numberrequired
orderItemIdnull | stringrequired
confidencenull | numberrequired
matchedBystringrequired
notenull | stringrequired
createdAtstringrequireddate-time
suggestionsobject[]required
typestringrequired
kindstring
documentIdnull | string
numbernull | string
contactNamenull | string
orderItemIdnull | string
amountHalerintegerrequired
remainingHalerinteger | null
confidencenull | numberrequired
levelstringrequired
reasonnull | stringrequired
sourcestring
accountNumbernull | string
classificationstring | null
categorynull | string
counterBankAccountIdnull | string
ruleIdstring
ruleNamestring
POST/v1/bank-movements/{id}/unmatch
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"
}'

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

MCP tool: auto-match-bank-movements

Response · 200

checkedCountintegerrequired
matchedCountintegerrequired
movementIdsstring[]required
POST/v1/bank-movements/auto-match
curl -X POST https://api.damedoklad.cz/v1/bank-movements/auto-match \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-bank-open-documents

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
direction"in" | "out"

Response · 200

dataobject[]required
object"open_document"required
kindstringrequired
idstringrequired
numbernull | stringrequired
variableSymbolnull | stringrequired
currencynull | stringrequired
totalHalerinteger | nullrequired
remainingHalerinteger | nullrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
contactNamenull | stringrequired
contactIdnull | stringrequired
inPaymentbooleanrequired
incomingboolean
bankAccountIdstring
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-open-documents
curl https://api.damedoklad.cz/v1/bank-open-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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.

MCP tool: post-stated-opening-balances

Response · 200

notPostedany[]required
POST/v1/bank-opening-balances/post
curl -X POST https://api.damedoklad.cz/v1/bank-opening-balances/post \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: get-bank-overview

Response · 200

unmatchedCountintegerrequired
unmatchedAbsHalerintegerrequired
suggestedCountintegerrequired
suggestedCountPartialbooleanrequired
GET/v1/bank-overview
curl https://api.damedoklad.cz/v1/bank-overview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-payable-received-invoices

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
dueTostringYYYY-MM-DD
Date as YYYY-MM-DD.
dueFromstringYYYY-MM-DD
Date as YYYY-MM-DD.
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.

Response · 200

dataobject[]required
object"payable_invoice"required
kindstringrequired
idstringrequired
numbernull | stringrequired
supplierDocumentNumbernull | string
contactNamenull | stringrequired
variableSymbolnull | stringrequired
dueDatenull | stringrequireddate
currencynull | stringrequired
totalHalerinteger | nullrequired
remainingHalerinteger | nullrequired
hasBankAccountbooleanrequired
inPaymentbooleanrequired
paymentOrderIdnull | stringrequired
approvalBlockedbooleanrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-payable-invoices
curl https://api.damedoklad.cz/v1/bank-payable-invoices \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-bank-rules

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.

Response · 200

dataany[]required
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-rules
curl https://api.damedoklad.cz/v1/bank-rules \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-bank-rule

Request body

namestringrequiredmax 200 chars
direction"any" | "in" | "out"
counterpartyNameContainsstringmax 200 chars
counterpartyAccountstring
counterpartyBankCodestring
messageContainsstringmax 200 chars
variableSymbolstring
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"required
accountNumberstring
Account number from the chart of accounts, for example 311. list-accounts lists them.
classification"income_taxable" | "income_nontax" | "expense_deductible" | "expense_nontax" | "transfer"
priorityintegermin 0max 1000
isActiveboolean

Response · 201

idstringrequired
namestringrequired
directionstringrequired
counterpartyNameContainsnull | stringrequired
counterpartyAccountstring | nullrequired
counterpartyBankCodestring | nullrequired
messageContainsnull | stringrequired
variableSymbolstring | nullrequired
categorystringrequired
accountNumbernull | stringrequired
classificationstring | nullrequired
priorityintegerrequired
isActivebooleanrequired
createdAtstringrequireddate-time
POST/v1/bank-rules
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"
}'

Update a pairing rule

PATCH/v1/bank-rules/{id}

Update a pairing rule

MCP tool: update-bank-rule

Path parameters

idstringrequired

Request body

namestringmax 200 chars
direction"any" | "in" | "out"
counterpartyNameContainsstringmax 200 chars
counterpartyAccountstring
counterpartyBankCodestring
messageContainsstringmax 200 chars
variableSymbolstring
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"
accountNumberstring
Account number from the chart of accounts, for example 311. list-accounts lists them.
classification"income_taxable" | "income_nontax" | "expense_deductible" | "expense_nontax" | "transfer"
priorityintegermin 0max 1000
isActiveboolean

Response · 200

idstringrequired
namestringrequired
directionstringrequired
counterpartyNameContainsnull | stringrequired
counterpartyAccountstring | nullrequired
counterpartyBankCodestring | nullrequired
messageContainsnull | stringrequired
variableSymbolstring | nullrequired
categorystringrequired
accountNumbernull | stringrequired
classificationstring | nullrequired
priorityintegerrequired
isActivebooleanrequired
createdAtstringrequireddate-time
PATCH/v1/bank-rules/{id}
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."
}'

Delete a pairing rule

DELETE/v1/bank-rules/{id}

Delete a pairing rule

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: delete-bank-rule

Path parameters

idstringrequired

Response · 200

idstringrequired
deletedbooleanrequired
DELETE/v1/bank-rules/{id}
curl -X DELETE https://api.damedoklad.cz/v1/bank-rules/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: list-bank-statements

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
bankAccountIdstring
ID of the bank account. Find it with list-bank-accounts.

Response · 200

dataobject[]required
object"bank_statement"required
idstringrequired
bankAccountIdstringrequired
formatstringrequired
fileNamenull | stringrequired
numbernull | stringrequired
periodFromnull | stringrequireddate
periodTonull | stringrequireddate
openingBalanceHalerinteger | nullrequired
closingBalanceHalerinteger | nullrequired
debitTotalHalerintegerrequired
creditTotalHalerintegerrequired
movementCountintegerrequired
importedCountintegerrequired
duplicateCountintegerrequired
autoMatchedCountintegerrequired
warningsobject[]required
codenull | stringrequired
messagenull | stringrequired
diffHalerintegerrequired
createdAtstringrequireddate-time
continuitystring
continuityDiffHalerinteger
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/bank-statements
curl https://api.damedoklad.cz/v1/bank-statements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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.

MCP tool: import-bank-statement

Request body

bankAccountIdstringrequired
ID of the bank account. Find it with list-bank-accounts.
fileBase64stringrequiredmin 4 charsmax 20000000 chars
File content encoded as base64.
fileNamestringmax 200 chars
format"auto" | "gpc" | "camt053" | "mt940" | "csv"
encoding"windows-1250" | "utf-8" | "iso-8859-2"
gpcVariant"fio" | "cs"
csvobject
mappingobjectrequired
bookedOnstring
Date as YYYY-MM-DD.
amountstring
creditstring
debitstring
currencystring
ISO 4217 currency code, for example CZK or EUR.
counterpartyAccountstring
counterpartyBankCodestring
counterpartyIbanstring
IBAN without spaces.
counterpartyNamestring
variableSymbolstring
constantSymbolstring
specificSymbolstring
messagestring
externalIdstring
ID of the external.
bankTypestring
delimiterstring1 chars
numberstringmax 40 chars
openingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
closingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.

Response · 201

duplicateFilebooleanrequired
importedCountintegerrequired
duplicateCountintegerrequired
autoMatchedCountintegerrequired
statementsobject[]required
object"bank_statement"required
idstringrequired
bankAccountIdstringrequired
formatstringrequired
fileNamenull | stringrequired
numbernull | stringrequired
periodFromnull | stringrequireddate
periodTonull | stringrequireddate
openingBalanceHalerinteger | nullrequired
closingBalanceHalerinteger | nullrequired
debitTotalHalerintegerrequired
creditTotalHalerintegerrequired
movementCountintegerrequired
importedCountintegerrequired
duplicateCountintegerrequired
autoMatchedCountintegerrequired
warningsobject[]required
codenull | stringrequired
messagenull | stringrequired
diffHalerintegerrequired
createdAtstringrequireddate-time
continuitystring
continuityDiffHalerinteger
POST/v1/bank-statements/import
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"
}'

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

MCP tool: inspect-bank-csv

Request body

fileBase64stringrequiredmin 4 charsmax 20000000 chars
File content encoded as base64.
encoding"windows-1250" | "utf-8" | "iso-8859-2"
delimiterstring1 chars

Response · 200

delimiterstringrequired
headersstring[]required
sampleRowsstring[][]required
rowCountintegerrequired
suggestedMappingobjectrequired
bookedOnstringrequired
amountstringrequired
variableSymbolnull | stringrequired
POST/v1/bank-statements/inspect-csv
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"
}'

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

MCP tool: list-card-settlements

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
status"imported" | "posted"

Response · 200

dataobject[]required
object"card_settlement"required
idstringrequired
providernull | stringrequired
formatstringrequired
formatStatusstringrequired
fileNamenull | stringrequired
settledOnnull | stringrequireddate
currencynull | stringrequired
grossHalerintegerrequired
refundHalerintegerrequired
feeHalerintegerrequired
otherHalerintegerrequired
payoutHalerintegerrequired
differenceHalerintegerrequired
payoutReferencenull | stringrequired
statusstringrequired
clearingAccountnull | stringrequired
feeAccountnull | stringrequired
movementIdnull | stringrequired
postedAtnull | stringrequireddate-time
linesobject[]
referencenull | stringrequired
amountHalerintegerrequired
variableSymbolnull | stringrequired
occurredOnnull | stringrequireddate
descriptionnull | stringrequired
kindstringrequired
positionintegerrequired
feeHalerintegerrequired
object"card_settlement_line"required
idstring
documentKindnull | string
documentIdnull | string
paymentIdnull | string
movementCandidatesobject[]
idstringrequired
bookedOnstringrequireddate
amountHalerinteger | nullrequired
variableSymbolnull | stringrequired
counterpartyNamenull | stringrequired
symbolMatchesbooleanrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/card-settlements
curl https://api.damedoklad.cz/v1/card-settlements \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: get-card-settlement

Path parameters

idstringrequired

Response · 200

idstringrequired
providernull | stringrequired
formatstringrequired
formatStatusstringrequired
fileNamenull | stringrequired
settledOnnull | stringrequireddate
currencynull | stringrequired
grossHalerintegerrequired
refundHalerintegerrequired
feeHalerintegerrequired
otherHalerintegerrequired
payoutHalerintegerrequired
differenceHalerintegerrequired
payoutReferencenull | stringrequired
statusstringrequired
clearingAccountnull | stringrequired
feeAccountnull | stringrequired
movementIdnull | stringrequired
postedAtnull | stringrequireddate-time
linesobject[]
referencenull | stringrequired
amountHalerintegerrequired
variableSymbolnull | stringrequired
occurredOnnull | stringrequireddate
descriptionnull | stringrequired
kindstringrequired
positionintegerrequired
feeHalerintegerrequired
object"card_settlement_line"required
idstring
documentKindnull | string
documentIdnull | string
paymentIdnull | string
movementCandidatesobject[]
idstringrequired
bookedOnstringrequireddate
amountHalerinteger | nullrequired
variableSymbolnull | stringrequired
counterpartyNamenull | stringrequired
symbolMatchesbooleanrequired
GET/v1/card-settlements/{id}
curl https://api.damedoklad.cz/v1/card-settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Remove an imported settlement that has not been posted

DELETE/v1/card-settlements/{id}

Remove an imported settlement that has not been posted

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: delete-card-settlement

Path parameters

idstringrequired

Response · 200

idstringrequired
deletedbooleanrequired
DELETE/v1/card-settlements/{id}
curl -X DELETE https://api.damedoklad.cz/v1/card-settlements/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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.

MCP tool: post-card-settlement

Path parameters

idstringrequired

Request body

movementIdstringrequired
ID of the movement. Find it with list-movements.
clearingAccountstring
feeAccountstring

Response · 200

idstringrequired
providernull | stringrequired
formatstringrequired
formatStatusstringrequired
fileNamenull | stringrequired
settledOnnull | stringrequireddate
currencynull | stringrequired
grossHalerintegerrequired
refundHalerintegerrequired
feeHalerintegerrequired
otherHalerintegerrequired
payoutHalerintegerrequired
differenceHalerintegerrequired
payoutReferencenull | stringrequired
statusstringrequired
clearingAccountnull | stringrequired
feeAccountnull | stringrequired
movementIdnull | stringrequired
postedAtnull | stringrequireddate-time
linesobject[]
referencenull | stringrequired
amountHalerintegerrequired
variableSymbolnull | stringrequired
occurredOnnull | stringrequireddate
descriptionnull | stringrequired
kindstringrequired
positionintegerrequired
feeHalerintegerrequired
object"card_settlement_line"required
idstring
documentKindnull | string
documentIdnull | string
paymentIdnull | string
movementCandidatesobject[]
idstringrequired
bookedOnstringrequireddate
amountHalerinteger | nullrequired
variableSymbolnull | stringrequired
counterpartyNamenull | stringrequired
symbolMatchesbooleanrequired
POST/v1/card-settlements/{id}/post
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"
}'

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.

MCP tool: import-card-settlement

Request body

provider"comgate" | "gopay" | "thepay" | "kb_smartpay" | "payu"required
fileBase64stringrequiredmin 4 charsmax 20000000 chars
File content encoded as base64.
fileNamestringmax 200 chars
encoding"windows-1250" | "utf-8" | "iso-8859-2"
settledOnstringYYYY-MM-DD
Date as YYYY-MM-DD.
columnsobject
grossstringrequiredmax 120 chars
feestringmax 120 chars
netstringmax 120 chars
datestringmax 120 chars
Date as YYYY-MM-DD.
variableSymbolstringmax 120 chars
referencestringmax 120 chars
batchstringmax 120 chars
dryRunboolean
confirmUnverifiedboolean

Response · 201

providernull | stringrequired
formatstringrequired
formatStatusstringrequired
settledOnnull | stringrequireddate
currencynull | stringrequired
grossHalerintegerrequired
refundHalerintegerrequired
feeHalerintegerrequired
otherHalerintegerrequired
payoutHalerintegerrequired
differenceHalerintegerrequired
payoutReferencenull | stringrequired
warningsstring[]required
linesobject[]
referencenull | stringrequired
amountHalerintegerrequired
variableSymbolnull | stringrequired
occurredOnnull | stringrequireddate
descriptionnull | stringrequired
kindstringrequired
positionintegerrequired
feeHalerintegerrequired
object"card_settlement_line"required
idstring
documentKindnull | string
documentIdnull | string
paymentIdnull | string
idstring
fileNamenull | string
statusstring
clearingAccountstring | null
feeAccountstring | null
movementIdstring | null
postedAtstring | null
duplicateFileboolean
POST/v1/card-settlements/import
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"
}'

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

MCP tool: get-card-settlement-settings

Response · 200

clearingAccountnull | stringrequired
feeAccountnull | stringrequired
providersobject[]required
idstringrequired
labelnull | stringrequired
formatstringrequired
formatStatusstringrequired
GET/v1/card-settlements/settings
curl https://api.damedoklad.cz/v1/card-settlements/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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.

MCP tool: update-card-settlement-settings

Request body

clearingAccountstring
feeAccountstring

Response · 200

clearingAccountnull | stringrequired
feeAccountnull | stringrequired
providersobject[]required
idstringrequired
labelnull | stringrequired
formatstringrequired
formatStatusstringrequired
PATCH/v1/card-settlements/settings
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"
}'

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

MCP tool: list-cash-documents

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
registerIdstring
ID of the register.
kind"receipt" | "expense"

Response · 200

dataobject[]required
object"cash_document"required
idstringrequired
registerIdstringrequired
kindstringrequired
numberstringrequired
issuedOnstringrequireddate
amountHalerintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
vatRateintegerrequired
exchangeRatenull | numberrequired
counterpartyNamenull | stringrequired
contactIdnull | stringrequired
descriptionstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
negativeOverridebooleanrequired
statusstringrequired
createdAtstringrequireddate-time
balanceHalerinteger | null
eetPrepaidLoadHalerinteger
eetPrepaidUseHalerinteger
eetVoucherIdnull | string
eetMandateIdstring | null
paidAtnull | stringdate-time
registerBalanceHalerinteger
warningsobject[]
codenull | stringrequired
limitHalerintegerrequired
totalHalerinteger | nullrequired
messagenull | stringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/cash-documents
curl https://api.damedoklad.cz/v1/cash-documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-cash-document

Request body

registerIdstringrequired
ID of the register.
kind"receipt" | "expense"required
issuedOnstringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
amountHalerintegerrequiredmax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
descriptionstringrequiredmax 400 chars
counterpartyNamestringmax 200 chars
contactIdstring
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"
documentIdstring
ID of the document.
documentAmountHalerintegermax 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"
accountNumberstring
Account number from the chart of accounts, for example 311. list-accounts lists them.
classification"income_taxable" | "income_nontax" | "expense_deductible" | "expense_nontax" | "transfer"
vatRatenumbermin 0max 100
vatMode"domestic" | "eu_registration" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel"
vatCountrystring2 chars
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
purchaseLineIdstring
ID of the purchase line.
exchangeRatenumbermax 100000
allowNegativeboolean
eetPrepaidLoadHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
eetPrepaidUseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
eetVoucherIdstring
ID of the eet voucher. Find it with list-eet-vouchers.
eetMandateIdstring
ID of the eet mandate. Find it with list-eet-mandates.
eetOwnSaleboolean
paidAtstringdate-time

Response · 201

idstringrequired
registerIdstringrequired
kindstringrequired
numberstringrequired
issuedOnstringrequireddate
amountHalerintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
vatRateintegerrequired
exchangeRatenull | numberrequired
counterpartyNamenull | stringrequired
contactIdnull | stringrequired
descriptionstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
negativeOverridebooleanrequired
statusstringrequired
createdAtstringrequireddate-time
balanceHalerinteger | null
eetPrepaidLoadHalerinteger
eetPrepaidUseHalerinteger
eetVoucherIdnull | string
eetMandateIdstring | null
paidAtnull | stringdate-time
registerBalanceHalerinteger
warningsobject[]
codenull | stringrequired
limitHalerintegerrequired
totalHalerinteger | nullrequired
messagenull | stringrequired
POST/v1/cash-documents
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"
}'

Get one cash document

GET/v1/cash-documents/{id}

Get one cash document

MCP tool: get-cash-document

Path parameters

idstringrequired

Response · 200

idstringrequired
registerIdstringrequired
kindstringrequired
numberstringrequired
issuedOnstringrequireddate
amountHalerintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
vatRateintegerrequired
exchangeRatenull | numberrequired
counterpartyNamenull | stringrequired
contactIdnull | stringrequired
descriptionstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
negativeOverridebooleanrequired
statusstringrequired
createdAtstringrequireddate-time
balanceHalerinteger | null
eetPrepaidLoadHalerinteger
eetPrepaidUseHalerinteger
eetVoucherIdnull | string
eetMandateIdstring | null
paidAtnull | stringdate-time
registerBalanceHalerinteger
warningsobject[]
codenull | stringrequired
limitHalerintegerrequired
totalHalerinteger | nullrequired
messagenull | stringrequired
GET/v1/cash-documents/{id}
curl https://api.damedoklad.cz/v1/cash-documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: cancel-cash-document

Path parameters

idstringrequired

Request body

allowNegativeboolean

Response · 200

idstringrequired
registerIdstringrequired
kindstringrequired
numberstringrequired
issuedOnstringrequireddate
amountHalerintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
vatRateintegerrequired
exchangeRatenull | numberrequired
counterpartyNamenull | stringrequired
contactIdnull | stringrequired
descriptionstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
categorynull | stringrequired
accountNumbernull | stringrequired
classificationnull | stringrequired
negativeOverridebooleanrequired
statusstringrequired
createdAtstringrequireddate-time
balanceHalerinteger | null
eetPrepaidLoadHalerinteger
eetPrepaidUseHalerinteger
eetVoucherIdnull | string
eetMandateIdstring | null
paidAtnull | stringdate-time
registerBalanceHalerinteger
warningsobject[]
codenull | stringrequired
limitHalerintegerrequired
totalHalerinteger | nullrequired
messagenull | stringrequired
POST/v1/cash-documents/{id}/cancel
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
}'

Download a cash document as PDF

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

Download a cash document as PDF

MCP tool: get-cash-document-pdf

Path parameters

idstringrequired

Response · 200

Returns a application/pdf file.

GET/v1/cash-documents/{id}/pdf
curl https://api.damedoklad.cz/v1/cash-documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pdf \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor

List cash registers with current balance

GET/v1/cash-registers

List cash registers with current balance

MCP tool: list-cash-registers

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991

Response · 200

dataobject[]required
object"cash_register"required
idstringrequired
namestringrequired
currencystringrequired
ledgerAccountstringrequired
openingBalanceHalerintegerrequired
openingDatenull | stringrequireddate
openingExchangeRatenull | numberrequired
openingStatestringrequired
receiptPrefixstringrequired
expensePrefixstringrequired
isActivebooleanrequired
createdAtstringrequireddate-time
balanceHalerintegerrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/cash-registers
curl https://api.damedoklad.cz/v1/cash-registers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-cash-register

Request body

namestringrequiredmax 200 chars
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
ledgerAccountstring
openingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
openingDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
openingExchangeRatenumbermax 100000
receiptPrefixstring
expensePrefixstring

Response · 201

idstringrequired
namestringrequired
currencystringrequired
ledgerAccountstringrequired
openingBalanceHalerintegerrequired
openingDatenull | stringrequireddate
openingExchangeRatenull | numberrequired
openingStatestringrequired
receiptPrefixstringrequired
expensePrefixstringrequired
isActivebooleanrequired
createdAtstringrequireddate-time
balanceHalerintegerrequired
POST/v1/cash-registers
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."
}'

Get one cash register

GET/v1/cash-registers/{id}

Get one cash register

MCP tool: get-cash-register

Path parameters

idstringrequired

Response · 200

idstringrequired
namestringrequired
currencystringrequired
ledgerAccountstringrequired
openingBalanceHalerintegerrequired
openingDatenull | stringrequireddate
openingExchangeRatenull | numberrequired
openingStatestringrequired
receiptPrefixstringrequired
expensePrefixstringrequired
isActivebooleanrequired
createdAtstringrequireddate-time
balanceHalerintegerrequired
GET/v1/cash-registers/{id}
curl https://api.damedoklad.cz/v1/cash-registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: update-cash-register

Path parameters

idstringrequired

Request body

namestringmax 200 chars
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
ledgerAccountstring
openingBalanceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
openingDatestring | null
Date as YYYY-MM-DD.
openingExchangeRatenumbermax 100000
receiptPrefixstring
expensePrefixstring
isActiveboolean

Response · 200

idstringrequired
namestringrequired
currencystringrequired
ledgerAccountstringrequired
openingBalanceHalerintegerrequired
openingDatenull | stringrequireddate
openingExchangeRatenull | numberrequired
openingStatestringrequired
receiptPrefixstringrequired
expensePrefixstringrequired
isActivebooleanrequired
createdAtstringrequireddate-time
balanceHalerintegerrequired
PATCH/v1/cash-registers/{id}
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"
}'

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: delete-cash-register

Path parameters

idstringrequired

Response · 200

idstringrequired
deletedbooleanrequired
DELETE/v1/cash-registers/{id}
curl -X DELETE https://api.damedoklad.cz/v1/cash-registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

List payment orders

GET/v1/payment-orders

List payment orders

MCP tool: list-payment-orders

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
status"draft" | "exported" | "completed" | "cancelled"
kind"payment" | "collection"

Response · 200

dataobject[]required
object"payment_order"required
idstringrequired
bankAccountIdstringrequired
numberintegerrequired
executionDatestringrequireddate
currencystringrequired
totalHalerintegerrequired
statusstringrequired
exportedFormatnull | stringrequired
exportedAtnull | stringrequireddate-time
createdAtstringrequireddate-time
itemsobject[]required
object"payment_order_item"required
idstringrequired
orderIdstringrequired
receivedInvoiceIdnull | stringrequired
supplierAdvanceIdnull | stringrequired
otherPayableIdnull | stringrequired
payrollPaymentIdnull | stringrequired
amountHalerintegerrequired
counterpartyNamenull | stringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
statusstringrequired
movementIdnull | stringrequired
salesDocumentIdnull | string
invoiceIdnull | string
mandateIdnull | string
sequenceTypenull | string
counterpartyBicnull | string
counterpartyCountrynull | string
chargeBearernull | string
paymentReasonnull | string
kindstring
schemestring
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamenull | stringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/payment-orders
curl https://api.damedoklad.cz/v1/payment-orders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-payment-order

Request body

bankAccountIdstringrequired
ID of the bank account. Find it with list-bank-accounts.
executionDatestringrequiredYYYY-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
itemsobject[]required
receivedInvoiceIdstring
ID of the received invoice. Find it with list-received-invoices.
supplierAdvanceIdstring
ID of the supplier advance. Find it with list-supplier-advances.
otherPayableIdstring
ID of the other payable.
invoiceIdstring
ID of the invoice. Find it with list-invoices.
debitNoteIdstring
ID of the debit note.
otherReceivableIdstring
ID of the other receivable.
mandateIdstring
For a SEPA collection. Without it the only active mandate of the contact is used
amountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
messagestringmax 140 chars
foreignobject
accountstringmax 34 chars
IBAN, or the account number where the country has no IBAN
bicstring
streetstringmax 70 chars
citystringmax 35 chars
countrystring
bankNamestringmax 70 chars
bankStreetstringmax 70 chars
bankCitystringmax 35 chars
chargeBearer"SHA" | "OUR" | "BEN"
Who bears the charges. Default SHA, the only one allowed within the EU/EEA
paymentReasonstring
Payment title from the ČNB list, which some banks ask for

Response · 201

idstringrequired
bankAccountIdstringrequired
numberintegerrequired
executionDatestringrequireddate
currencystringrequired
totalHalerintegerrequired
statusstringrequired
exportedFormatnull | stringrequired
exportedAtnull | stringrequireddate-time
createdAtstringrequireddate-time
itemsobject[]required
object"payment_order_item"required
idstringrequired
orderIdstringrequired
receivedInvoiceIdnull | stringrequired
supplierAdvanceIdnull | stringrequired
otherPayableIdnull | stringrequired
payrollPaymentIdnull | stringrequired
amountHalerintegerrequired
counterpartyNamenull | stringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
statusstringrequired
movementIdnull | stringrequired
salesDocumentIdnull | string
invoiceIdnull | string
mandateIdnull | string
sequenceTypenull | string
counterpartyBicnull | string
counterpartyCountrynull | string
chargeBearernull | string
paymentReasonnull | string
kindstring
schemestring
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamenull | stringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
POST/v1/payment-orders
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"
    }
  ]
}'

Get a payment order with its items

GET/v1/payment-orders/{id}

Get a payment order with its items

MCP tool: get-payment-order

Path parameters

idstringrequired

Response · 200

idstringrequired
bankAccountIdstringrequired
numberintegerrequired
executionDatestringrequireddate
currencystringrequired
totalHalerintegerrequired
statusstringrequired
exportedFormatnull | stringrequired
exportedAtnull | stringrequireddate-time
createdAtstringrequireddate-time
itemsobject[]required
object"payment_order_item"required
idstringrequired
orderIdstringrequired
receivedInvoiceIdnull | stringrequired
supplierAdvanceIdnull | stringrequired
otherPayableIdnull | stringrequired
payrollPaymentIdnull | stringrequired
amountHalerintegerrequired
counterpartyNamenull | stringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
statusstringrequired
movementIdnull | stringrequired
salesDocumentIdnull | string
invoiceIdnull | string
mandateIdnull | string
sequenceTypenull | string
counterpartyBicnull | string
counterpartyCountrynull | string
chargeBearernull | string
paymentReasonnull | string
kindstring
schemestring
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamenull | stringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
GET/v1/payment-orders/{id}
curl https://api.damedoklad.cz/v1/payment-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

IrreversibleThis operation cannot be undone. MCP clients ask for confirmation first.

MCP tool: cancel-payment-order

Path parameters

idstringrequired

Response · 200

idstringrequired
bankAccountIdstringrequired
numberintegerrequired
executionDatestringrequireddate
currencystringrequired
totalHalerintegerrequired
statusstringrequired
exportedFormatnull | stringrequired
exportedAtnull | stringrequireddate-time
createdAtstringrequireddate-time
itemsobject[]required
object"payment_order_item"required
idstringrequired
orderIdstringrequired
receivedInvoiceIdnull | stringrequired
supplierAdvanceIdnull | stringrequired
otherPayableIdnull | stringrequired
payrollPaymentIdnull | stringrequired
amountHalerintegerrequired
counterpartyNamenull | stringrequired
counterpartyAccountnull | stringrequired
counterpartyBankCodenull | stringrequired
counterpartyIbannull | stringrequired
variableSymbolnull | stringrequired
constantSymbolnull | stringrequired
specificSymbolstring | nullrequired
messagenull | stringrequired
statusstringrequired
movementIdnull | stringrequired
salesDocumentIdnull | string
invoiceIdnull | string
mandateIdnull | string
sequenceTypenull | string
counterpartyBicnull | string
counterpartyCountrynull | string
chargeBearernull | string
paymentReasonnull | string
kindstring
schemestring
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamenull | stringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
POST/v1/payment-orders/{id}/cancel
curl -X POST https://api.damedoklad.cz/v1/payment-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: export-payment-order

Path parameters

idstringrequired

Query parameters

format"kpc" | "sepa" | "xml" | "foreign" | "direct_debit"

Response · 200

Returns a application/octet-stream file.

GET/v1/payment-orders/{id}/export
curl https://api.damedoklad.cz/v1/payment-orders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/export \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor

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

MCP tool: check-payment-order

Request body

itemsobject[]required
receivedInvoiceIdstring
ID of the received invoice. Find it with list-received-invoices.
supplierAdvanceIdstring
ID of the supplier advance. Find it with list-supplier-advances.
otherPayableIdstring
ID of the other payable.

Response · 200

dataobject[]required
receivedInvoiceIdnull | stringrequired
numbernull | stringrequired
contactNamenull | stringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
POST/v1/payment-orders/check
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"
    }
  ]
}'

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

GET/v1/sepa-mandates

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

MCP tool: list-sepa-mandates

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars
fromstringYYYY-MM-DD
Date as YYYY-MM-DD.
tostringYYYY-MM-DD
Date as YYYY-MM-DD.
contactIdstring
ID of the contact. Find it with list-contacts.
status"active" | "revoked"

Response · 200

dataobject[]required
object"sepa_mandate"required
idstringrequired
contactIdstringrequired
referencestringrequired
signedOnstringrequireddate
schemestringrequired
recurrencestringrequired
debtorIbanstringrequired
debtorBicnull | stringrequired
statusstringrequired
createdAtstringrequireddate-time
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sepa-mandates
curl https://api.damedoklad.cz/v1/sepa-mandates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

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

MCP tool: create-sepa-mandate

Request body

contactIdstringrequired
ID of the contact. Find it with list-contacts.
referencestringrequiredmax 35 chars
Identifier of the mandate, as the customer signed it
signedOnstringrequiredYYYY-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"
debtorIbanstringrequiredmin 5 charsmax 42 chars
IBAN without spaces.
debtorBicstring

Response · 201

idstringrequired
contactIdstringrequired
referencestringrequired
signedOnstringrequireddate
schemestringrequired
recurrencestringrequired
debtorIbanstringrequired
debtorBicnull | stringrequired
statusstringrequired
createdAtstringrequireddate-time
POST/v1/sepa-mandates
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"
}'

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

MCP tool: update-sepa-mandate

Path parameters

idstringrequired

Request body

debtorBicstring | null
status"active" | "revoked"

Response · 200

idstringrequired
contactIdstringrequired
referencestringrequired
signedOnstringrequireddate
schemestringrequired
recurrencestringrequired
debtorIbanstringrequired
debtorBicnull | stringrequired
statusstringrequired
createdAtstringrequireddate-time
PATCH/v1/sepa-mandates/{id}
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"
}'

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

POST/v1/spayd

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

MCP tool: create-spayd

Request body

ibanstringrequiredmax 42 chars
IBAN without spaces.
bicstring
amountHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
variableSymbolstring
specificSymbolstring
constantSymbolstring
recipientNamestringmax 200 chars
messagestringmax 400 chars
dueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.

Response · 200

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