Skip to content

Operations in the Sales group.

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

List the open receivables and payables of one contact that can be set off against each other

GET/v1/contacts/{id}/set-off-candidates

List the open receivables and payables of one contact that can be set off against each other

MCP tool: list-set-off-candidates

Path parameters

idstringrequired

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"set_off_candidate"required
kindstringrequired
sidestringrequired
creditNotebooleanrequired
documentIdnull | stringrequired
numbernull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
currencynull | stringrequired
totalHalerinteger | nullrequired
openHalerintegerrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/contacts/{id}/set-off-candidates
curl https://api.damedoklad.cz/v1/contacts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/set-off-candidates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Upload the .p12 cash register certificate from DIS+ as base64 with its password. It is stored encrypted and the private key never comes back

POST/v1/eet/certificate

Upload the .p12 cash register certificate from DIS+ as base64 with its password. It is stored encrypted and the private key never comes back. § 14 odst. 4: the taxpayer answers for handling the certificate so it cannot be misused. The password is used once to open the file and is not stored.

MCP tool: upload-eet-certificate

Request body

certificateBase64stringrequiredmin 16 charsmax 64000 chars
File content encoded as base64.
passwordstringrequiredmax 200 chars

Response · 201

enabledbooleanrequired
modestringrequired
liveAvailablebooleanrequired
eicnull | stringrequired
suggestedEicnull | stringrequired
responseTimeoutSecondsintegerrequired
certificatenull | objectrequired
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
unitsobject[]required
object"eet_unit"required
idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
devicesobject[]required
object"eet_device"required
idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
mandatesobject[]
object"eet_mandate"required
idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
POST/v1/eet/certificate
curl -X POST https://api.damedoklad.cz/v1/eet/certificate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "certificateBase64": "string",
  "password": "string"
}'

Delete the stored cash register certificate and its private key. Refused while the company records sales in live mode

DELETE/v1/eet/certificate

Delete the stored cash register certificate and its private key. Refused while the company records sales in live mode

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

MCP tool: remove-eet-certificate

Response · 200

enabledbooleanrequired
modestringrequired
liveAvailablebooleanrequired
eicnull | stringrequired
suggestedEicnull | stringrequired
responseTimeoutSecondsintegerrequired
certificatenull | objectrequired
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
unitsobject[]required
object"eet_unit"required
idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
devicesobject[]required
object"eet_device"required
idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
mandatesobject[]
object"eet_mandate"required
idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
DELETE/v1/eet/certificate
curl -X DELETE https://api.damedoklad.cz/v1/eet/certificate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Renew a cash register certificate now through CA EET. Refused unless the operator has turned automatic renewal on

POST/v1/eet/certificate/renew

Renew a cash register certificate now through CA EET. Refused unless the operator has turned automatic renewal on. The old certificate must still be valid. CA EET makes a new key and certificate, which replace the old ones here, encrypted. The sweep does this by itself from three weeks before the end.

MCP tool: renew-eet-certificate

Request body

mandateIdstring | null
ID of the mandate.

Response · 200

mandateIdnull | stringrequired
automaticAvailablebooleanrequired
hasCertificatebooleanrequired
environmentnull | stringrequired
daysLeftinteger | nullrequired
duebooleanrequired
renewBeforeDaysintegerrequired
expiredbooleanrequired
lastnull | objectrequired
object"eet_certificate_renewal"required
idstringrequired
mandateIdnull | stringrequired
environmentstringrequired
statusstringrequired
oldSerialnull | stringrequired
newSerialnull | stringrequired
attemptsintegerrequired
errorCodenull | stringrequired
errorMessagenull | stringrequired
startedBystringrequired
createdAtstringrequireddate-time
finishedAtnull | stringrequireddate-time
POST/v1/eet/certificate/renew
curl -X POST https://api.damedoklad.cz/v1/eet/certificate/renew \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mandateId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'

Whether a cash register certificate is due for renewal, whether that can happen by itself, and how the last try ended

GET/v1/eet/certificate/renewal

Whether a cash register certificate is due for renewal, whether that can happen by itself, and how the last try ended. Automatic renewal is the CA EET API (caeetapi_jwt.yml) and stays off until the operator sets EET_CA_RENEWAL_ENABLED. Without it a new certificate is issued in DIS+ and uploaded.

MCP tool: get-eet-certificate-renewal

Query parameters

mandateIdstring
ID of the mandate.

Response · 200

mandateIdnull | stringrequired
automaticAvailablebooleanrequired
hasCertificatebooleanrequired
environmentnull | stringrequired
daysLeftinteger | nullrequired
duebooleanrequired
renewBeforeDaysintegerrequired
expiredbooleanrequired
lastnull | objectrequired
object"eet_certificate_renewal"required
idstringrequired
mandateIdnull | stringrequired
environmentstringrequired
statusstringrequired
oldSerialnull | stringrequired
newSerialnull | stringrequired
attemptsintegerrequired
errorCodenull | stringrequired
errorMessagenull | stringrequired
startedBystringrequired
createdAtstringrequireddate-time
finishedAtnull | stringrequireddate-time
GET/v1/eet/certificate/renewal
curl https://api.damedoklad.cz/v1/eet/certificate/renewal \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Add a till device (pokladní zařízení) under a recording unit, optionally tied to one POS register or one cash register

POST/v1/eet/devices

Add a till device (pokladní zařízení) under a recording unit, optionally tied to one POS register or one cash register

MCP tool: create-eet-device

Request body

mandateIdstring | null
ID of the mandate.
unitIdstringrequired
ID of the unit.
deviceCodestringrequired
namestring | null
posRegisterIdstring | null
ID of the pos register. Find it with list-pos-registers.
cashRegisterIdstring | null
ID of the cash register. Find it with list-cash-registers.
isDefaultboolean

Response · 201

idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
POST/v1/eet/devices
curl -X POST https://api.damedoklad.cz/v1/eet/devices \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "unitId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "deviceCode": "string"
}'

Change a till device. The default device cannot be switched off while the company records sales

PATCH/v1/eet/devices/{id}

Change a till device. The default device cannot be switched off while the company records sales

MCP tool: update-eet-device

Path parameters

idstringrequired

Request body

unitIdstring
ID of the unit.
deviceCodestring
namestring | null
posRegisterIdstring | null
ID of the pos register. Find it with list-pos-registers.
cashRegisterIdstring | null
ID of the cash register. Find it with list-cash-registers.
mandateIdstring | null
ID of the mandate.
isDefaultboolean
isActiveboolean

Response · 200

idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
PATCH/v1/eet/devices/{id}
curl -X PATCH https://api.damedoklad.cz/v1/eet/devices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "unitId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "deviceCode": "string",
  "name": "Pekárna U Lípy s.r.o."
}'

Representations and authorisations for EET: for whom this company records sales

GET/v1/eet/mandates

Representations and authorisations for EET: for whom this company records sales

MCP tool: list-eet-mandates

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"eet_mandate"required
idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/eet/mandates
curl https://api.damedoklad.cz/v1/eet/mandates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Add a representation or authorisation: direct (přímé zastoupení), indirect (nepřímé, § 9), authorised (pověření jedním, § 10) or authorised_many (pověření více poplatníky)

POST/v1/eet/mandates

Add a representation or authorisation: direct (přímé zastoupení), indirect (nepřímé, § 9), authorised (pověření jedním, § 10) or authorised_many (pověření více poplatníky). direct: the message is the principal's, with their EIČ and unit, signed with the certificate they gave you. indirect: your own message of the whole amount, with no principal in it. authorised: your EIČ, unit and certificate, with the principal in eic_poverujiciho. authorised_many: yours, with povereni_vice_popl; the principal's EIČ is optional and recommended when you are not one of the owners.

MCP tool: create-eet-mandate

Request body

kind"direct" | "indirect" | "authorised" | "authorised_many"required
namestringrequiredmax 160 chars
principalEicstring | null
referencestring | null
validFromstring | null
Date as YYYY-MM-DD.
validTostring | null
Date as YYYY-MM-DD.
notestring | null

Response · 201

idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
POST/v1/eet/mandates
curl -X POST https://api.damedoklad.cz/v1/eet/mandates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "direct",
  "name": "Pekárna U Lípy s.r.o."
}'

Change a representation or authorisation. Sales already recorded keep what they said

PATCH/v1/eet/mandates/{id}

Change a representation or authorisation. Sales already recorded keep what they said

MCP tool: update-eet-mandate

Path parameters

idstringrequired

Request body

namestringmax 160 chars
principalEicstring | null
referencestring | null
validFromstring | null
Date as YYYY-MM-DD.
validTostring | null
Date as YYYY-MM-DD.
isActiveboolean
notestring | null

Response · 200

idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
PATCH/v1/eet/mandates/{id}
curl -X PATCH https://api.damedoklad.cz/v1/eet/mandates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "principalEic": "string",
  "reference": "string"
}'

Remove a representation that nothing has used. One with recorded sales is switched off instead

DELETE/v1/eet/mandates/{id}

Remove a representation that nothing has used. One with recorded sales is switched off instead

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

MCP tool: delete-eet-mandate

Path parameters

idstringrequired

Response · 200

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

Upload the .p12 the principal gave you for direct representation. It is stored encrypted and the private key never comes back

POST/v1/eet/mandates/{id}/certificate

Upload the .p12 the principal gave you for direct representation. It is stored encrypted and the private key never comes back. Only for direct representation (popis položek situace 2). Under indirect representation and authorisation you sign with your own certificate.

MCP tool: upload-eet-mandate-certificate

Path parameters

idstringrequired

Request body

certificateBase64stringrequiredmin 16 charsmax 64000 chars
File content encoded as base64.
passwordstringrequiredmax 200 chars

Response · 201

idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
POST/v1/eet/mandates/{id}/certificate
curl -X POST https://api.damedoklad.cz/v1/eet/mandates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/certificate \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "certificateBase64": "string",
  "password": "string"
}'

Recorded sales with their send status. open=true lists only what still waits or failed

GET/v1/eet/records

Recorded sales with their send status. open=true lists only what still waits or failed

MCP tool: list-eet-records

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"pending" | "sending" | "confirmed" | "rejected" | "needs_setup" | "excluded"
open"true" | "false"

Response · 200

dataobject[]required
object"eet_record"required
idstringrequired
sourceKindstringrequired
sourceIdstringrequired
sourceEventstringrequired
documentNumbernull | stringrequired
modestringrequired
statusstringrequired
unitNumberintegerrequired
deviceCodestringrequired
sequenceNumberstringrequired
soldAtstringrequireddate-time
soldOnstringrequireddate
timeAssumedbooleanrequired
amountHalerintegerrequired
prepaidLoadHalerintegerrequired
prepaidUseHalerintegerrequired
responseSignaturenull | stringrequired
attemptsintegerrequired
lastAttemptAtnull | stringrequireddate-time
nextAttemptAtnull | stringrequireddate-time
deadlineAtstringrequireddate-time
overDeadlinebooleanrequired
confirmationCodenull | stringrequired
receivedAtnull | stringrequireddate-time
isLatebooleanrequired
warningsobject[]required
codeinteger | nullrequired
messagenull | stringrequired
errorCodenull | stringrequired
errorMessagenull | stringrequired
transactionIdnull | stringrequired
excludedReasonnull | stringrequired
mandateIdnull | string
mandateKindnull | string
forManyTaxpayersboolean
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/eet/records
curl https://api.damedoklad.cz/v1/eet/records \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Take a sale that was never confirmed out of the queue, with a reason, because the law does not require recording it

POST/v1/eet/records/{id}/exclude

Take a sale that was never confirmed out of the queue, with a reason, because the law does not require recording it. For exceptions like a one-off income (§ 7) or a § 11 to § 13 exemption. The decision stays with the company; a confirmed sale is corrected by a negative one instead (§ 8).

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

MCP tool: exclude-eet-record

Path parameters

idstringrequired

Request body

reasonstringrequiredmin 3 charsmax 300 chars

Response · 200

idstringrequired
sourceKindstringrequired
sourceIdstringrequired
sourceEventstringrequired
documentNumbernull | stringrequired
modestringrequired
statusstringrequired
unitNumberintegerrequired
deviceCodestringrequired
sequenceNumberstringrequired
soldAtstringrequireddate-time
soldOnstringrequireddate
timeAssumedbooleanrequired
amountHalerintegerrequired
prepaidLoadHalerintegerrequired
prepaidUseHalerintegerrequired
responseSignaturenull | stringrequired
attemptsintegerrequired
lastAttemptAtnull | stringrequireddate-time
nextAttemptAtnull | stringrequireddate-time
deadlineAtstringrequireddate-time
overDeadlinebooleanrequired
confirmationCodenull | stringrequired
receivedAtnull | stringrequireddate-time
isLatebooleanrequired
warningsobject[]required
codeinteger | nullrequired
messagenull | stringrequired
errorCodenull | stringrequired
errorMessagenull | stringrequired
transactionIdnull | stringrequired
excludedReasonnull | stringrequired
mandateIdnull | string
mandateKindnull | string
forManyTaxpayersboolean
POST/v1/eet/records/{id}/exclude
curl -X POST https://api.damedoklad.cz/v1/eet/records/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/exclude \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "string"
}'

Send a recorded sale again now. Repeats the same data with a new message id, marked as not the first attempt

POST/v1/eet/records/{id}/retry

Send a recorded sale again now. Repeats the same data with a new message id, marked as not the first attempt

MCP tool: retry-eet-record

Path parameters

idstringrequired

Response · 200

idstringrequired
sourceKindstringrequired
sourceIdstringrequired
sourceEventstringrequired
documentNumbernull | stringrequired
modestringrequired
statusstringrequired
unitNumberintegerrequired
deviceCodestringrequired
sequenceNumberstringrequired
soldAtstringrequireddate-time
soldOnstringrequireddate
timeAssumedbooleanrequired
amountHalerintegerrequired
prepaidLoadHalerintegerrequired
prepaidUseHalerintegerrequired
responseSignaturenull | stringrequired
attemptsintegerrequired
lastAttemptAtnull | stringrequireddate-time
nextAttemptAtnull | stringrequireddate-time
deadlineAtstringrequireddate-time
overDeadlinebooleanrequired
confirmationCodenull | stringrequired
receivedAtnull | stringrequireddate-time
isLatebooleanrequired
warningsobject[]required
codeinteger | nullrequired
messagenull | stringrequired
errorCodenull | stringrequired
errorMessagenull | stringrequired
transactionIdnull | stringrequired
excludedReasonnull | stringrequired
mandateIdnull | string
mandateKindnull | string
forManyTaxpayersboolean
POST/v1/eet/records/{id}/retry
curl -X POST https://api.damedoklad.cz/v1/eet/records/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/retry \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Put every waiting or refused sale back in the queue

