Build, sign, and (optionally) submit Citizen / POS coupons using the
local api.php endpoint.
/citizen/coupon so ATK can
verify the receipt is authentic. This project's
sendQrCode() call mimics that mobile app for testing.
/pos/coupon at the time of sale. Its totals and tax
groups must exactly match the corresponding Citizen Coupon, or the
receipt is marked FAILED VERIFICATION.
In practice, at the cash register: the moment a cashier finalizes a sale, the till software builds and submits the POS Coupon to ATK in the background — the customer never sees this step. At the same moment, that same sale's summarized data (Citizen Coupon) is encoded into the QR code printed at the bottom of the paper receipt. Days or weeks later, the customer can open the ATK Citizen Mobile App and scan that QR code to confirm the purchase was properly fiscalized (and, in Kosovo, to enter it into ATK's fiscal receipt lottery). So: POS Coupon = sent automatically by the store at checkout; Citizen Coupon = what the shopper's phone actually scans afterwards.
taxRate field)
| Code | VAT % | Description |
|---|---|---|
| A | 0% | Exempt from VAT |
| C | 0% | Zero-rated VAT |
| D | 8% | Reduced VAT rate |
| E | 18% | Standard VAT rate |
Used on both CouponItem.taxRate (per line item) and
TaxGroup.taxRate (aggregated totals per rate). The sum of
all TaxGroup.totalForTax/totalTax entries
must reconcile with the coupon's total,
totalTax, and totalNoTax fields.
No request sent yet.