iVendNextDevelopers Request a sandbox

S4 — the receipt pack: a UAE tax invoice on the till sale

A sale at two VAT rates, and its tax invoice in the till's Print sheet

A sale at two VAT rates, and its tax invoice, in English and Arabic, in the till's Print sheet.

A manifest with one POS Invoice print format: the company's tax registration number and address, an inline logo, one line per item with its VAT rate, the taxable value at each rate, and every label in English beside Arabic. It is for a developer who needs the till to print a receipt that meets their market's rules. The recipe is recipes/receipt_format.md.

When to use it: the shop's receipt must carry what your market's tax rules ask for, and you want to ship that layout as a package the shop installs and removes cleanly.

What it looks like

The address and the tax number are made up. The invoice shows R (the Rand) where a UAE shop shows its own currency.

Step Frame Screenshot
1. A sale at two rates: the case (15%) and a zero-rated item the till, 1440 wide
2. The Print sheet's preview: logo, address, tax registration number, Tax Invoice / فاتورة ضريبية the till
3. One line per item with its VAT rate the till
4. The taxable value at each rate, the VAT and the total the till

The files

File What
receipt.html the layout — a readable template, with comments
logo.png the placeholder logo (294 bytes); replace it with the brand's
build.py builds manifest.json from the two files above (inlines the logo)
manifest.json the manifest the installer reads (generated; python3 build.py)

Run it

python3 samples/s4_receipt_pack/build.py && python3 tools/manifest/validate.py samples/s4_receipt_pack/manifest.json

Before you build on it

Technical notes

The walk

The GIF: a cashier sells a leather case (15%) and a zero-rated item, takes the card, and opens the till's Print sheet: the preview is this pack's tax invoice — the logo, the company's address and tax number, each line with its VAT rate, the taxable value at each rate, every label in English beside Arabic. Frame: the till (/pos?frame=terminal, 1440 wide). Walked on our test bench on 2026-10-07, iVendNext POS app at 8dc36aab8; nothing was sent to a printer. Built from the same screens as the stills below; every frame is cut above the sheet's printer choices.

The cashier is the bench's Thabo Nkosi, the customer Johan van der Merwe. The address and the tax number are the sample's made-up ones, set on the company by its bench run for the walk; the bench's currency is the Rand, so the invoice shows R where a UAE shop shows its own.

The tests

File What
our test bench's own run (not in the kit) the bench tests: install, set on a profile, three sales, the render, uninstall and reinstall

Why this way (R6)

A template in a manifest (picked: the door that exists, proven, installs and removes cleanly, ~100 lines of template) · edit the seeded receipt in place (rejected: the next migrate keeps or overwrites it, and a hand-edit has no owner) · a hosted app that ships a format (rejected: it needs partner Python in the shop) · start from a copy of the seeded mPOS Receipt (the safer base for a real market: it already carries the charge rows, the offline lines and the order lines; rejected for a SAMPLE because ~240 lines of hooks specific to iVendNext POS hide the idea. The sample copies only the VAT figure and the charge row, with their source named; the recipe lists what to copy back).

Not used, because it would need an extension point that has not shipped

A QR or fiscal mark (P-RECEIPT), a manifest that sets the profile's format (with P-RECEIPT §3.4 — so step 5 of the recipe is configuration), hiding or requiring a till field (P-FIELDS), labels (P-LABEL).

This page in the kit