POST/v1/eet/records/retry

Put every waiting or refused sale back in the queue

MCP tool: retry-eet-records

Response · 200

queuedintegerrequired
POST/v1/eet/records/retry
curl -X POST https://api.damedoklad.cz/v1/eet/records/retry \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

EET 2.0 settings: on or off, mode, EIČ, recording units, till devices, and the certificate. The private key is never returned

GET/v1/eet/settings

EET 2.0 settings: on or off, mode, EIČ, recording units, till devices, and the certificate. The private key is never returned

MCP tool: get-eet-settings

Response · 200

enabledbooleanrequired
modestringrequired
liveAvailablebooleanrequired
eicnull | stringrequired
suggestedEicnull | stringrequired
responseTimeoutSecondsintegerrequired
certificatenull | objectrequired
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
unitsobject[]required
object"eet_unit"required
idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
devicesobject[]required
object"eet_device"required
idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
mandatesobject[]
object"eet_mandate"required
idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
GET/v1/eet/settings
curl https://api.damedoklad.cz/v1/eet/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Turn EET 2.0 on or off, or change EIČ and the response limit. Live mode is refused unless the operator has enabled it

PATCH/v1/eet/settings

Turn EET 2.0 on or off, or change EIČ and the response limit. Live mode is refused unless the operator has enabled it. Turning it on needs a default device. Test mode sends to the official playground with the shared test certificate and fulfils no duty. § 19: the response limit is at least 2 seconds.

MCP tool: update-eet-settings

Request body

enabledboolean
mode"test" | "live"
eicstring | null
responseTimeoutSecondsintegermin 2max 60

Response · 200

enabledbooleanrequired
modestringrequired
liveAvailablebooleanrequired
eicnull | stringrequired
suggestedEicnull | stringrequired
responseTimeoutSecondsintegerrequired
certificatenull | objectrequired
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
unitsobject[]required
object"eet_unit"required
idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
devicesobject[]required
object"eet_device"required
idstringrequired
unitIdstringrequired
deviceCodestringrequired
namenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
isActivebooleanrequired
mandateIdnull | string
mandatesobject[]
object"eet_mandate"required
idstringrequired
kindstringrequired
namestringrequired
isActivebooleanrequired
validFromstring | nullrequired
validTonull | stringrequireddate
principalEicnull | string
referencenull | string
notestring | null
certificatenull | object
subjectnull | stringrequired
serialstringrequired
notBeforestringrequireddate-time
notAfterstringrequireddate-time
daysLeftintegerrequired
environmentstringrequired
PATCH/v1/eet/settings
curl -X PATCH https://api.damedoklad.cz/v1/eet/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "enabled": false,
  "mode": "test",
  "eic": "string"
}'

Whether this company records sales under EET 2.0, how many records wait or failed, and the till devices whose representation or authorisation ends within 14 days or is no longer in force, where a sale must be confirmed as the company's own (eetOwnSale)

GET/v1/eet/summary

Whether this company records sales under EET 2.0, how many records wait or failed, and the till devices whose representation or authorisation ends within 14 days or is no longer in force, where a sale must be confirmed as the company's own (eetOwnSale)

MCP tool: get-eet-summary

Response · 200

enabledbooleanrequired
modenull | stringrequired
pendingintegerrequired
rejectedintegerrequired
needsSetupintegerrequired
overDeadlineintegerrequired
mandateWarningsobject[]
deviceIdstringrequired
deviceCodenull | stringrequired
posRegisterIdnull | stringrequired
cashRegisterIdnull | stringrequired
isDefaultbooleanrequired
mandateIdnull | stringrequired
mandateNamestringrequired
validTonull | stringrequired
daysLeftinteger | nullrequired
expiredbooleanrequired
registersWithDevicestring[]
GET/v1/eet/summary
curl https://api.damedoklad.cz/v1/eet/summary \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Send one verification message to the official EET playground. Records nothing and uses the shared test certificate

POST/v1/eet/test-connection

Send one verification message to the official EET playground. Records nothing and uses the shared test certificate

MCP tool: test-eet-connection

Response · 200

okbooleanrequired
codenull | stringrequired
messagenull | stringrequired
warningsany[]required
elapsedMsintegerrequired
transactionIdnull | stringrequired
POST/v1/eet/test-connection
curl -X POST https://api.damedoklad.cz/v1/eet/test-connection \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Add a recording unit with the number DIS+ assigned to it (evidenční jednotka, § 3 and § 15)

POST/v1/eet/units

Add a recording unit with the number DIS+ assigned to it (evidenční jednotka, § 3 and § 15)

MCP tool: create-eet-unit

Request body

namestringrequiredmax 120 chars
unitNumberintegerrequiredmin 1max 999999999
indirectRepresentationboolean

Response · 201

idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
POST/v1/eet/units
curl -X POST https://api.damedoklad.cz/v1/eet/units \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "unitNumber": 1
}'

Change a recording unit. Sales already recorded keep the number they had

PATCH/v1/eet/units/{id}

Change a recording unit. Sales already recorded keep the number they had

MCP tool: update-eet-unit

Path parameters

idstringrequired

Request body

namestringmax 120 chars
unitNumberintegermin 1max 999999999
isActiveboolean
indirectRepresentationboolean

Response · 200

idstringrequired
namestringrequired
unitNumberintegerrequired
isActivebooleanrequired
numberLooksAssignedbooleanrequired
indirectRepresentationboolean
PATCH/v1/eet/units/{id}
curl -X PATCH https://api.damedoklad.cz/v1/eet/units/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "unitNumber": 1,
  "isActive": false
}'

The register of vouchers and prepaid credit, with their balances. `code` finds one exactly, `search` by code or holder

GET/v1/eet/vouchers

The register of vouchers and prepaid credit, with their balances. `code` finds one exactly, `search` by code or holder

MCP tool: list-eet-vouchers

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"active" | "used" | "void"
kind"limited_network" | "specific_goods"
codestringmax 40 chars

Response · 200

dataobject[]required
object"eet_voucher"required
idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/eet/vouchers
curl https://api.damedoklad.cz/v1/eet/vouchers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Add a voucher to the register: limited_network for credit or a voucher for goods not yet named, specific_goods for named goods or a service

POST/v1/eet/vouchers

Add a voucher to the register: limited_network for credit or a voucher for goods not yet named, specific_goods for named goods or a service. Popis položek kap. 1 bod 13 and Příklad 4. A limited_network voucher is loaded by a sale with eetVoucherId and eetPrepaidLoadHaler, and spent with eetPrepaidUseHaler. A specific_goods voucher is an ordinary sale when bought, and redeeming it records nothing. openingBalanceHaler is for what was sold before this register.

MCP tool: create-eet-voucher

Request body

codestringmin 3 charsmax 40 chars
kind"limited_network" | "specific_goods"required
openingBalanceHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
descriptionstring | null
holderNamestring | null
contactIdstring | null
ID of the contact. Find it with list-contacts.
validUntilstring | null
notestring | null

Response · 201

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
POST/v1/eet/vouchers
curl -X POST https://api.damedoklad.cz/v1/eet/vouchers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "limited_network"
}'

One voucher with all its movements

GET/v1/eet/vouchers/{id}

One voucher with all its movements

MCP tool: get-eet-voucher

Path parameters

idstringrequired

Response · 200

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
GET/v1/eet/vouchers/{id}
curl https://api.damedoklad.cz/v1/eet/vouchers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Change the holder, validity, description or note of a voucher. Its balance moves only with sales and adjustments

PATCH/v1/eet/vouchers/{id}

Change the holder, validity, description or note of a voucher. Its balance moves only with sales and adjustments

MCP tool: update-eet-voucher

Path parameters

idstringrequired

Request body

descriptionstring | null
holderNamestring | null
contactIdstring | null
ID of the contact. Find it with list-contacts.
validUntilstring | null
notestring | null

Response · 200

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
PATCH/v1/eet/vouchers/{id}
curl -X PATCH https://api.damedoklad.cz/v1/eet/vouchers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Pečivo, říjen",
  "holderName": "Pekárna U Lípy s.r.o.",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'

Correct a voucher balance by hand, with a reason. Moves no money and records nothing in EET

POST/v1/eet/vouchers/{id}/adjust

Correct a voucher balance by hand, with a reason. Moves no money and records nothing in EET

MCP tool: adjust-eet-voucher

Path parameters

idstringrequired

Request body

amountHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
reasonstringrequiredmin 3 charsmax 300 chars

Response · 200

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
POST/v1/eet/vouchers/{id}/adjust
curl -X POST https://api.damedoklad.cz/v1/eet/vouchers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/adjust \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "amountHaler": 1210000,
  "reason": "string"
}'

Mark a voucher for named goods as redeemed. No payment happens, so nothing is recorded in EET (popis položek, Příklad 4)

POST/v1/eet/vouchers/{id}/redeem

Mark a voucher for named goods as redeemed. No payment happens, so nothing is recorded in EET (popis položek, Příklad 4)

MCP tool: redeem-eet-voucher

Path parameters

idstringrequired

Request body

datestringYYYY-MM-DD
Date as YYYY-MM-DD.
notestring | null

Response · 200

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
POST/v1/eet/vouchers/{id}/redeem
curl -X POST https://api.damedoklad.cz/v1/eet/vouchers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/redeem \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "note": "string"
}'

Cancel a voucher, with a reason. What is left on it stops being spendable. Any money back is a separate return

POST/v1/eet/vouchers/{id}/void

Cancel a voucher, with a reason. What is left on it stops being spendable. Any money back is a separate return

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

MCP tool: void-eet-voucher

Path parameters

idstringrequired

Request body

reasonstringrequiredmin 3 charsmax 300 chars

Response · 200

idstringrequired
codestringrequired
kindstringrequired
statusstringrequired
balanceHalerintegerrequired
valueHalerintegerrequired
descriptionnull | stringrequired
holderNamenull | stringrequired
contactIdstring | nullrequired
validUntilnull | stringrequireddate
expiredbooleanrequired
notestring | nullrequired
voidReasonnull | stringrequired
createdAtstringrequireddate-time
movementsobject[]
object"eet_voucher_movement"required
idstringrequired
kindstringrequired
amountHalerintegerrequired
balanceAfterHalerintegerrequired
sourceKindnull | stringrequired
sourceIdnull | stringrequired
documentNumbernull | stringrequired
occurredOnstringrequireddate
notenull | stringrequired
createdAtstringrequireddate-time
POST/v1/eet/vouchers/{id}/void
curl -X POST https://api.damedoklad.cz/v1/eet/vouchers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/void \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "string"
}'

Sign a short statement that this dashboard origin may pair with a local bridge. The bridge checks it against the Origin of the request and still asks for the code it shows

POST/v1/pos/bridge/grants

Sign a short statement that this dashboard origin may pair with a local bridge. The bridge checks it against the Origin of the request and still asks for the code it shows

MCP tool: create-pos-bridge-grant

Request body

originstringrequiredmax 200 charsuri

Response · 200

grantstringrequired
expiresAtstringrequireddate-time
POST/v1/pos/bridge/grants
curl -X POST https://api.damedoklad.cz/v1/pos/bridge/grants \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "origin": "string"
}'

The public key the local bridge checks a pairing grant with, for its install command

GET/v1/pos/bridge/key

The public key the local bridge checks a pairing grant with, for its install command

MCP tool: get-pos-bridge-key

Response · 200

algorithmstringrequired
publicKeystringrequired
GET/v1/pos/bridge/key
curl https://api.damedoklad.cz/v1/pos/bridge/key \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

A day closure as an 80 mm slip

GET/v1/pos/closures/{id}/pdf

A day closure as an 80 mm slip

MCP tool: get-pos-closure-pdf

Path parameters

idstringrequired

Response · 200

Returns a application/pdf file.

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

Documents from a till without a connection that the server refused, and notices about what changed meanwhile. open=true lists what waits for a person

GET/v1/pos/offline-conflicts

Documents from a till without a connection that the server refused, and notices about what changed meanwhile. open=true lists what waits for a person

MCP tool: list-pos-offline-conflicts

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.
open"true" | "false"

Response · 200

dataobject[]required
object"pos_offline_conflict"required
idstringrequired
clientIdstringrequired
documentKindstringrequired
severitystringrequired
offlineNumbernull | stringrequired
happenedAtstringrequireddate-time
totalHalerinteger | nullrequired
codenull | stringrequired
messagestringrequired
detailsobjectrequired
itemsobject[]
namenull | stringrequired
itemIdnull | stringrequired
soldHalerintegerrequired
currentHalerintegerrequired
deviceCodestring | nullrequired
statusstringrequired
resolvedNotenull | stringrequired
resolvedAtnull | stringrequireddate-time
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/pos/offline-conflicts
curl https://api.damedoklad.cz/v1/pos/offline-conflicts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

A till says the server refused a document it holds. Reporting the same one again updates it, so everyone can see what waits. The document itself stays on the device

POST/v1/pos/offline-conflicts

A till says the server refused a document it holds. Reporting the same one again updates it, so everyone can see what waits. The document itself stays on the device

MCP tool: report-pos-offline-conflict

Request body

clientIdstringrequiredmin 8 charsmax 64 chars
ID of the client.
documentKind"sale" | "return" | "invoice" | "order" | "closure"required
severity"refused" | "notice"
offlineNumberstring | null
happenedAtstringrequireddate-time
totalHalerinteger | null
Integer amount in haléře: 100 = 1 Kč.
codestring | null
messagestringrequiredmax 600 chars
detailsobject
deviceCodestring | null

Response · 201

idstringrequired
clientIdstringrequired
documentKindstringrequired
severitystringrequired
offlineNumbernull | stringrequired
happenedAtstringrequireddate-time
totalHalerinteger | nullrequired
codenull | stringrequired
messagestringrequired
detailsobjectrequired
itemsobject[]
namenull | stringrequired
itemIdnull | stringrequired
soldHalerintegerrequired
currentHalerintegerrequired
deviceCodestring | nullrequired
statusstringrequired
resolvedNotenull | stringrequired
resolvedAtnull | stringrequireddate-time
POST/v1/pos/offline-conflicts
curl -X POST https://api.damedoklad.cz/v1/pos/offline-conflicts \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "clientId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "documentKind": "sale",
  "happenedAt": "2026-10-30",
  "message": "string"
}'

