Pokladnica

Pokladničné registre, pohyby (PPD/VPD), PDF doklady a mesačné štatistiky.

Pokladňa je register + zoznam movements (príjmové a výdavkové doklady, PPD/VPD). Pri vytvorení prvej pokladnice sa automaticky vytvoria 2 série pre PPD a VPD číslovanie. URL prefix zdroja je /api/v1/cash-registers (množné číslo).

Filtre a parametre

  • GET /cash-registers currency (3-písmenový ISO 4217 kód).
  • GET /cash-registers/{cashRegisterId}/movements type (income | expense), from, to (ISO 8601 dátumy), search (fulltext v purpose / party_name), page (default 1), limit (default 20, max 100), sort_order (asc | desc, default desc).
  • GET /cash-registers/{cashRegisterId}/stats year (default aktuálny UTC rok), month (1–12, default aktuálny UTC mesiac). Oba parametre sú voliteľné.

Endpointy

POST/api/v1/cash-registerscash_registers:write

Vytvorí novú pokladnicu. Pri prvej pokladnici sa automaticky vytvoria PPD a VPD série pre číslovanie dokladov.

Request
curl -X POST "https://monivio.sk/api/v1/cash-registers" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Hlavná pokladnica",
  "currency": "EUR",
  "description": "Hlavná pokladnica firmy",
  "show_signature": true,
  "is_default": true
}'
Response 201json
{
  "data": {
    "id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "name": "Hlavná pokladnica",
    "description": null,
    "currency": "EUR",
    "initial_balance": 0,
    "current_balance": 0,
    "income_series_id": "ser_ppd_main",
    "expense_series_id": "ser_vpd_main",
    "show_signature": true,
    "is_default": true,
    "created_at": "2026-04-01T10:00:00.000Z",
    "updated_at": "2026-06-01T14:30:00.000Z"
  }
}
GET/api/v1/cash-registerscash_registers:read

Zoznam pokladníc organizácie. Voliteľný filter currency vráti len pokladnice v danej mene.

Request
curl "https://monivio.sk/api/v1/cash-registers?currency=EUR" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response 200json
{
  "data": [
    {
      "id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
      "name": "Hlavná pokladnica",
      "description": null,
      "currency": "EUR",
      "initial_balance": 0,
      "current_balance": 0,
      "income_series_id": "ser_ppd_main",
      "expense_series_id": "ser_vpd_main",
      "show_signature": true,
      "is_default": true,
      "created_at": "2026-04-01T10:00:00.000Z",
      "updated_at": "2026-06-01T14:30:00.000Z"
    }
  ]
}
GET/api/v1/cash-registers/{cashRegisterId}cash_registers:read

Detail pokladnice vrátane aktuálneho zostatku.

Request
curl "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response 200json
{
  "data": {
    "id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "name": "Hlavná pokladnica",
    "description": null,
    "currency": "EUR",
    "initial_balance": 0,
    "current_balance": 0,
    "income_series_id": "ser_ppd_main",
    "expense_series_id": "ser_vpd_main",
    "show_signature": true,
    "is_default": true,
    "created_at": "2026-04-01T10:00:00.000Z",
    "updated_at": "2026-06-01T14:30:00.000Z"
  }
}
PATCH/api/v1/cash-registers/{cashRegisterId}cash_registers:write

Update pokladnice. Meniteľné polia: name, description, show_signature, is_default. Mena (currency) sa po vytvorení nemení.

Request
curl -X PATCH "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Hlavná pokladnica – BA",
  "show_signature": false
}'
Response 200json
{
  "data": {
    "id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "name": "Hlavná pokladnica – BA",
    "description": null,
    "currency": "EUR",
    "initial_balance": 0,
    "current_balance": 0,
    "income_series_id": "ser_ppd_main",
    "expense_series_id": "ser_vpd_main",
    "show_signature": false,
    "is_default": true,
    "created_at": "2026-04-01T10:00:00.000Z",
    "updated_at": "2026-05-07T08:42:11.000Z"
  }
}
POST/api/v1/cash-registers/{cashRegisterId}/movementscash_registers:write

Vytvorí PPD (income) alebo VPD (expense) doklad. Service automaticky pridelí číslo z PPD/VPD série a aktualizuje zostatok pokladnice.

