Fiscal receipts (PRRO)
FISCAL_MODE | How it works | When to choose |
|---|---|---|
mono | The receipt is issued by the PRRO linked in the plata by mono cabinet (mono's own PRRO or Checkbox via mono). Mistok sends a basket with product codes (code = SKU, barcode, tax groups from MONO_TAX_CODES), picks the receipt up from fiscal-checks, writes the link into the order note, adds the fiscal-done tag, shows it to the buyer on the Order status page and serves the PDF in the admin (/admin/fiscal/:id.pdf). | all online payments go through mono |
checkbox | Mistok itself creates a sale receipt in Checkbox after payment (goods, shipping, CASHLESS), a refund receipt on refund, and with CHECKBOX_FISCALIZE_ALL=true — also for other orders on orders/paid (cash on delivery → CASH). | several gateways, cash on delivery, one cash register for everything |
vchasno | Vchasno.Kasa (Orders API): after an online payment Mistok creates an order with the goods (SKU, barcode, kopecks) and the register issues the receipt at once. For cash on delivery — a deferred receipt: on fulfilment Mistok passes the Nova Poshta / Ukrposhta / Meest tracking number and the register fiscalizes by itself when the buyer pays at the branch. Return receipts are issued manually in the register app (the API does not expose them). | your accountant already uses Vchasno; many COD orders; free tier up to 300 receipts/month |
none | nothing is fiscalised | a sole proprietor without a PRRO obligation, or an external cash register |
Return receipts via mono
When a PRRO is linked to mono, invoice/cancel must carry items — the bank builds the return receipt from them. Mistok takes the lines from the Shopify refunds/create webhook (refund_line_items + shipping refund); if the lines do not add up to the refunded amount, a single summary line for the exact amount is sent. The poller then reads fiscal-checks (type: return) and writes the return-receipt link into the order note and the refunds log. Same for a partial hold capture: invoice/finalize with items when the amount differs.
| Event | mono call | Receipt | Where it shows |
|---|---|---|---|
| payment success | — (the PRRO fires by itself) | sale | note, tag, Order status, fiscalized event, PDF in admin |
| refund in Shopify | invoice/cancel + items | return | “return receipt” note, refunds log |
| hold captured for less | invoice/finalize + items | sale for the new amount | as for a payment |
receipt failed | — | — | owner alert (Telegram/email), manual retry POST /admin/fiscal/:id/poll |
Vchasno.Kasa: how the deferred receipt works
| Step | What Mistok does | Call |
|---|---|---|
| online payment success | creates an order with payment type “card”, tag = mistok-<orderId> (idempotent) | POST /api/v1/orders |
COD order, orders/fulfilled with a tracking number | creates a deferred receipt: TTN, carrier (from tracking_company), goods, amount due (minus prepayment) | POST /api/v1/fiscal_links |
| poller (every 10 min, up to 30 days) | reads the status: 0/10/11 — waiting; 101 — receipt issued → note, fiscal-done tag, fiscalized event; 2000/2002 — cancelled/expired → alert | GET /api/v1/fiscal_links/:id |
| refund in Shopify | refunds at the PSP and alerts “issue the return receipt in Vchasno.Kasa” | — |
Variables: VCHASNO_TOKEN (cabinet → Settings → API), VCHASNO_RRO_FN (fiscal number of the register, GET /api/v1/rro), VCHASNO_DEFERRED_COD, VCHASNO_DEFAULT_POSTAL. Wire format checked against the open-source client sashalenz/vchasno-kasa-api; official wiki — wiki-kasa.vchasno.ua. Not yet verified on a live account — keys needed.
Cash on delivery
FISCAL_COD=false disables receipts for orders paid through the carrier. Basis: the Supreme Court’s position (case 520/27700/25, June 2026) that NovaPay cash-on-delivery is not a settlement operation of the seller. This is not legal advice — agree the mode with your accountant; Mistok only provides the switch and an audit trail in the order notes.
Receipts for the buyer
SEND_MONO_RECEIPT=true — mono sends a payment receipt to the buyer’s email. Checkbox delivers the receipt to the email/phone from the delivery fields.
Checkbox variables
CHECKBOX_LICENSE_KEY, CHECKBOX_PIN_CODE (or the cashier’s login/password), CHECKBOX_AUTO_SHIFT (opens a shift automatically). Official docs: api.checkbox.ua/api/redoc.