Close a conflict: acknowledged for a notice, discarded when a person decided the document will not be sent, with a note

POST/v1/pos/offline-conflicts/{id}/resolve

Close a conflict: acknowledged for a notice, discarded when a person decided the document will not be sent, with a note. Discarding here closes the report. If the sale really happened, the money and goods have still moved, so whoever discards should say why. A document sent successfully closes its own conflict.

MCP tool: resolve-pos-offline-conflict

Path parameters

idstringrequired

Request body

status"sent" | "discarded" | "acknowledged"required
notestring | null

Response · 200

idstringrequired
clientIdstringrequired
documentKindstringrequired
severitystringrequired
offlineNumbernull | stringrequired
happenedAtstringrequireddate-time
totalHalerinteger | nullrequired
codenull | stringrequired
messagestringrequired
detailsobjectrequired
itemsobject[]
namenull | stringrequired
itemIdnull | stringrequired
soldHalerintegerrequired
currentHalerintegerrequired
deviceCodestring | nullrequired
statusstringrequired
resolvedNotenull | stringrequired
resolvedAtnull | stringrequireddate-time
POST/v1/pos/offline-conflicts/{id}/resolve
curl -X POST https://api.damedoklad.cz/v1/pos/offline-conflicts/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/resolve \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "sent"
}'

What a till keeps on its device to work without a connection: customers, price lists, serial numbers in stock, kits, the last 30 days of receipts, and where each drawer stands

GET/v1/pos/offline-pack

What a till keeps on its device to work without a connection: customers, price lists, serial numbers in stock, kits, the last 30 days of receipts, and where each drawer stands. A contact with restricted processing is left out. The lists are capped, and truncated says so. The dashboard clears all of it at logout.

MCP tool: get-pos-offline-pack

Response · 200

savedAtstringrequireddate-time
customersobject[]required
idstringrequired
namenull | stringrequired
iconull | stringrequired
dicstring | nullrequired
usualDueDaysinteger | nullrequired
preferredPaymentMethodstring | nullrequired
addressstring | nullrequired
groupIdsany[]required
truncatedbooleanrequired
priceListsobject[]required
idstringrequired
namenull | stringrequired
isDefaultbooleanrequired
discountBpintegerrequired
validFromstring | nullrequired
validTostring | nullrequired
pricesobject[]required
itemIdnull | stringrequired
priceHalerintegerrequired
minQtyMilliintegerrequired
rulesobject[]required
contactIdnull | stringrequired
contactGroupIdstring | nullrequired
discountBpintegerrequired
serialsobject[]required
itemIdnull | stringrequired
codenull | stringrequired
warehouseIdnull | stringrequired
kitsobjectrequired
vouchersany[]required
receiptsobject[]required
idstringrequired
clientSaleIdnull | stringrequired
numbernull | stringrequired
externalNumbernull | stringrequired
soldAtnull | stringrequireddate-time
registerIdnull | stringrequired
paymentMethodstringrequired
totalHalerinteger | nullrequired
contactNamestring | nullrequired
linesobject[]required
positioninteger | nullrequired
descriptionnull | stringrequired
quantityintegerrequired
returnedQuantityintegerrequired
unitnull | stringrequired
unitPriceHalerinteger | nullrequired
vatRateintegerrequired
itemIdstring | nullrequired
serialsany[]required
closuresobjectrequired
denominationsHalerinteger[]required
todaystringrequireddate
GET/v1/pos/offline-pack
curl https://api.damedoklad.cz/v1/pos/offline-pack \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

A sales receipt sized for an 80 mm thermal printer

GET/v1/pos/receipts/{id}/pdf

A sales receipt sized for an 80 mm thermal printer

MCP tool: get-pos-receipt-pdf

Path parameters

idstringrequired

Response · 200

Returns a application/pdf file.

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

List the cash registers of the till. A company with none gets its first one here

GET/v1/pos/registers

List the cash registers of the till. A company with none gets its first one here

MCP tool: list-pos-registers

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"pos_register"required
idstringrequired
namestringrequired
codestringrequired
warehouseIdnull | stringrequired
openingFloatHalerintegerrequired
isActivebooleanrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/pos/registers
curl https://api.damedoklad.cz/v1/pos/registers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Add a cash register, with its own warehouse, quick keys, and day closures

POST/v1/pos/registers

Add a cash register, with its own warehouse, quick keys, and day closures

MCP tool: create-pos-register

Request body

namestringrequiredmax 120 chars
codestringrequiredmax 16 chars
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
openingFloatHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
isActiveboolean

Response · 201

idstringrequired
namestringrequired
codestringrequired
warehouseIdnull | stringrequired
openingFloatHalerintegerrequired
isActivebooleanrequired
POST/v1/pos/registers
curl -X POST https://api.damedoklad.cz/v1/pos/registers \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "code": "string"
}'

Change a cash register. The starting float only applies until its first closure

PATCH/v1/pos/registers/{id}

Change a cash register. The starting float only applies until its first closure

MCP tool: update-pos-register

Path parameters

idstringrequired

Request body

namestringmax 120 chars
codestringmax 16 chars
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
openingFloatHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
isActiveboolean

Response · 200

idstringrequired
namestringrequired
codestringrequired
warehouseIdnull | stringrequired
openingFloatHalerintegerrequired
isActivebooleanrequired
PATCH/v1/pos/registers/{id}
curl -X PATCH https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "code": "string",
  "warehouseId": "whs_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
}'

What the drawer should hold now: opening float, cash in and out since the last closure, card total

GET/v1/pos/registers/{id}/closure-preview

What the drawer should hold now: opening float, cash in and out since the last closure, card total

MCP tool: get-pos-closure-preview

Path parameters

idstringrequired

Response · 200

registerIdnull | stringrequired
openingCashHalerintegerrequired
cashSalesHalerintegerrequired
cashReturnsHalerintegerrequired
cardTotalHalerintegerrequired
expectedCashHalerintegerrequired
receiptCountintegerrequired
denominationsHalerinteger[]required
GET/v1/pos/registers/{id}/closure-preview
curl https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closure-preview \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Past day closures of a cash register

GET/v1/pos/registers/{id}/closures

Past day closures of a cash register

MCP tool: list-pos-closures

Path parameters

idstringrequired

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

dataobject[]required
object"pos_closure"required
idstringrequired
registerIdstringrequired
numberstringrequired
datestringrequireddate
openingCashHalerintegerrequired
cashSalesHalerintegerrequired
cashReturnsHalerintegerrequired
cardTotalHalerintegerrequired
receiptCountintegerrequired
expectedCashHalerintegerrequired
countedCashHalerintegerrequired
differenceHalerintegerrequired
withdrawnHalerintegerrequired
closingFloatHalerintegerrequired
denominationsobject[]required
valueHalerinteger | nullrequired
countintegerrequired
notestring | nullrequired
offlineNumbernull | string
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/pos/registers/{id}/closures
curl https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closures \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Close the till for the day: count the cash, post any difference, and start the next day from what stays in the drawer

POST/v1/pos/registers/{id}/closures

Close the till for the day: count the cash, post any difference, and start the next day from what stays in the drawer. Schodek posts MD 569 / D 211, přebytek MD 211 / D 668, cash taken out MD 261 / D 211. In daňová evidence the difference goes to the peněžní deník; a shortage is not deductible (§ 25 odst. 1 písm. n) ZDP). Send expectedCashHaler from the preview to be stopped if a sale happened since.

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

MCP tool: create-pos-closure

Path parameters

idstringrequired

Request body

datestringYYYY-MM-DD
Date as YYYY-MM-DD.
countedCashHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
denominationsobject[]
valueHalerintegerrequiredmax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
countintegerrequiredmin 0max 9007199254740991
withdrawnHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
expectedCashHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
notestring | null
clientClosureIdstringmin 8 charsmax 64 chars
ID of the client closure.
offlineobject
soldAtstringrequireddate-time
numberstringrequiredmax 40 chars
listPricesobject[]
itemIdstringrequired
ID of the item. Find it with list-items.
priceHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
quantitynumberrequired

Response · 201

idstringrequired
registerIdstringrequired
numberstringrequired
datestringrequireddate
openingCashHalerintegerrequired
cashSalesHalerintegerrequired
cashReturnsHalerintegerrequired
cardTotalHalerintegerrequired
receiptCountintegerrequired
expectedCashHalerintegerrequired
countedCashHalerintegerrequired
differenceHalerintegerrequired
withdrawnHalerintegerrequired
closingFloatHalerintegerrequired
denominationsobject[]required
valueHalerinteger | nullrequired
countintegerrequired
notestring | nullrequired
offlineNumbernull | string
POST/v1/pos/registers/{id}/closures
curl -X POST https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/closures \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30",
  "countedCashHaler": 1210000,
  "denominations": [
    {
      "valueHaler": 1210000,
      "count": 0
    }
  ]
}'

What the local bridge should drive for this till: printer, customer display, scale and payment terminal. Nothing here reaches a device by itself

GET/v1/pos/registers/{id}/hardware

What the local bridge should drive for this till: printer, customer display, scale and payment terminal. Nothing here reaches a device by itself

MCP tool: get-pos-hardware

Path parameters

idstringrequired

Response · 200

registerIdstringrequired
devicesobjectrequired
printerobject
protocolstringrequired
connectionobjectrequired
hostnull | stringrequired
portinteger | nullrequired
typestringrequired
terminalobject
protocolstringrequired
connectionobjectrequired
hostnull | stringrequired
portinteger | nullrequired
typestringrequired
currencyCodestringrequired
updatedAtnull | stringrequireddate-time
GET/v1/pos/registers/{id}/hardware
curl https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/hardware \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Save the hardware profile of a till. Only open protocols: ESC/POS, CD5220, MT-SICS, NCI and ZVT. None has met a real device

PUT/v1/pos/registers/{id}/hardware

Save the hardware profile of a till. Only open protocols: ESC/POS, CD5220, MT-SICS, NCI and ZVT. None has met a real device

MCP tool: put-pos-hardware

Path parameters

idstringrequired

Request body

printerobject | null
protocol"escpos"required
connectionobjectrequired
type"tcp"required
hoststringrequiredmax 120 chars
portintegerrequiredmin 1max 65535
tlsboolean
enabledboolean
columnsintegermin 20max 64
diacriticsboolean
drawerboolean
displayobject | null
protocol"cd5220" | "escpos"required
connectionobjectrequired
type"tcp"required
hoststringrequiredmax 120 chars
portintegerrequiredmin 1max 65535
tlsboolean
enabledboolean
columnsintegermin 10max 40
scaleobject | null
protocol"mt-sics" | "nci"required
connectionobjectrequired
type"tcp"required
hoststringrequiredmax 120 chars
portintegerrequiredmin 1max 65535
tlsboolean
enabledboolean
terminalobject | null
protocol"zvt" | "gpe" | "comgate" | "dotypay"required
connectionobjectrequired
type"tcp"required
hoststringrequiredmax 120 chars
portintegerrequiredmin 1max 65535
tlsboolean
enabledboolean
currencyCodestring
timeoutSecondsintegermin 10max 300
ecrIdstring | ""
ID of the ecr.
poiIdstringmax 40 chars
ID of the poi.
saleIdstringmax 40 chars
ID of the sale.

Response · 200

registerIdstringrequired
devicesobjectrequired
printerobject
protocolstringrequired
connectionobjectrequired
hostnull | stringrequired
portinteger | nullrequired
typestringrequired
terminalobject
protocolstringrequired
connectionobjectrequired
hostnull | stringrequired
portinteger | nullrequired
typestringrequired
currencyCodestringrequired
updatedAtnull | stringrequireddate-time
PUT/v1/pos/registers/{id}/hardware
curl -X PUT https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/hardware \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "printer": {
    "protocol": "escpos",
    "connection": {
      "type": "tcp",
      "host": "string",
      "port": 1
    }
  },
  "display": {
    "protocol": "cd5220",
    "connection": {
      "type": "tcp",
      "host": "string",
      "port": 1
    }
  },
  "scale": {
    "protocol": "mt-sics",
    "connection": {
      "type": "tcp",
      "host": "string",
      "port": 1
    }
  }
}'

The favourite items on the quick keys of a cash register

GET/v1/pos/registers/{id}/quick-keys

The favourite items on the quick keys of a cash register

MCP tool: get-pos-quick-keys

Path parameters

idstringrequired

Response · 200

registerIdstringrequired
dataobject[]required
object"item"required
idstringrequired
skustringrequired
namestringrequired
eannull | stringrequired
groupIdnull | stringrequired
unitstringrequired
vatRateintegerrequired
typestringrequired
trackingstringrequired
tracksExpirybooleanrequired
valuationstringrequired
purchasePriceHalerintegerrequired
salePriceHalerintegerrequired
supplierIdnull | stringrequired
minStocknull | numberrequired
maxStockinteger | nullrequired
allowNegativeboolean | nullrequired
isActivebooleanrequired
notestring | nullrequired
weightKgnull | numberrequired
gpsrIdnull | stringrequired
recyclingFeeIdnull | stringrequired
recyclingCoefficientnull | numberrequired
customFieldsobjectrequired
barvastring
zimnistring
prumerinteger
zarukastringdate
vyrobcestring
parentIdnull | stringrequired
attributesobjectrequired
Barvastring
Velikoststring
isKitbooleanrequired
portableBatteryboolean
scannedUnitstring
scannedFactorinteger
GET/v1/pos/registers/{id}/quick-keys
curl https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/quick-keys \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Set the favourite items on the quick keys of a cash register, in order

PUT/v1/pos/registers/{id}/quick-keys

Set the favourite items on the quick keys of a cash register, in order

MCP tool: put-pos-quick-keys

Path parameters

idstringrequired

Request body

itemIdsstring[]required

Response · 200

registerIdstringrequired
dataobject[]required
object"item"required
idstringrequired
skustringrequired
namestringrequired
eannull | stringrequired
groupIdnull | stringrequired
unitstringrequired
vatRateintegerrequired
typestringrequired
trackingstringrequired
tracksExpirybooleanrequired
valuationstringrequired
purchasePriceHalerintegerrequired
salePriceHalerintegerrequired
supplierIdnull | stringrequired
minStocknull | numberrequired
maxStockinteger | nullrequired
allowNegativeboolean | nullrequired
isActivebooleanrequired
notestring | nullrequired
weightKgnull | numberrequired
gpsrIdnull | stringrequired
recyclingFeeIdnull | stringrequired
recyclingCoefficientnull | numberrequired
customFieldsobjectrequired
barvastring
zimnistring
prumerinteger
zarukastringdate
vyrobcestring
parentIdnull | stringrequired
attributesobjectrequired
Barvastring
Velikoststring
isKitbooleanrequired
portableBatteryboolean
scannedUnitstring
scannedFactorinteger
PUT/v1/pos/registers/{id}/quick-keys
curl -X PUT https://api.damedoklad.cz/v1/pos/registers/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/quick-keys \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "itemIds": [
    "itm_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'