Request
curl -X POST "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "income",
  "date": "2026-06-01",
  "amount": 250,
  "purpose": "Tržba 1.6.2026",
  "party_name": "Predajňa Bratislava"
}'
Response 201json
{
  "data": {
    "id": "csm_5wpqzx9k3rt8nmlhvyc4bfsj",
    "cash_register_id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "type": "income",
    "document_number": "PPD2026-0042",
    "date": "2026-06-01",
    "amount": 250,
    "balance_after": 250,
    "purpose": "Tržba 1.6.2026",
    "party_name": "Predajňa Bratislava",
    "party_contact_id": null,
    "linked_document_id": null,
    "linked_expense_id": null,
    "notes": null,
    "created_by": "API",
    "created_at": "2026-06-01T14:30:00.000Z",
    "updated_at": "2026-06-01T14:30:00.000Z"
  }
}
GET/api/v1/cash-registers/{cashRegisterId}/movementscash_registers:read

Zoznam pohybov v pokladnici so stránkovaním. Filtre: type, from, to, search, page, limit, sort_order.

Request
curl "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements?type=income&page=1&limit=20&sort_order=desc" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response 200json
{
  "data": [
    {
      "id": "csm_5wpqzx9k3rt8nmlhvyc4bfsj",
      "cash_register_id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
      "type": "income",
      "document_number": "PPD2026-0042",
      "date": "2026-06-01",
      "amount": 250,
      "balance_after": 250,
      "purpose": "Tržba 1.6.2026",
      "party_name": "Predajňa Bratislava",
      "party_contact_id": null,
      "linked_document_id": null,
      "linked_expense_id": null,
      "notes": null,
      "created_by": "API",
      "created_at": "2026-06-01T14:30:00.000Z",
      "updated_at": "2026-06-01T14:30:00.000Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "total_pages": 1
  }
}
GET/api/v1/cash-registers/{cashRegisterId}/movements/{movementId}cash_registers:read

Detail jedného movementu.

Request
curl "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements/mov_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response 200json
{
  "data": {
    "id": "csm_5wpqzx9k3rt8nmlhvyc4bfsj",
    "cash_register_id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "type": "income",
    "document_number": "PPD2026-0042",
    "date": "2026-06-01",
    "amount": 250,
    "balance_after": 250,
    "purpose": "Tržba 1.6.2026",
    "party_name": "Predajňa Bratislava",
    "party_contact_id": null,
    "linked_document_id": null,
    "linked_expense_id": null,
    "notes": null,
    "created_by": "API",
    "created_at": "2026-06-01T14:30:00.000Z",
    "updated_at": "2026-06-01T14:30:00.000Z"
  }
}
PATCH/api/v1/cash-registers/{cashRegisterId}/movements/{movementId}cash_registers:write

Update movementu. Po zmene amount alebo date sa zostatky všetkých nasledujúcich pohybov prepočítajú.

Request
curl -X PATCH "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements/mov_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 280,
  "purpose": "Tržba 1.6.2026 + dobitie kasy"
}'
Response 200json
{
  "data": {
    "id": "csm_5wpqzx9k3rt8nmlhvyc4bfsj",
    "cash_register_id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "type": "income",
    "document_number": "PPD2026-0042",
    "date": "2026-06-01",
    "amount": 280,
    "balance_after": 280,
    "purpose": "Tržba 1.6.2026 + dobitie kasy",
    "party_name": "Predajňa Bratislava",
    "party_contact_id": null,
    "linked_document_id": null,
    "linked_expense_id": null,
    "notes": null,
    "created_by": "API",
    "created_at": "2026-06-01T14:30:00.000Z",
    "updated_at": "2026-06-02T09:10:00.000Z"
  }
}
GET/api/v1/cash-registers/{cashRegisterId}/movements/{movementId}/receiptcash_registers:read

Stiahne PDF doklad (PPD/VPD) k danému pohybu. Vracia binárne PDF s Content-Disposition: attachment.

Request
curl "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements/mov_2hf8pq3rxn4mlkzyt9abwvve/receipt" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
GET/api/v1/cash-registers/{cashRegisterId}/statscash_registers:read

Mesačné štatistiky príjmov a výdavkov. Parametre year a month sú voliteľné — defaultujú na aktuálny UTC rok a mesiac.

