Skip to main content

Data Structures

This chapter expands on the descriptions of the country-specific Data Structures, covered in the Chapter Data Structures of the General Part, with information applicable to the Polish market.

Currency

The queue currency for Poland is PLN. The receipt (Currency) and every charge item and pay item must carry PLN explicitly — the data format defaults to EUR, so POS Creators must set the currency on each request. Requests violating this rule are rejected with the validation error code CurrencyMustMatchMarket.

cbCustomer — buyer's NIP on a paragon z NIP

For a receipt with the buyer's tax ID (paragon z NIP), flag the receipt case with ReceiverIsBusiness (0x0000_0020_0000) and hand over the buyer's NIP as CustomerVATId inside the cbCustomer object (MiddlewareCustomer structure). Requests with the flag but without a NIP are rejected. Until 2026-12-31, such receipts up to 450 PLN act as simplified invoices.

Sale and return positions

A Polish fiscal document must not mix sale and return positions: the register protocol processes returns as separate non-fiscal documents. Send returns as their own receipts flagged with IsReturn/IsRefund (0x0100_0000_0000) and reference the original receipt via cbPreviousReceiptReference. Discounts/extras and voids are position modifiers, not return positions.