Numbers missing from a till device's own series (OFF-XXXX-NNNNNN) a day after a later number arrived: documents that may be on a lost or broken device. Enter such a sale afterwards from the receipt copy with POST /sales/pos-sales and offline.number set to the missing number

GET/v1/pos/series-gaps

Numbers missing from a till device's own series (OFF-XXXX-NNNNNN) a day after a later number arrived: documents that may be on a lost or broken device. Enter such a sale afterwards from the receipt copy with POST /sales/pos-sales and offline.number set to the missing number

MCP tool: list-pos-series-gaps

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"pos_series_gap"required
deviceCodenull | stringrequired
countintegerrequired
firstMissingstringrequired
lastMissingstringrequired
missingstring[]required
afternull | objectrequired
numbernull | stringrequired
soldAtnull | stringrequireddate-time
beforenull | objectrequired
numbernull | stringrequired
soldAtnull | stringrequireddate-time
arrivedAtstringrequireddate-time
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/pos/series-gaps
curl https://api.damedoklad.cz/v1/pos/series-gaps \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Pay back all or part of a received advance. Whatever part was taxed gets a corrective tax document (§ 42 ZDPH); books and cash book are posted

POST/v1/proformas/{id}/refund

Pay back all or part of a received advance. Whatever part was taxed gets a corrective tax document (§ 42 ZDPH); books and cash book are posted. amountHaler defaults to everything paid. Refused once the advance has been settled into an invoice: correct that invoice with a credit note.

MCP tool: refund-proforma

Path parameters

idstringrequired

Request body

amountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
refundedOnstringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
method"transfer" | "cash" | "card" | "other"
reasonstringrequiredmax 240 chars
notestring | null
registerIdstring
ID of the register.
bankAccountIdstring
ID of the bank account. Find it with list-bank-accounts.
moneyAmountHalerintegermax 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
allowNegativeboolean

Response · 201

idstringrequired
numbernull | stringrequired
variableSymbolnull | stringrequired
kindstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
totalHalerintegerrequired
paidHalerintegerrequired
statusstringrequired
overduebooleanrequired
fileIdnull | stringrequired
customFieldsobject
vatModestring
exchangeRateinteger
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
seriesIdnull | string
currencystring
ourAccountNumbernull | string
ourBankCodenull | string
ourIbannull | string
paymentMethodstring
languagestring
notePublicstring | null
noteInternalstring | null
netHalerinteger
vatHalerinteger
contactIconull | string
contactDicnull | string
contactVatPayerTypenull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
shipToNamestring | null
shipToStreetstring | null
shipToCitystring | null
shipToPostalCodestring | null
shipToCountrystring | null
contactEmailnull | string
sellerNamenull | string
linesobject[]
object"proforma_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumberstring | nullrequired
lineKindstringrequired
sourceIdstring | nullrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
lotsany[]required
orderLineIdnull | stringrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
vatLinesobject[]
object"invoice_vat_line"required
idstringrequired
vatRatenumberrequired
netHalerintegerrequired
vatHalerintegerrequired
paymentsobject[]
object"proforma_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
taxDocumentsobject[]
object"advance_tax_document"required
idstringrequired
numbernull | stringrequired
statusstringrequired
issueDatenull | stringrequireddate
netHalerintegerrequired
vatHalerinteger | nullrequired
totalHalerinteger | nullrequired
invoiceIdnull | stringrequired
postingobject
regimestringrequired
eventstringrequired
skippedboolean
journalLinesobject[]
accountnull | stringrequired
sidestringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
balancedboolean
cashJournalobject[]
accountnull | stringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
receivablesBookany[]
payablesBookany[]
assetany[]
carrierIdstring | null
bankMovementobject
idstringrequired
bankAccountIdstringrequired
refundobject
amountHalerinteger | nullrequired
paymentIdnull | stringrequired
correctionIdnull | stringrequired
correctionNumbernull | stringrequired
POST/v1/proformas/{id}/refund
curl -X POST https://api.damedoklad.cz/v1/proformas/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/refund \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "refundedOn": "2026-10-30",
  "reason": "string"
}'

List retentions (pozastávky) on issued and received invoices, with what is still open and when it falls due

GET/v1/retentions

List retentions (pozastávky) on issued and received invoices, with what is still open and when it falls due

MCP tool: list-document-retentions

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.
kind"invoice" | "received_invoice"
documentIdstring
ID of the document.
contactIdstring
ID of the contact. Find it with list-contacts.
status"open" | "paid" | "cancelled"

Response · 200

dataobject[]required
object"document_retention"required
idstringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
currencynull | stringrequired
modestringrequired
percentinteger | nullrequired
basestringrequired
amountHalerintegerrequired
openHalerintegerrequired
dueDatestringrequireddate
notenull | stringrequired
longTermbooleanrequired
statusstringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/retentions
curl https://api.damedoklad.cz/v1/retentions \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Hold back part of an invoice as a retention, by percent or amount, with its own later due date. VAT and revenue stay whole

POST/v1/retentions

Hold back part of an invoice as a retention, by percent or amount, with its own later due date. VAT and revenue stay whole. Set it before issuing to have it printed. A PDF already issued is a tax document and is not rewritten: getRetentionNotice prints a notice for it, and e-mailing the invoice adds that notice. The payment QR code asks only for what is due. Several tranches are allowed.

MCP tool: create-document-retention

Request body

kind"invoice" | "received_invoice"required
documentIdstringrequired
ID of the document.
mode"percent" | "amount"required
percentnumbermax 100
Retained percent, with mode percent.
base"total" | "net"
What the percent is of: the document total (default) or the amount without VAT.
amountHalerintegermax 9007199254740991
Retained amount in the document currency, with mode amount.
dueDatestringrequiredYYYY-MM-DD
When the retained part falls due. Later than the due date of the document.
notestring | null

Response · 201

idstringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
currencynull | stringrequired
modestringrequired
percentinteger | nullrequired
basestringrequired
amountHalerintegerrequired
openHalerintegerrequired
dueDatestringrequireddate
notenull | stringrequired
longTermbooleanrequired
statusstringrequired
POST/v1/retentions
curl -X POST https://api.damedoklad.cz/v1/retentions \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "invoice",
  "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "mode": "percent",
  "dueDate": "2026-10-30"
}'

Change a retention: its amount, due date, or note. A long-term one must be moved back before its amount changes

PATCH/v1/retentions/{id}

Change a retention: its amount, due date, or note. A long-term one must be moved back before its amount changes

MCP tool: update-document-retention

Path parameters

idstringrequired

Request body

mode"percent" | "amount"
percentnumbermax 100
Retained percent, with mode percent.
base"total" | "net"
What the percent is of: the document total (default) or the amount without VAT.
amountHalerintegermax 9007199254740991
Retained amount in the document currency, with mode amount.
dueDatestringYYYY-MM-DD
When the retained part falls due. Later than the due date of the document.
notestring | null

Response · 200

idstringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
currencynull | stringrequired
modestringrequired
percentinteger | nullrequired
basestringrequired
amountHalerintegerrequired
openHalerintegerrequired
dueDatestringrequireddate
notenull | stringrequired
longTermbooleanrequired
statusstringrequired
PATCH/v1/retentions/{id}
curl -X PATCH https://api.damedoklad.cz/v1/retentions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "percent",
  "percent": 1,
  "base": "total"
}'

Cancel a retention, so the whole amount falls due with the document. A long-term one moves back with today as its date

DELETE/v1/retentions/{id}

Cancel a retention, so the whole amount falls due with the document. A long-term one moves back with today as its date

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

MCP tool: delete-document-retention

Path parameters

idstringrequired

Response · 200

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

Move a retention to the long-term analytic account (311900 or 321900) with one correcting entry, or back

POST/v1/retentions/{id}/classify

Move a retention to the long-term analytic account (311900 or 321900) with one correcting entry, or back. Long-term means due more than one year after the balance sheet date (vyhláška 500/2002 Sb. § 10, § 17). Double-entry books only. In a foreign currency it moves at the carrying value of the document.

MCP tool: classify-document-retention

Path parameters

idstringrequired

Request body

longTermbooleanrequired
true moves the retained amount to the long-term analytic account; false moves it back.
datestringrequiredYYYY-MM-DD
The date of the correcting entry, usually the balance sheet date.

Response · 200

idstringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
currencynull | stringrequired
modestringrequired
percentinteger | nullrequired
basestringrequired
amountHalerintegerrequired
openHalerintegerrequired
dueDatestringrequireddate
notenull | stringrequired
longTermbooleanrequired
statusstringrequired
POST/v1/retentions/{id}/classify
curl -X POST https://api.damedoklad.cz/v1/retentions/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/classify \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "longTerm": false,
  "date": "2026-10-30"
}'

Print a retention notice for a document already issued, with the payment due without the retention. The issued PDF itself stays as it is

GET/v1/retentions/notice

Print a retention notice for a document already issued, with the payment due without the retention. The issued PDF itself stays as it is

MCP tool: get-retention-notice

Query parameters

kind"invoice" | "received_invoice"required
documentIdstringrequired
ID of the document.
language"cs" | "en" | "de" | "fr"
Language of the notice. Without it, the language of the document, then the company default.

Response · 200

Returns a application/pdf file.

GET/v1/retentions/notice
curl https://api.damedoklad.cz/v1/retentions/notice \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor

Sort every open retention by a balance sheet date: what falls due over a year later moves to long-term, and what no longer does moves back. dryRun only says what would move

POST/v1/retentions/reclassify

Sort every open retention by a balance sheet date: what falls due over a year later moves to long-term, and what no longer does moves back. dryRun only says what would move. Long-term means due more than one year after the balance sheet date (vyhláška 500/2002 Sb. § 10, § 17). Double-entry books only. After a period ends this runs by itself, once. A tranche already part paid stays where it is and is named as part_paid.

MCP tool: reclassify-retentions

Request body

datestringrequiredYYYY-MM-DD
The balance sheet date.
dryRunboolean
Say what would move and post nothing.

Response · 200

datestringrequireddate
dryRunbooleanrequired
movedintegerrequired
dataobject[]required
idstringrequired
kindstringrequired
documentIdnull | stringrequired
documentNumbernull | stringrequired
contactNamenull | stringrequired
currencynull | stringrequired
amountHalerinteger | nullrequired
dueDatenull | stringrequireddate
longTermbooleanrequired
movestringrequired
POST/v1/retentions/reclassify
curl -X POST https://api.damedoklad.cz/v1/retentions/reclassify \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "date": "2026-10-30"
}'

Which analytic accounts hold long-term retentions

GET/v1/retentions/settings

Which analytic accounts hold long-term retentions

MCP tool: get-retention-settings

Response · 200

receivableAccountstringrequired
payableAccountstringrequired
GET/v1/retentions/settings
curl https://api.damedoklad.cz/v1/retentions/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Choose the analytic accounts for long-term retentions, under 311 and 321. A tranche already moved stays where it is. An accountant should choose these

PUT/v1/retentions/settings

Choose the analytic accounts for long-term retentions, under 311 and 321. A tranche already moved stays where it is. An accountant should choose these

MCP tool: update-retention-settings

Request body

receivableAccountstring | null
Where a long-term retention on an issued invoice goes. Default 311900.
payableAccountstring | null
Where a long-term retention on a received invoice goes. Default 321900.

Response · 200

receivableAccountstringrequired
payableAccountstringrequired
PUT/v1/retentions/settings
curl -X PUT https://api.damedoklad.cz/v1/retentions/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "receivableAccount": "string",
  "payableAccount": "string"
}'

List the cost centers, activities, projects, posting templates, and accounts a document can use

GET/v1/sales/accounting-options

List the cost centers, activities, projects, posting templates, and accounts a document can use

MCP tool: get-sales-accounting-options

Response · 200

centersobject[]required
idstringrequired
kindstringrequired
codenull | stringrequired
namenull | stringrequired
activitiesany[]required
projectsobject[]required
idstringrequired
kindstringrequired
codenull | stringrequired
namenull | stringrequired
templatesobject[]required
idstringrequired
codenull | stringrequired
namenull | stringrequired
documentTypenull | stringrequired
debitAccountstringrequired
creditAccountnull | stringrequired
accountsobject[]required
numbernull | stringrequired
namenull | stringrequired
nameEnnull | stringrequired
typestringrequired
GET/v1/sales/accounting-options
curl https://api.damedoklad.cz/v1/sales/accounting-options \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

List the e-mails sent for a document

GET/v1/sales/doc/{kind}/{id}/emails

List the e-mails sent for a document

MCP tool: list-sales-document-emails

Path parameters

kindstringrequired
idstringrequired

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"sales_email"required
idstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
tostringrequired
subjectnull | stringrequired
statusstringrequired
errornull | stringrequired
attachmentsstring[]required
sentAtnull | stringdate-time
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/doc/{kind}/{id}/emails
curl https://api.damedoklad.cz/v1/sales/doc/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/emails \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Export an issued document as ISDOC 6.0.2 XML

GET/v1/sales/doc/{kind}/{id}/isdoc

Export an issued document as ISDOC 6.0.2 XML

MCP tool: export-sales-document-isdoc

Path parameters

kindstringrequired
idstringrequired

Response · 200

Returns a application/xml file.

GET/v1/sales/doc/{kind}/{id}/isdoc
curl https://api.damedoklad.cz/v1/sales/doc/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/isdoc \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -o soubor

Download the PDF of any issued sales document

GET/v1/sales/doc/{kind}/{id}/pdf

Download the PDF of any issued sales document

MCP tool: download-sales-document-pdf

Path parameters

kindstringrequired
idstringrequired

Response · 200

Returns a application/pdf file.

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

E-mail an issued document to the customer with its PDF and ISDOC attached and a public payment link

POST/v1/sales/doc/{kind}/{id}/send

E-mail an issued document to the customer with its PDF and ISDOC attached and a public payment link. Defaults to the contact e-mail and the workspace template for the document type. The attempt is kept in the sent history.