Request
curl "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/stats?year=2026&month=6" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response 200json
{
  "data": {
    "cash_register_id": "csr_3kw9pmxn7rt2vyzqlhc8bfsj",
    "year": 2026,
    "month": 6,
    "total_income": 280,
    "total_expense": 0,
    "net": 280,
    "currency": "EUR"
  }
}
DELETE/api/v1/cash-registers/{cashRegisterId}/movements/{movementId}cash_registers:write

Zmaže movement (soft delete) a prepočíta zostatky všetkých nasledujúcich pohybov.

Request
curl -X DELETE "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve/movements/mov_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DELETE/api/v1/cash-registers/{cashRegisterId}cash_registers:write

Vymaže pokladnicu (soft delete). Pokladnicu s aktívnymi pohybmi nemôžeš zmazať — najprv zmaž alebo presuň pohyby.

Request
curl -X DELETE "https://monivio.sk/api/v1/cash-registers/csh_2hf8pq3rxn4mlkzyt9abwvve" \
  -H "Authorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Objekt CashRegister

idreadonly
string
CUID2 identifikátor s prefixom csr_.
Príklad: csr_3kw9pmxn7rt2vyzqlhc8bfsj
namerequired
string
Názov pokladnice (max 100 znakov).
Príklad: Hlavná pokladnica
description
string/ null
Voliteľný popis (max 500 znakov).
currency
string (ISO 4217)
Mena pokladnice (default EUR). Po vytvorení sa nemení – PATCH currency neakceptuje.
Príklad: EUR
initial_balance
number
Počiatočný stav pri vytvorení pokladnice.
Príklad: 0
current_balancereadonly
number
Aktuálny stav po všetkých pohybroch. Service ho prepočítava pri každom vytvorení / úprave / mazaní movementu.
income_series_id
string/ null
ID PPD série (auto-vytvorená pri prvej pokladnici).
expense_series_id
string/ null
ID VPD série (auto-vytvorená pri prvej pokladnici).
show_signature
boolean
Zobrazovať podpisové riadky na PDF doklade.
is_default
boolean
Default pokladnica organizácie. Naraz môže byť default len jedna.
created_atreadonly
string (ISO 8601)
Vytvorenie pokladnice.
updated_atreadonly
string (ISO 8601)
Posledná zmena pokladnice.

Objekt CashMovement

idreadonly
string
CUID2 identifikátor s prefixom csm_.
Príklad: csm_5wpqzx9k3rt8nmlhvyc4bfsj
cash_register_idreadonly
string
Pokladnica, do ktorej movement patrí.
typerequired
"income" | "expense"
Príjem (PPD) alebo výdavok (VPD). Určuje, či sa amount pripočíta alebo odpočíta od zostatku.
document_numberreadonly
string/ null
Pridelené číslo dokladu z PPD alebo VPD série (napr. PPD2026-0042).
daterequired
string (YYYY-MM-DD)
Dátum pohybu.
amountrequired
number
Suma pohybu (vždy kladné číslo). Type určuje znamienko v balance.
balance_afterreadonly
number
Stav pokladnice po tomto movemente. Pri zmene predošlých pohybov sa prepočíta.
purposerequired
string
Účel platby (max 255 znakov).
party_name
string/ null
Voľne zadaný názov protistrany (max 255 znakov).
party_contact_id
string/ null
ID kontaktu z /api/v1/contacts (ak je protistrana v DB).
linked_document_id
string/ null
Linka na faktúru, ktorú movement uhrádza.
linked_expense_id
string/ null
Linka na náklad, ktorý movement vypláca.
notes
string/ null
Voľný poznámkový text (max 2000 znakov).
created_byreadonly
string/ null
Pre pohyby vytvorené cez API kľúč je hodnota vždy "API". Pre pohyby z aplikácie sa ukladá meno používateľa.
created_atreadonly
string (ISO 8601)
Vytvorenie movementu.
updated_atreadonly
string (ISO 8601)
Posledná zmena movementu.

Objekt CashRegisterStats

cash_register_id
string
ID pokladnice, ktorej sa štatistika týka.
year
number
Rok (default aktuálny UTC rok).
month
number
Mesiac 1–12 (default aktuálny UTC mesiac).
total_income
number
Suma všetkých income (PPD) pohybov v danom mesiaci.
total_expense
number
Suma všetkých expense (VPD) pohybov v danom mesiaci.
net
number
Rozdiel total_income − total_expense.
currency
string (ISO 4217)
Mena pokladnice.