MCP tool: send-sales-document

Path parameters

kindstringrequired
idstringrequired

Request body

tostringemail
Date as YYYY-MM-DD.
subjectstringmax 300 chars
bodystringmax 10000 chars
attachPdfboolean
attachIsdocboolean

Response · 200

idstringrequired
documentKindnull | stringrequired
documentIdnull | stringrequired
tostringrequired
subjectnull | stringrequired
statusstringrequired
errornull | stringrequired
attachmentsstring[]required
sentAtnull | stringdate-time
POST/v1/sales/doc/{kind}/{id}/send
curl -X POST https://api.damedoklad.cz/v1/sales/doc/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/send \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "2026-10-30",
  "subject": "string",
  "body": "string"
}'

List quotes, RFQs, orders, sales receipts, debit notes, other receivables or payables, by kind

GET/v1/sales/documents

List quotes, RFQs, orders, sales receipts, debit notes, other receivables or payables, by kind

MCP tool: list-sales-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.
kind"quote" | "rfq" | "order_received" | "order_issued" | "pos_receipt" | "debit_note" | "other_receivable" | "other_payable" | "advance_tax_document"required
statusstringmax 32 chars
contactIdstring
ID of the contact. Find it with list-contacts.
customFieldKeystring
Only records with this custom field. Alone: it has any value. With customFieldValue: exactly that value, ignoring case.
customFieldValuestringmax 2000 chars

Response · 200

dataobject[]required
object"sales_document"required
idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/documents
curl https://api.damedoklad.cz/v1/sales/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Create a quote, RFQ, order, sales receipt, debit note, other receivable or payable; set issue to number it now

POST/v1/sales/documents

Create a quote, RFQ, order, sales receipt, debit note, other receivable or payable; set issue to number it now

MCP tool: create-sales-document

Request body

kind"quote" | "rfq" | "order_received" | "order_issued" | "pos_receipt" | "debit_note" | "other_receivable" | "other_payable"required
issueboolean
clientSaleIdstringmin 8 charsmax 64 chars
ID of the client sale.
offlineobject
soldAtstringrequireddate-time
numberstringrequiredmax 40 chars
listPricesobject[]
itemIdstringrequired
ID of the item. Find it with list-items.
priceHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
quantitynumberrequired
carrierIdstring | null
Who carries the goods. Issuing a received order prepares its shipment.
contactIdstring
ID of the contact. Find it with list-contacts.
contactNamestringmax 160 chars
contactIcostringmax 16 chars
Czech company number (IČO), 8 digits.
contactDicstringmax 16 chars
VAT number (DIČ), for example CZ12345678.
seriesIdstring
ID of the series. Find it with list-series.
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
taxPointDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
dueDatestring | null
Date as YYYY-MM-DD.
validUntilstring | null
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
exchangeRatenumber
vatMode"eu_registration" | "eu_sme" | "group_internal" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel" | "domestic" | "reverse_charge" | "eu_goods" | "eu_services" | "third_country_goods" | "third_country_services" | "oss" | "eu_triangular" | "eu_new_vehicle" | "exempt" | "none"
templateIdstring | null
ID of the template.
centerIdstring | null
ID of the center.
activityIdstring | null
ID of the activity. Find it with list-activity.
projectIdstring | null
ID of the project.
paymentMethod"transfer" | "cash" | "card" | "cod" | "proforma"
roundingMode"auto" | "crown" | "none"
pricesIncludeVatboolean
language"cs" | "en" | "sk" | "de" | "fr" | "pl"
notePublicstring | null
noteInternalstring | null
reasonstring | null
externalNumberstring | null
originalKind"invoice" | "received_invoice"
originalIdstring
ID of the original.
linesobject[]required
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
exemptPercentnumbermin 0max 100
purchaseLineIdstring | null
ID of the purchase line.
descriptionstringmax 240 chars
quantitynumberrequired
unitstringmax 16 chars
unitPriceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
vatRatenumbermin 0max 30
itemIdstring | null
ID of the item. Find it with list-items.
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]
recyclingFeeIdstring | null
A fee from the list. null means no fee on this line, whatever the item says
recyclingPerUnitHalerintegermin 0max 9007199254740991
The amount per fee unit: with recyclingFeeId it replaces the rate of the fee on this line, without it the line carries a typed fee
recyclingTextstringmax 120 chars
recyclingUnit"ks" | "kg"
The unit of a typed fee
recyclingCoefficientnumbermin 0max 1000000
How many times the fee applies to one unit of the line

Response · 201

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents
curl -X POST https://api.damedoklad.cz/v1/sales/documents \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "kind": "quote",
  "lines": [
    {
      "quantity": 1
    }
  ]
}'

Get a sales document with lines, payments, fulfilment, and links

GET/v1/sales/documents/{id}

Get a sales document with lines, payments, fulfilment, and links

MCP tool: get-sales-document

Path parameters

idstringrequired

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
GET/v1/sales/documents/{id}
curl https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Edit a draft; after issue only notes and dates can change

PATCH/v1/sales/documents/{id}

Edit a draft; after issue only notes and dates can change

MCP tool: update-sales-document

Path parameters

idstringrequired

Request body

carrierIdstring | null
Who carries the goods. Issuing a received order prepares its shipment.
contactIdstring
ID of the contact. Find it with list-contacts.
contactNamestringmax 160 chars
contactIcostringmax 16 chars
Czech company number (IČO), 8 digits.
contactDicstringmax 16 chars
VAT number (DIČ), for example CZ12345678.
seriesIdstring
ID of the series. Find it with list-series.
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
taxPointDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
dueDatestring | null
Date as YYYY-MM-DD.
validUntilstring | null
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
exchangeRatenumber
vatMode"eu_registration" | "eu_sme" | "group_internal" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel" | "domestic" | "reverse_charge" | "eu_goods" | "eu_services" | "third_country_goods" | "third_country_services" | "oss" | "eu_triangular" | "eu_new_vehicle" | "exempt" | "none"
templateIdstring | null
ID of the template.
centerIdstring | null
ID of the center.
activityIdstring | null
ID of the activity. Find it with list-activity.
projectIdstring | null
ID of the project.
paymentMethod"transfer" | "cash" | "card" | "cod" | "proforma"
roundingMode"auto" | "crown" | "none"
pricesIncludeVatboolean
language"cs" | "en" | "sk" | "de" | "fr" | "pl"
notePublicstring | null
noteInternalstring | null
reasonstring | null
externalNumberstring | null
originalKind"invoice" | "received_invoice"
originalIdstring
ID of the original.
linesobject[]
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
exemptPercentnumbermin 0max 100
purchaseLineIdstring | null
ID of the purchase line.
descriptionstringmax 240 chars
quantitynumberrequired
unitstringmax 16 chars
unitPriceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
vatRatenumbermin 0max 30
itemIdstring | null
ID of the item. Find it with list-items.
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]
recyclingFeeIdstring | null
A fee from the list. null means no fee on this line, whatever the item says
recyclingPerUnitHalerintegermin 0max 9007199254740991
The amount per fee unit: with recyclingFeeId it replaces the rate of the fee on this line, without it the line carries a typed fee
recyclingTextstringmax 120 chars
recyclingUnit"ks" | "kg"
The unit of a typed fee
recyclingCoefficientnumbermin 0max 1000000
How many times the fee applies to one unit of the line

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
PATCH/v1/sales/documents/{id}
curl -X PATCH https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "carrierId": "gcr_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "contactName": "Pekárna U Lípy s.r.o."
}'

Delete a draft sales document

DELETE/v1/sales/documents/{id}

Delete a draft sales document

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

MCP tool: delete-sales-document-draft

Path parameters

idstringrequired

Response · 200

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

Cancel a quote, RFQ, or order and release any stock reservation

POST/v1/sales/documents/{id}/cancel

Cancel a quote, RFQ, or order and release any stock reservation

MCP tool: cancel-sales-document

Path parameters

idstringrequired

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/cancel
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/cancel \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Turn a document into the next one: quote to order or invoice, RFQ to order, order to invoice, delivery note, or receipt

POST/v1/sales/documents/{id}/convert

Turn a document into the next one: quote to order or invoice, RFQ to order, order to invoice, delivery note, or receipt. Pass lines with quantities for a partial conversion; otherwise everything still open is taken. Orders track what is delivered and invoiced.

MCP tool: convert-sales-document

Path parameters

idstringrequired

Request body

target"order_received" | "order_issued" | "invoice" | "proforma" | "delivery_note" | "received_invoice" | "receipt"required
issueboolean
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
taxPointDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
supplierDocumentNumberstringmax 64 chars
linesobject[]
lineIdstringrequired
ID of the line.
quantitynumberrequired
warehouseIdstring
ID of the warehouse. Find it with list-warehouses.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]
warehouseIdstring
ID of the warehouse. Find it with list-warehouses.
exchangeRatenumber
landedCostsobject[]
labelstringrequiredmax 120 chars
amountHalerintegerrequiredmin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
method"value" | "weight"

Response · 201

targetstringrequired
createdobjectrequired
customFieldsobject
vatModestring
exchangeRateinteger | null
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
object"delivery_note" | "invoice" | "proforma" | "received_invoice" | "sales_document" | "stock_document"required
idnull | stringrequired
numbernull | string
variableSymbolnull | string
contactIdnull | string
contactNamenull | string
issueDatenull | stringdate
dueDatestring | null
currencynull | string
totalHalerinteger | null
paidHalerinteger
statusstring
overdueboolean
fileIdnull | string
seriesIdnull | string
constantSymbolstring | null
taxPointDatenull | stringdate
paymentMethodstring
languagenull | string
notePublicstring | null
noteInternalstring | null
ourAccountNumbernull | string
ourBankCodenull | string
ourIbannull | string
sellerNamenull | string
sellerIconull | string
sellerDicnull | string
reminderOnDueboolean
reminderWeekAfterboolean
reminder14DaysAfterboolean
reminderMonthAfterboolean
netHalerinteger
vatHalerinteger | null
roundingHalerinteger
recurringIdstring | null
stornoOfIdstring | null
contactIconull | string
contactDicnull | string
contactVatPayerTypenull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
shipToNamestring | null
shipToStreetstring | null
shipToCitystring | null
shipToPostalCodestring | null
shipToCountrystring | null
contactEmailnull | string
linesobject[]
object"delivery_note_line" | "invoice_line" | "proforma_line" | "received_invoice_line" | "sales_document_line"required
idstringrequired
descriptionnull | stringrequired
quantityintegerrequired
unitnull | stringrequired
unitPriceHalerinteger | nullrequired
vatRateinteger
netHalerinteger
vatHalerinteger | null
totalHalerinteger | null
accountNumberstring | null
lineKindstring
sourceIdstring | null
itemIdnull | stringrequired
warehouseIdnull | stringrequired
lotsany[]required
orderLineIdnull | stringrequired
fulfilledQuantityinteger
invoicedQuantityinteger
reservedQuantityinteger
returnedQuantityinteger
originalLineIdstring | null
recyclingnull | object
textstringrequired
unitnull | stringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerinteger | nullrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
vatLinesobject[]
object"invoice_vat_line" | "received_invoice_vat_line"required
idstringrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerinteger | nullrequired
paymentsany[]
linksany[]
postingobject
regimestringrequired
eventstringrequired
journalLinesobject[]
accountnull | stringrequired
sidestringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
balancedboolean
cashJournalany[]
receivablesBookobject[]
documentIdnull | stringrequired
amountHalerinteger | nullrequired
statusstringrequired
payablesBookany[]
assetany[]
skippedboolean
retentionsany[]
totalValueHalerinteger
deliveryDatestringdate
kindstring
taxDocumentsany[]
supplierDocumentNumbernull | string
receivedOnstring | null
theirAccountNumberstring | null
theirBankCodestring | null
theirIbanstring | null
duplicateOfIdstring | null
settlementsany[]
supplierAdvancesany[]
validUntilstring | null
reservationStatusstring
externalNumberstring | null
reasonstring | null
sourceKindnull | string
sourceIdnull | string
originalKindstring | null
originalIdstring | null
originalNumberstring | null
consumedByIdstring | null
receivedHalerinteger | null
registerIdstring | null
closureIdstring | null
changeHalerany
Null in every recorded response.
carrierIdnull | string
sourceobjectrequired
object"sales_document"required
idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/convert
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/convert \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "order_received"
}'

Number a draft and post it to the books; a sales order also requests stock reservation

POST/v1/sales/documents/{id}/issue

Number a draft and post it to the books; a sales order also requests stock reservation. An other receivable or debit note over the contact credit limit is refused with credit_limit_exceeded; an owner or accountant can repeat it with overrideCreditLimit.

MCP tool: issue-sales-document

Path parameters

idstringrequired

Request body

overrideReservationsboolean
overrideDeliveryNotesboolean
deliveryNoteIdsstring[]
overrideCreditLimitboolean
Issue although the customer goes over Kredit max. Owner or accountant only, after the user has seen the warning.

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/issue
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/issue \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "overrideReservations": false,
  "overrideDeliveryNotes": false,
  "deliveryNoteIds": [
    "dln_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
  ]
}'

Record a payment of a debit note, other receivable, or other payable. Cash goes through a cash document of a register, a transfer through a bank account, and a later statement line takes it over

POST/v1/sales/documents/{id}/payments

Record a payment of a debit note, other receivable, or other payable. Cash goes through a cash document of a register, a transfer through a bank account, and a later statement line takes it over

MCP tool: add-sales-document-payment

Path parameters

idstringrequired

Request body

amountHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
paidOnstringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
method"transfer" | "cash" | "card" | "other"
inPersonboolean
paidAtstringdate-time
notestring | null
registerIdstring
ID of the register.
bankAccountIdstring
ID of the bank account. Find it with list-bank-accounts.
allowNegativeboolean

Response · 201

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/payments
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/payments \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "amountHaler": 1210000,
  "paidOn": "2026-10-30"
}'

Take goods back on a sales receipt, all or part: a negative receipt, money back, stock back at the cost it left with

POST/v1/sales/documents/{id}/pos-return

Take goods back on a sales receipt, all or part: a negative receipt, money back, stock back at the cost it left with. A serial-tracked line needs the serial numbers coming back unless the whole line returns.

MCP tool: create-pos-return

Path parameters

idstringrequired

Request body

paymentMethod"cash" | "card"
reasonstring | null
clientSaleIdstringmin 8 charsmax 64 chars
ID of the client sale.
offlineobject
soldAtstringrequireddate-time
numberstringrequiredmax 40 chars
listPricesobject[]
itemIdstringrequired
ID of the item. Find it with list-items.
priceHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
quantitynumberrequired
backToVoucherboolean
linesobject[]required
lineIdstringrequired
ID of the line.
quantitynumberrequired
serialNumbersstring[]

Response · 201

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/pos-return
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/pos-return \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "lines": [
    {
      "lineId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
      "quantity": 1
    }
  ]
}'

Mark an issued quote as accepted or rejected

POST/v1/sales/documents/{id}/status

Mark an issued quote as accepted or rejected

MCP tool: set-sales-quote-status

Path parameters

idstringrequired

Request body

status"accepted" | "rejected"required

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/status
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/status \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "accepted"
}'

Reverse a posted sales document with a storno document

POST/v1/sales/documents/{id}/storno

Reverse a posted sales document with a storno document

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

MCP tool: storno-sales-document

Path parameters

idstringrequired

Response · 200

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/documents/{id}/storno
curl -X POST https://api.damedoklad.cz/v1/sales/documents/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/storno \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

List e-mail and reminder templates per document type and language

GET/v1/sales/email-templates

List e-mail and reminder templates per document type and language

MCP tool: list-sales-email-templates

Query parameters

limitintegermin 1max 500
offsetintegermin 0max 9007199254740991
searchstringmax 200 chars

Response · 200

dataobject[]required
object"sales_email_template"required
typestringrequired
languagestringrequired
subjectstringrequired
bodystringrequired
customizedbooleanrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/email-templates
curl https://api.damedoklad.cz/v1/sales/email-templates \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Replace an e-mail or reminder template

PUT/v1/sales/email-templates/{type}/{language}

Replace an e-mail or reminder template. Placeholders: {{number}}, {{companyName}}, {{contactName}}, {{amount}}, {{dueDate}}, {{variableSymbol}}, {{link}}; reminders also {{outstanding}}, {{interest}}, {{daysOverdue}}, {{newDueDate}}.

MCP tool: put-sales-email-template

Path parameters

typestringrequired
languagestringrequired

Request body

subjectstringrequiredmax 300 chars
bodystringrequiredmax 10000 chars

Response · 200

typestringrequired
languagestringrequired
subjectstringrequired
bodystringrequired
customizedbooleanrequired
PUT/v1/sales/email-templates/{type}/{language}
curl -X PUT https://api.damedoklad.cz/v1/sales/email-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "string",
  "body": "string"
}'

Go back to the default template

DELETE/v1/sales/email-templates/{type}/{language}

Go back to the default template

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

MCP tool: reset-sales-email-template

Path parameters

typestringrequired
languagestringrequired

Response · 200

typestringrequired
languagestringrequired
subjectstringrequired
bodystringrequired
customizedbooleanrequired
DELETE/v1/sales/email-templates/{type}/{language}
curl -X DELETE https://api.damedoklad.cz/v1/sales/email-templates/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Import an ISDOC file as a received invoice draft and match or create the supplier contact

POST/v1/sales/import-isdoc

Import an ISDOC file as a received invoice draft and match or create the supplier contact

MCP tool: import-received-invoice-isdoc

Request body

fileBase64string
File content encoded as base64.
xmlstring
confirmDuplicateboolean

Response · 201

idstringrequired
numbernull | stringrequired
supplierDocumentNumbernull | stringrequired
variableSymbolnull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
statusstringrequired
overduebooleanrequired
fileIdnull | stringrequired
customFieldsobject
vatModestring
exchangeRateinteger
templateIdnull | string
centerIdstring | null
activityIdstring | null
projectIdnull | string
seriesIdnull | string
constantSymbolstring | null
receivedOnnull | stringdate
taxPointDatestringdate
paymentMethodstring
theirAccountNumbernull | string
theirBankCodenull | string
theirIbannull | string
notePublicstring | null
noteInternalnull | string
netHalerinteger
vatHalerinteger
stornoOfIdnull | string
duplicateOfIdnull | string
contactIconull | string
contactDicnull | string
contactVatPayerTypenull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
shipToNamestring | null
shipToStreetstring | null
shipToCitystring | null
shipToPostalCodestring | null
shipToCountrystring | null
contactEmailnull | string
linesobject[]
object"received_invoice_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
lineKindstringrequired
sourceIdnull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdnull | stringrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdnull | stringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliinteger
perUnitHalerintegerrequired
coefficientMilliintegerrequired
typedboolean
vatLinesobject[]
object"received_invoice_vat_line"required
idstringrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
settlementsobject[]
object"received_invoice_settlement"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
supplierAdvancesobject[]
idstringrequired
numbernull | stringrequired
supplierDocumentNumbernull | stringrequired
postingobject
regimestringrequired
eventstringrequired
journalLinesobject[]
accountnull | stringrequired
sidestringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
balancedboolean
cashJournalobject[]
accountnull | stringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
receivablesBookany[]
payablesBookobject[]
documentIdnull | stringrequired
amountHalerinteger | nullrequired
statusstringrequired
assetany[]
retentionsany[]
duplicateobject
existingIdstringrequired
bankMovementobject
idstringrequired
bankAccountIdstringrequired
cashDocumentobject
idstringrequired
numbernull | stringrequired
warningsany[]required
importedobject
uuidstringrequired
documentTypeinteger | nullrequired
warningsstring[]required
POST/v1/sales/import-isdoc
curl -X POST https://api.damedoklad.cz/v1/sales/import-isdoc \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "fileBase64": "string",
  "xml": "string",
  "confirmDuplicate": false
}'

Import a supplier's zálohová faktura in ISDOC as a draft advance (a tax document for a payment, DocumentType 5, goes to its advance instead) and match or create the supplier contact. Nothing posts

POST/v1/sales/import-isdoc-advance

Import a supplier's zálohová faktura in ISDOC as a draft advance (a tax document for a payment, DocumentType 5, goes to its advance instead) and match or create the supplier contact. Nothing posts

MCP tool: import-supplier-advance-isdoc

Request body

fileBase64string
File content encoded as base64.
xmlstring
confirmDuplicateboolean

Response · 201

idstringrequired
numbernull | stringrequired
supplierDocumentNumbernull | stringrequired
variableSymbolnull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
statusstringrequired
overduebooleanrequired
customFieldsobject
stavba_zalohystring
vatModestring
exchangeRateinteger
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
seriesIdnull | string
constantSymbolstring | null
paymentMethodstring
theirAccountNumbernull | string
theirBankCodenull | string
theirIbanstring | null
notePublicstring | null
noteInternalnull | string
netHalerinteger
vatHalerinteger
taxedHalerinteger
advanceAccountstring
selfAssessableboolean
receivedInvoiceIdnull | string
contactIconull | string
contactDicnull | string
contactVatPayerTypenull | string
billToStreetstring | null
billToCitystring | null
billToPostalCodestring | null
billToCountrynull | string
shipToNamestring | null
shipToStreetstring | null
shipToCitystring | null
shipToPostalCodestring | null
shipToCountrystring | null
contactEmailnull | string
linesobject[]
object"supplier_advance_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumberstring | nullrequired
lineKindstringrequired
sourceIdstring | nullrequired
itemIdstring | nullrequired
warehouseIdstring | nullrequired
lotsany[]required
orderLineIdstring | nullrequired
vatLinesobject[]
object"supplier_advance_vat_line"required
idstringrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
paymentsobject[]
object"supplier_advance_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
exchangeRatenumberrequired
taxDocumentsobject[]
object"supplier_advance_tax_document"required
idstringrequired
supplierAdvanceIdstringrequired
numbernull | stringrequired
supplierDocumentNumbernull | stringrequired
contactNamenull | stringrequired
contactDicnull | stringrequired
statusstringrequired
issueDatestringrequireddate
taxPointDatestringrequireddate
receivedOnnull | stringrequireddate
currencystringrequired
exchangeRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
reasonnull | stringrequired
correctsNumbernull | stringrequired
selfAssessedbooleanrequired
paymentIdnull | stringrequired
receivedInvoiceIdnull | stringrequired
stornoOfIdnull | stringrequired
linesobject[]required
object"supplier_advance_tax_document_line"required
idstringrequired
descriptionstringrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
taxRecordsKindstring
bankMovementobject
idstringrequired
bankAccountIdstringrequired
refundobject
amountHalerinteger | nullrequired
paymentIdnull | stringrequired
correctionIdnull | stringrequired
correctionNumbernull | stringrequired
stornoCorrectionobject
reasonnull | stringrequired
datestringrequireddate
periodstringrequired
additionalReturnbooleanrequired
followUpStatementbooleanrequired
POST/v1/sales/import-isdoc-advance
curl -X POST https://api.damedoklad.cz/v1/sales/import-isdoc-advance \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "fileBase64": "string",
  "xml": "string",
  "confirmDuplicate": false
}'

Create an invoice for the late-payment interest on an overdue invoice, optionally with the 1 200 Kč recovery cost

POST/v1/sales/invoices/{id}/penalty-invoice

Create an invoice for the late-payment interest on an overdue invoice, optionally with the 1 200 Kč recovery cost

MCP tool: create-penalty-invoice

Path parameters

idstringrequired

Request body

toDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
ratePercentnumbermin 0max 100
includeRecoveryCostboolean
issueboolean
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
dueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.

Response · 201

idstringrequired
numbernull | stringrequired
variableSymbolnull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
statusstringrequired
overduebooleanrequired
fileIdnull | stringrequired
customFieldsobject
zakazka_zakaznikastring
pocetinteger
kampanstring
vatModestring
exchangeRatenumber
templateIdnull | string
centerIdnull | string
activityIdnull | string
projectIdnull | string
seriesIdnull | string
constantSymbolnull | string
taxPointDatestringdate
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
ourAccountNumbernull | string
ourBankCodenull | string
ourIbannull | string
sellerNamenull | string
sellerIconull | string
sellerDicnull | string
reminderOnDueboolean
reminderWeekAfterboolean
reminder14DaysAfterboolean
reminderMonthAfterboolean
netHalerinteger
vatHalerinteger
roundingHalerinteger
recurringIdnull | string
stornoOfIdnull | string
contactIconull | string
contactDicnull | string
contactVatPayerTypenull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
shipToNamestring | null
shipToStreetnull | string
shipToCitynull | string
shipToPostalCodenull | string
shipToCountrynull | string
contactEmailnull | string
linesobject[]
object"invoice_line"required
idstringrequired
descriptionstringrequired
quantitynumberrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRatenumberrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
lineKindstringrequired
sourceIdnull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
lotsobject[]required
itemIdnull | string
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdnull | stringrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdnull | stringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliinteger
perUnitHalerintegerrequired
coefficientMilliintegerrequired
typedboolean
vatLinesobject[]
object"invoice_vat_line"required
idstringrequired
vatRatenumberrequired
netHalerintegerrequired
vatHalerintegerrequired
paymentsobject[]
object"invoice_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
postingobject
regimestringrequired
eventstringrequired
journalLinesobject[]
accountnull | stringrequired
sidestringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
balancedboolean
cashJournalobject[]
accountnull | stringrequired
amountHalerinteger | nullrequired
documentIdnull | stringrequired
receivablesBookobject[]
documentIdnull | stringrequired
amountHalerinteger | nullrequired
statusstringrequired
payablesBookany[]
assetany[]
retentionsobject[]
idstringrequired
amountHalerinteger | nullrequired
dueDatenull | stringrequireddate
notestring | nullrequired
longTermbooleanrequired
carrierIdnull | string
creditWarningobject
levelstringrequired
exposureHalerintegerrequired
afterHalerintegerrequired
warnHalerinteger | nullrequired
blockHalerintegerrequired
availableHalerintegerrequired
originalany
bankMovementobject
idstringrequired
bankAccountIdstringrequired
cashDocumentobject
idstringrequired
numbernull | stringrequired
warningsany[]required
POST/v1/sales/invoices/{id}/penalty-invoice
curl -X POST https://api.damedoklad.cz/v1/sales/invoices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/penalty-invoice \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "toDate": "2026-10-30",
  "ratePercent": 0,
  "includeRecoveryCost": false
}'

Create a payment reminder for an overdue invoice, with a PDF, and optionally e-mail it

POST/v1/sales/invoices/{id}/reminders

Create a payment reminder for an overdue invoice, with a PDF, and optionally e-mail it

MCP tool: create-invoice-reminder

Path parameters

idstringrequired

Request body

levelintegermin 1max 3
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
newDueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
ratePercentnumbermin 0max 100
sendboolean
tostringemail
Date as YYYY-MM-DD.

Response · 201

idstringrequired
invoiceIdstringrequired
invoiceNumberstringrequired
contactNamenull | stringrequired
currencynull | stringrequired
levelintegerrequired
numbernull | stringrequired
issueDatestringrequireddate
newDueDatenull | stringrequireddate
daysOverdueintegerrequired
outstandingHalerintegerrequired
interestHalerintegerrequired
ratePercentnull | numberrequired
subjectstringrequired
bodystringrequired
sentAtnull | stringrequireddate-time
fileIdnull | stringrequired
POST/v1/sales/invoices/{id}/reminders
curl -X POST https://api.damedoklad.cz/v1/sales/invoices/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/reminders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "level": 1,
  "issueDate": "2026-10-30",
  "newDueDate": "2026-10-30"
}'

Calculate Czech statutory late-payment interest (ČNB repo rate on the first day of the half-year + 8 points)

GET/v1/sales/late-interest

Calculate Czech statutory late-payment interest (ČNB repo rate on the first day of the half-year + 8 points). Pass ratePercent for a contractual rate, or when the half-year is not in the verified repo table.

MCP tool: calculate-late-interest

Query parameters

amountHalerintegerrequiredmin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
dueDatestringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
toDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
ratePercentnumbermin 0max 100

Response · 200

knownbooleanrequired
delayStartstringrequireddate
ratePercentnull | numberrequired
statutorynull | objectrequired
repoRatenumberrequired
decidingDatestringrequireddate
ratePercentnull | numberrequired
daysintegerrequired
interestHalerintegerrequired
periodsobject[]required
fromstringrequireddate
tostringrequireddate
daysintegerrequired
principalHalerintegerrequired
interestHalerintegerrequired
outstandingHalerinteger
recoveryCostHalerintegerrequired
GET/v1/sales/late-interest
curl https://api.damedoklad.cz/v1/sales/late-interest \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

List unpaid invoices past their due date, with late interest and the next reminder level

GET/v1/sales/overdue

List unpaid invoices past their due date, with late interest and the next reminder level

MCP tool: list-overdue-invoices

Query parameters

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

Response · 200

dataobject[]required
object"overdue_invoice"required
idstringrequired
numbernull | stringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
contactEmailnull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
currencynull | stringrequired
totalHalerinteger | nullrequired
paidHalerintegerrequired
outstandingHalerintegerrequired
daysOverdueintegerrequired
interestHalerintegerrequired
ratePercentnull | numberrequired
rateKnownbooleanrequired
lastReminderLevelintegerrequired
nextReminderLevelintegerrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/overdue
curl https://api.damedoklad.cz/v1/sales/overdue \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

A return taken without a connection: the sale named by its id or by the till's own id for it, its lines by their place on the receipt

POST/v1/sales/pos-returns

A return taken without a connection: the sale named by its id or by the till's own id for it, its lines by their place on the receipt. The till sends this when the connection is back, after the sale it returns. Sending it again answers the first return.

MCP tool: create-offline-pos-return

Request body

originalIdstring
ID of the original.
originalClientSaleIdstringmin 8 charsmax 64 chars
ID of the original client sale.
paymentMethod"cash" | "card"
reasonstring | null
clientSaleIdstringrequiredmin 8 charsmax 64 chars
ID of the client sale.
offlineobjectrequired
soldAtstringrequireddate-time
numberstringrequiredmax 40 chars
listPricesobject[]
itemIdstringrequired
ID of the item. Find it with list-items.
priceHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
quantitynumberrequired
backToVoucherboolean
linesobject[]required
positionintegerrequiredmin 0max 9007199254740991
quantitynumberrequired
serialNumbersstring[]

Response · 201

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/pos-returns
curl -X POST https://api.damedoklad.cz/v1/sales/pos-returns \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "clientSaleId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "offline": {
    "soldAt": "2026-10-30",
    "number": "string"
  },
  "lines": [
    {
      "position": 0,
      "quantity": 1
    }
  ]
}'

Record a paid till sale: issues a sales receipt at once, posts to the cash desk or card clearing (261)

POST/v1/sales/pos-sales

Record a paid till sale: issues a sales receipt at once, posts to the cash desk or card clearing (261). Prices include VAT. Cash in CZK rounds to whole crowns. Pass receivedHaler to get the change back.

MCP tool: create-pos-sale

Request body

clientSaleIdstringmin 8 charsmax 64 chars
ID of the client sale.
offlineobject
soldAtstringrequireddate-time
numberstringrequiredmax 40 chars
listPricesobject[]
itemIdstringrequired
ID of the item. Find it with list-items.
priceHalerintegerrequiredmin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
quantitynumberrequired
registerIdstring
ID of the register.
paymentMethod"cash" | "card"required
cashRegisterIdstring
ID of the cash register. Find it with list-cash-registers.
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.
eetOwnSaleboolean
eetMandateIdstring
ID of the eet mandate. Find it with list-eet-mandates.
terminalPaymentobject
protocolstringrequiredmax 20 chars
terminalIdstring | null
ID of the terminal.
receiptNumberstring | null
traceNumberstring | null
authorisationstring | null
cardNamestring | null
approvedAtstring | null
vatMode"eu_registration" | "eu_sme" | "group_internal" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel" | "domestic" | "reverse_charge" | "eu_goods" | "eu_services" | "third_country_goods" | "third_country_services" | "oss" | "eu_triangular" | "eu_new_vehicle" | "exempt" | "none"
billToCountrystring2 chars
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
exchangeRatenumber
taxPointDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
receivedHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
contactIdstring
ID of the contact. Find it with list-contacts.
issueDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
seriesIdstring
ID of the series. Find it with list-series.
roundingMode"auto" | "crown" | "none"
linesobject[]required
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
exemptPercentnumbermin 0max 100
purchaseLineIdstring | null
ID of the purchase line.
descriptionstringmax 240 chars
quantitynumberrequired
unitstringmax 16 chars
unitPriceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
vatRatenumbermin 0max 30
itemIdstring | null
ID of the item. Find it with list-items.
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]

Response · 201

idstringrequired
kindstringrequired
numbernull | stringrequired
statusstringrequired
contactIdnull | stringrequired
contactNamenull | stringrequired
issueDatestringrequireddate
dueDatenull | stringrequireddate
validUntilnull | stringrequireddate
currencystringrequired
totalHalerintegerrequired
paidHalerintegerrequired
overduebooleanrequired
reservationStatusstringrequired
externalNumbernull | stringrequired
fileIdnull | stringrequired
customFieldsobject
kanalstring
seriesIdnull | string
variableSymbolnull | string
constantSymbolnull | string
contactIconull | string
contactDicnull | string
contactEmailnull | string
billToStreetnull | string
billToCitynull | string
billToPostalCodenull | string
billToCountrynull | string
taxPointDatenull | stringdate
exchangeRateinteger
vatModestring
templateIdstring | null
centerIdstring | null
activityIdstring | null
projectIdstring | null
paymentMethodstring
languagestring
notePublicnull | string
noteInternalnull | string
reasonnull | string
sourceKindnull | string
sourceIdnull | string
originalKindnull | string
originalIdnull | string
originalNumbernull | string
consumedByIdstring | null
stornoOfIdnull | string
netHalerinteger
vatHalerinteger
roundingHalerinteger
receivedHalerinteger | null
registerIdnull | string
closureIdstring | null
changeHalerinteger | null
linesobject[]
object"sales_document_line"required
idstringrequired
descriptionstringrequired
quantityintegerrequired
unitstringrequired
unitPriceHalerintegerrequired
vatRateintegerrequired
netHalerintegerrequired
vatHalerintegerrequired
totalHalerintegerrequired
accountNumbernull | stringrequired
itemIdnull | stringrequired
warehouseIdnull | stringrequired
fulfilledQuantitynumberrequired
invoicedQuantityintegerrequired
reservedQuantityintegerrequired
returnedQuantityintegerrequired
originalLineIdnull | stringrequired
lotsobject[]required
lotIdstring | nullrequired
codenull | stringrequired
quantityintegerrequired
expiryDatestring | nullrequired
orderLineIdstring | nullrequired
recyclingnull | object
textstringrequired
unitstringrequired
feeIdstringrequired
rateHalerintegerrequired
totalHalerintegerrequired
weightMilliintegerrequired
perUnitHalerintegerrequired
coefficientMilliintegerrequired
paymentsobject[]
object"sales_document_payment"required
idstringrequired
amountHalerintegerrequired
paidOnstringrequireddate
methodstringrequired
notenull | stringrequired
linksobject[]
object"document_link"required
idstringrequired
fromKindstringrequired
fromIdstringrequired
toKindstringrequired
toIdstringrequired
kindstringrequired
amountHalerinteger | null
carrierIdnull | string
bankMovementobject
idstringrequired
bankAccountIdstringrequired
POST/v1/sales/pos-sales
curl -X POST https://api.damedoklad.cz/v1/sales/pos-sales \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "paymentMethod": "cash",
  "lines": [
    {
      "quantity": 1
    }
  ]
}'

List recurring invoice schedules

GET/v1/sales/recurring

List recurring invoice schedules

MCP tool: list-recurring-invoices

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

dataobject[]required
object"sales_recurring"required
idstringrequired
namenull | stringrequired
contactIdnull | stringrequired
statusstringrequired
frequencystringrequired
intervalCountintegerrequired
startDatestringrequireddate
nextIssueDatenull | stringrequireddate
endDatenull | stringrequireddate
dueDaysintegerrequired
autoIssuebooleanrequired
autoSendbooleanrequired
currencynull | stringrequired
paymentMethodstringrequired
languagenull | stringrequired
vatModestringrequired
templateIdstring | nullrequired
centerIdstring | nullrequired
activityIdstring | nullrequired
projectIdstring | nullrequired
notePublicstring | nullrequired
linesobject[]required
unitnull | string
vatRateintegerrequired
quantityintegerrequired
descriptionnull | stringrequired
unitPriceHalerinteger | nullrequired
lastIssuedOnnull | stringrequireddate
lastErrornull | stringrequired
runsobject[]
object"sales_recurring_run"required
idstringrequired
runDatestringrequireddate
statusstringrequired
invoiceIdnull | stringrequired
errornull | stringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/recurring
curl https://api.damedoklad.cz/v1/sales/recurring \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Create a schedule that issues an invoice automatically, optionally e-mailing it

POST/v1/sales/recurring

Create a schedule that issues an invoice automatically, optionally e-mailing it

MCP tool: create-recurring-invoice

Request body

namestringrequiredmax 200 chars
contactIdstringrequired
ID of the contact. Find it with list-contacts.
frequency"monthly" | "quarterly" | "half_yearly" | "yearly"required
intervalCountintegermin 1max 24
startDatestringrequiredYYYY-MM-DD
Date as YYYY-MM-DD.
endDatestring | null
Date as YYYY-MM-DD.
dueDaysintegermin 0max 365
autoIssueboolean
autoSendboolean
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
paymentMethod"transfer" | "cash" | "card" | "cod" | "proforma"
language"cs" | "en" | "sk" | "de" | "fr" | "pl"
vatMode"eu_registration" | "eu_sme" | "group_internal" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel" | "domestic" | "reverse_charge" | "eu_goods" | "eu_services" | "third_country_goods" | "third_country_services" | "oss" | "eu_triangular" | "eu_new_vehicle" | "exempt" | "none"
templateIdstring | null
ID of the template.
centerIdstring | null
ID of the center.
activityIdstring | null
ID of the activity. Find it with list-activity.
projectIdstring | null
ID of the project.
notePublicstring | null
linesobject[]required
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
exemptPercentnumbermin 0max 100
purchaseLineIdstring | null
ID of the purchase line.
descriptionstringmax 240 chars
quantitynumberrequired
unitstringmax 16 chars
unitPriceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
vatRatenumbermin 0max 30
itemIdstring | null
ID of the item. Find it with list-items.
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]
recyclingFeeIdstring | null
A fee from the list. null means no fee on this line, whatever the item says
recyclingPerUnitHalerintegermin 0max 9007199254740991
The amount per fee unit: with recyclingFeeId it replaces the rate of the fee on this line, without it the line carries a typed fee
recyclingTextstringmax 120 chars
recyclingUnit"ks" | "kg"
The unit of a typed fee
recyclingCoefficientnumbermin 0max 1000000
How many times the fee applies to one unit of the line

Response · 201

idstringrequired
namenull | stringrequired
contactIdnull | stringrequired
statusstringrequired
frequencystringrequired
intervalCountintegerrequired
startDatestringrequireddate
nextIssueDatenull | stringrequireddate
endDatenull | stringrequireddate
dueDaysintegerrequired
autoIssuebooleanrequired
autoSendbooleanrequired
currencynull | stringrequired
paymentMethodstringrequired
languagenull | stringrequired
vatModestringrequired
templateIdstring | nullrequired
centerIdstring | nullrequired
activityIdstring | nullrequired
projectIdstring | nullrequired
notePublicstring | nullrequired
linesobject[]required
unitnull | string
vatRateintegerrequired
quantityintegerrequired
descriptionnull | stringrequired
unitPriceHalerinteger | nullrequired
lastIssuedOnnull | stringrequireddate
lastErrornull | stringrequired
runsobject[]
object"sales_recurring_run"required
idstringrequired
runDatestringrequireddate
statusstringrequired
invoiceIdnull | stringrequired
errornull | stringrequired
POST/v1/sales/recurring
curl -X POST https://api.damedoklad.cz/v1/sales/recurring \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "frequency": "monthly",
  "startDate": "2026-10-30",
  "lines": [
    {
      "quantity": 1
    }
  ]
}'

Get a recurring invoice schedule with its run history

GET/v1/sales/recurring/{id}

Get a recurring invoice schedule with its run history

MCP tool: get-recurring-invoice

Path parameters

idstringrequired

Response · 200

idstringrequired
namenull | stringrequired
contactIdnull | stringrequired
statusstringrequired
frequencystringrequired
intervalCountintegerrequired
startDatestringrequireddate
nextIssueDatenull | stringrequireddate
endDatenull | stringrequireddate
dueDaysintegerrequired
autoIssuebooleanrequired
autoSendbooleanrequired
currencynull | stringrequired
paymentMethodstringrequired
languagenull | stringrequired
vatModestringrequired
templateIdstring | nullrequired
centerIdstring | nullrequired
activityIdstring | nullrequired
projectIdstring | nullrequired
notePublicstring | nullrequired
linesobject[]required
unitnull | string
vatRateintegerrequired
quantityintegerrequired
descriptionnull | stringrequired
unitPriceHalerinteger | nullrequired
lastIssuedOnnull | stringrequireddate
lastErrornull | stringrequired
runsobject[]
object"sales_recurring_run"required
idstringrequired
runDatestringrequireddate
statusstringrequired
invoiceIdnull | stringrequired
errornull | stringrequired
GET/v1/sales/recurring/{id}
curl https://api.damedoklad.cz/v1/sales/recurring/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Change, pause, or resume a recurring invoice schedule

PATCH/v1/sales/recurring/{id}

Change, pause, or resume a recurring invoice schedule

MCP tool: update-recurring-invoice

Path parameters

idstringrequired

Request body

namestringmax 200 chars
contactIdstring
ID of the contact. Find it with list-contacts.
frequency"monthly" | "quarterly" | "half_yearly" | "yearly"
intervalCountintegermin 1max 24
startDatestringYYYY-MM-DD
Date as YYYY-MM-DD.
endDatestring | null
Date as YYYY-MM-DD.
dueDaysintegermin 0max 365
autoIssueboolean
autoSendboolean
currencystring3 chars
ISO 4217 currency code, for example CZK or EUR.
paymentMethod"transfer" | "cash" | "card" | "cod" | "proforma"
language"cs" | "en" | "sk" | "de" | "fr" | "pl"
vatMode"eu_registration" | "eu_sme" | "group_internal" | "margin_used_goods" | "margin_art" | "margin_collectibles" | "margin_travel" | "domestic" | "reverse_charge" | "eu_goods" | "eu_services" | "third_country_goods" | "third_country_services" | "oss" | "eu_triangular" | "eu_new_vehicle" | "exempt" | "none"
templateIdstring | null
ID of the template.
centerIdstring | null
ID of the center.
activityIdstring | null
ID of the activity. Find it with list-activity.
projectIdstring | null
ID of the project.
notePublicstring | null
linesobject[]
purchaseHalerintegermin 0max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
exemptPercentnumbermin 0max 100
purchaseLineIdstring | null
ID of the purchase line.
descriptionstringmax 240 chars
quantitynumberrequired
unitstringmax 16 chars
unitPriceHalerintegermin -9007199254740991max 9007199254740991
Integer amount in haléře: 100 = 1 Kč.
vatRatenumbermin 0max 30
itemIdstring | null
ID of the item. Find it with list-items.
warehouseIdstring | null
ID of the warehouse. Find it with list-warehouses.
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
lotsobject[]
itemIdstring
ID of the item. Find it with list-items.
lotIdstring
ID of the lot.
codestringmax 64 chars
quantitynumber
expiryDatestring | null
Date as YYYY-MM-DD.
serialNumbersstring[]
recyclingFeeIdstring | null
A fee from the list. null means no fee on this line, whatever the item says
recyclingPerUnitHalerintegermin 0max 9007199254740991
The amount per fee unit: with recyclingFeeId it replaces the rate of the fee on this line, without it the line carries a typed fee
recyclingTextstringmax 120 chars
recyclingUnit"ks" | "kg"
The unit of a typed fee
recyclingCoefficientnumbermin 0max 1000000
How many times the fee applies to one unit of the line
status"active" | "paused"

Response · 200

idstringrequired
namenull | stringrequired
contactIdnull | stringrequired
statusstringrequired
frequencystringrequired
intervalCountintegerrequired
startDatestringrequireddate
nextIssueDatenull | stringrequireddate
endDatenull | stringrequireddate
dueDaysintegerrequired
autoIssuebooleanrequired
autoSendbooleanrequired
currencynull | stringrequired
paymentMethodstringrequired
languagenull | stringrequired
vatModestringrequired
templateIdstring | nullrequired
centerIdstring | nullrequired
activityIdstring | nullrequired
projectIdstring | nullrequired
notePublicstring | nullrequired
linesobject[]required
unitnull | string
vatRateintegerrequired
quantityintegerrequired
descriptionnull | stringrequired
unitPriceHalerinteger | nullrequired
lastIssuedOnnull | stringrequireddate
lastErrornull | stringrequired
runsobject[]
object"sales_recurring_run"required
idstringrequired
runDatestringrequireddate
statusstringrequired
invoiceIdnull | stringrequired
errornull | stringrequired
PATCH/v1/sales/recurring/{id}
curl -X PATCH https://api.damedoklad.cz/v1/sales/recurring/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pekárna U Lípy s.r.o.",
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "frequency": "monthly"
}'

End a recurring invoice schedule. Invoices already issued stay.

DELETE/v1/sales/recurring/{id}

End a recurring invoice schedule. Invoices already issued stay.

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

MCP tool: delete-recurring-invoice

Path parameters

idstringrequired

Response · 200

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

Issue every recurring invoice due by today in this workspace now; safe to repeat

POST/v1/sales/recurring/run-due

Issue every recurring invoice due by today in this workspace now; safe to repeat

MCP tool: run-due-recurring-invoices

Request body

asOfstringYYYY-MM-DD
Date as YYYY-MM-DD.

Response · 200

schedulesintegerrequired
issuedintegerrequired
failedintegerrequired
errorsobject[]required
recurringIdnull | stringrequired
errornull | stringrequired
POST/v1/sales/recurring/run-due
curl -X POST https://api.damedoklad.cz/v1/sales/recurring/run-due \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "asOf": "2026-10-30"
}'

List payment reminders

GET/v1/sales/reminders

List payment reminders

MCP tool: list-invoice-reminders

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

dataobject[]required
object"sales_reminder"required
idstringrequired
invoiceIdstringrequired
invoiceNumberstringrequired
contactNamenull | stringrequired
currencynull | stringrequired
levelintegerrequired
numbernull | stringrequired
issueDatestringrequireddate
newDueDatenull | stringrequireddate
daysOverdueintegerrequired
outstandingHalerintegerrequired
interestHalerintegerrequired
ratePercentnull | numberrequired
subjectstringrequired
bodystringrequired
sentAtnull | stringrequireddate-time
fileIdnull | stringrequired
totalinteger
Rows that match, on all pages.
hasMorebooleanrequired
More rows follow. Ask again with offset + the number of rows received.
GET/v1/sales/reminders
curl https://api.damedoklad.cz/v1/sales/reminders \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Download the PDF of a payment reminder

GET/v1/sales/reminders/{id}/pdf

Download the PDF of a payment reminder

MCP tool: download-invoice-reminder-pdf

Path parameters

idstringrequired

Response · 200

Returns a application/pdf file.

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

E-mail a payment reminder to the customer

POST/v1/sales/reminders/{id}/send

E-mail a payment reminder to the customer

MCP tool: send-invoice-reminder

Path parameters

idstringrequired

Response · 200

idstringrequired
invoiceIdstringrequired
invoiceNumberstringrequired
contactNamenull | stringrequired
currencynull | stringrequired
levelintegerrequired
numbernull | stringrequired
issueDatestringrequireddate
newDueDatenull | stringrequireddate
daysOverdueintegerrequired
outstandingHalerintegerrequired
interestHalerintegerrequired
ratePercentnull | numberrequired
subjectstringrequired
bodystringrequired
sentAtnull | stringrequireddate-time
fileIdnull | stringrequired
POST/v1/sales/reminders/{id}/send
curl -X POST https://api.damedoklad.cz/v1/sales/reminders/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/send \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Send the reminders due by today under each contact's reminder settings, in this workspace; safe to repeat. Sends nothing when e-mail is not configured

POST/v1/sales/reminders/run-due

Send the reminders due by today under each contact's reminder settings, in this workspace; safe to repeat. Sends nothing when e-mail is not configured

MCP tool: run-due-reminders

Request body

asOfstringYYYY-MM-DD
Date as YYYY-MM-DD.

Response · 200

emailConfiguredbooleanrequired
checkedintegerrequired
sentintegerrequired
skippedintegerrequired
noEmailintegerrequired
failedintegerrequired
errorsobject[]required
invoiceIdnull | stringrequired
stagestringrequired
errornull | stringrequired
POST/v1/sales/reminders/run-due
curl -X POST https://api.damedoklad.cz/v1/sales/reminders/run-due \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "asOf": "2026-10-30"
}'

Get seller details and invoicing defaults printed on documents

GET/v1/sales/settings

Get seller details and invoicing defaults printed on documents

MCP tool: get-sales-settings

Response · 200

idnull | stringrequired
vatPayerbooleanrequired
namenull | stringrequired
iconull | stringrequired
dicnull | stringrequired
streetnull | stringrequired
citynull | stringrequired
postalCodenull | stringrequired
countrystringrequired
phonenull | stringrequired
emailnull | stringrequired
webstring | nullrequired
registrationstring | nullrequired
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
hasLogobooleanrequired
defaultDueDaysintegerrequired
replyTonull | stringrequired
documentFooterstring | nullrequired
autoAdvanceTaxDocumentbooleanrequired
missingstring[]required
autoConsumeOrdersboolean
GET/v1/sales/settings
curl https://api.damedoklad.cz/v1/sales/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Update seller address, bank account, VAT payer status, and invoicing defaults

PUT/v1/sales/settings

Update seller address, bank account, VAT payer status, and invoicing defaults

MCP tool: update-sales-settings

Request body

autoConsumeOrdersboolean
Issuing an invoice or a delivery note takes open received orders of the same customer and item, oldest first.
vatPayerboolean
dicstring | null
VAT number (DIČ), for example CZ12345678.
streetstring | null
citystring | null
postalCodestring | null
countrystring2 chars
phonestring | null
emailstring | null
webstring | null
registrationstring | null
accountNumberstring | null
Account number from the chart of accounts, for example 311. list-accounts lists them.
bankCodestring | null
ibanstring | null
IBAN without spaces.
defaultDueDaysintegermin 0max 365
replyTostring | null
Date as YYYY-MM-DD.
documentFooterstring | null
autoAdvanceTaxDocumentboolean

Response · 200

idnull | stringrequired
vatPayerbooleanrequired
namenull | stringrequired
iconull | stringrequired
dicnull | stringrequired
streetnull | stringrequired
citynull | stringrequired
postalCodenull | stringrequired
countrystringrequired
phonenull | stringrequired
emailnull | stringrequired
webstring | nullrequired
registrationstring | nullrequired
accountNumbernull | stringrequired
bankCodenull | stringrequired
ibannull | stringrequired
hasLogobooleanrequired
defaultDueDaysintegerrequired
replyTonull | stringrequired
documentFooterstring | nullrequired
autoAdvanceTaxDocumentbooleanrequired
missingstring[]required
autoConsumeOrdersboolean
PUT/v1/sales/settings
curl -X PUT https://api.damedoklad.cz/v1/sales/settings \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "autoConsumeOrders": false,
  "vatPayer": false,
  "dic": "CZ12345678"
}'

List mutual set-offs (vzájemné zápočty)

GET/v1/set-offs

List mutual set-offs (vzájemné zápočty)

MCP tool: list-set-offs

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"posted" | "storno"

Response · 200

dataobject[]required
object"set_off"required
idstringrequired
numberstringrequired
contactIdstringrequired
contactNamestringrequired
setOffOnstringrequireddate
basisstringrequired
currencystringrequired
exchangeRatenull | numberrequired
amountHalerintegerrequired
notestring | nullrequired
statusstringrequired
createdAtstringrequireddate-time
itemsobject[]required
object"set_off_item"required
idstringrequired
sidestringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
documentTotalHalerintegerrequired
amountHalerintegerrequired
remainingHalerintegerrequired
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamestringrequired
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/set-offs
curl https://api.damedoklad.cz/v1/set-offs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Set off receivables and payables of one contact. Each document shows as settled in that amount; 395 ends on zero

POST/v1/set-offs

Set off receivables and payables of one contact. Each document shows as settled in that amount; 395 ends on zero. Amounts may be left out: the smaller side goes in whole and the other covers it, oldest due date first. VAT does not change. A declaration needs our claim to be due (§ 1982 OZ); an agreement does not. The answer lists warnings about an unreliable VAT payer among the supplier's invoices and advances (§ 109 ZDPH), as a payment order does, without the account check; they never block.

MCP tool: create-set-off

Request body

contactIdstringrequired
ID of the contact. Find it with list-contacts.
seriesIdstring
A number series of type set_off. Left out: the default series of the year.
setOffOnstringrequiredYYYY-MM-DD
The day of the set-off. Under § 1982 OZ it takes effect when both claims became eligible; the books use this date.
basis"agreement" | "declaration"
agreement (default): both sides sign, not-yet-due claims allowed. declaration: one-sided under § 1982 OZ, our claim must be due.
exchangeRatenumber
For a foreign currency: CZK for one unit. Left out: the ČNB rate of the day.
notestring | null
itemsobject[]required
kind"invoice" | "debit_note" | "other_receivable" | "received_invoice" | "credit_note" | "other_payable" | "proforma" | "supplier_advance"required
documentIdstringrequired
ID of the document.
amountHalerintegermax 9007199254740991
How much of this document to set off. Left out: the side with less goes in whole and the other covers it, oldest due date first.

Response · 201

idstringrequired
numberstringrequired
contactIdstringrequired
contactNamestringrequired
setOffOnstringrequireddate
basisstringrequired
currencystringrequired
exchangeRatenull | numberrequired
amountHalerintegerrequired
notestring | nullrequired
statusstringrequired
createdAtstringrequireddate-time
itemsobject[]required
object"set_off_item"required
idstringrequired
sidestringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
documentTotalHalerintegerrequired
amountHalerintegerrequired
remainingHalerintegerrequired
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamestringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
POST/v1/set-offs
curl -X POST https://api.damedoklad.cz/v1/set-offs \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contactId": "con_2n9F4kT7wQ1xYz0aBcDeFgHiJkL",
  "setOffOn": "2026-10-30",
  "items": [
    {
      "kind": "invoice",
      "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    },
    {
      "kind": "invoice",
      "documentId": "obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL"
    }
  ]
}'

Get a set-off with its documents

GET/v1/set-offs/{id}

Get a set-off with its documents

MCP tool: get-set-off

Path parameters

idstringrequired

Response · 200

idstringrequired
numberstringrequired
contactIdstringrequired
contactNamestringrequired
setOffOnstringrequireddate
basisstringrequired
currencystringrequired
exchangeRatenull | numberrequired
amountHalerintegerrequired
notestring | nullrequired
statusstringrequired
createdAtstringrequireddate-time
itemsobject[]required
object"set_off_item"required
idstringrequired
sidestringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
documentTotalHalerintegerrequired
amountHalerintegerrequired
remainingHalerintegerrequired
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamestringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
GET/v1/set-offs/{id}
curl https://api.damedoklad.cz/v1/set-offs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"

Download the printed set-off agreement or declaration, ready to sign

GET/v1/set-offs/{id}/pdf

Download the printed set-off agreement or declaration, ready to sign

MCP tool: download-set-off-pdf

Path parameters

idstringrequired

Response · 200

Returns a application/pdf file.

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

Cancel a set-off: its payments come off the documents and what they posted is reversed

POST/v1/set-offs/{id}/storno

Cancel a set-off: its payments come off the documents and what they posted is reversed

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

MCP tool: storno-set-off

Path parameters

idstringrequired

Response · 200

idstringrequired
numberstringrequired
contactIdstringrequired
contactNamestringrequired
setOffOnstringrequireddate
basisstringrequired
currencystringrequired
exchangeRatenull | numberrequired
amountHalerintegerrequired
notestring | nullrequired
statusstringrequired
createdAtstringrequireddate-time
itemsobject[]required
object"set_off_item"required
idstringrequired
sidestringrequired
kindstringrequired
documentIdstringrequired
documentNumbernull | stringrequired
issueDatenull | stringrequireddate
dueDatenull | stringrequireddate
documentTotalHalerintegerrequired
amountHalerintegerrequired
remainingHalerintegerrequired
warningsobject[]
receivedInvoiceIdnull | stringrequired
numberstringrequired
contactNamestringrequired
statusnull | stringrequired
warningsobject[]required
codenull | stringrequired
levelstringrequired
reasonnull | stringrequired
liabilitystring
POST/v1/set-offs/{id}/storno
curl -X POST https://api.damedoklad.cz/v1/set-offs/obj_2n9F4kT7wQ1xYz0aBcDeFgHiJkL/storno \
  -H "Authorization: Bearer $DAMEDOKLAD_API_KEY"