docs
/
Appmint Mobile

Printing

Thermal printers over Bluetooth, USB and network, the server-rendered receipt and check payloads, cash drawers, and shared printers through the device hub.

The app prints to ESC/POS thermal printers paired to the device, or hands print jobs to a shared printer through the device hub. Layouts are not in the app: the server renders each receipt or check into a small set of primitives and the app draws them.

Printers the app talks to

ConnectionNotes
Bluetooth (BLE)The usual case — a belt printer or a counter printer. Pair at the OS level first, then in the app.
USBWhere the device has a port that supports it.
NetworkPrinters reachable on the venue network.

Star, Epson, Bixolon, Sunmi and generic ESC/POS printers work. Paper width is 80 mm by default, with 58 mm supported; the width is chosen at pairing and stored with the printer.

Pairing lives at More → Printer: scan, pick, set the width, print a test. The chosen printer becomes the device's default and reconnects on demand. With no default saved, printing fails with "No printer configured" rather than silently dropping the job.

What the server sends

Receipts and checks are fetched as payloads, then printed:

GET/storefront/pos/tab/:id/receipt-payload?copy=customer|merchantNo auth
GET/storefront/pos/tab/:id/check-payloadNo auth
POST/storefront/pos/tab/:id/print-checkNo auth
POST/storefront/pos/tab/:id/print-receiptNo auth

The payload is a list of primitives:

KindFieldsMeaning
texttext, bold, size, alignA line of text
feedlinesBlank lines
cut—Cut the paper
imageurlA logo or QR

The server also states the line width: 32 characters means 58 mm paper, 48 means 80 mm. The template behind the payload is the organization's posReceiptCustomerTemplate setting, with a factory default; copy=merchant renders the merchant copy. Editing the template in Studio Manager changes every device's output without an app update.

The app can also render its own receipt from a block model (header, line items, key-value rows, dividers, feeds, barcodes as QR, CODE128 or EAN13) — used for previews and for anything the server has not templated.

Cash drawers

A drawer plugs into the printer's DK (RJ12) port and opens on an ESC/POS kick pulse sent through the printer (ESC p, pin 0, 50 ms on, 250 ms off). Nothing is paired separately: if the printer works, the drawer works. Checkout can print and kick in one action.

Shared printers

A printer that several devices send to — a till printer, a kitchen printer — is not paired to each phone. It is reached through the Device Hub, which owns the connection and accepts jobs from any device in the venue. Kitchen tickets from Send to prep go that way when a hub is configured.

Per-device keys

KeyMeaning
printer_default_addressBluetooth address, USB id or network host
printer_default_nameDisplay name
printer_default_kindBLE, USB or NETWORK
printer_default_paper_mm58 or 80

Forgetting the printer clears all four. They are on the device, not the account, so a replacement tablet pairs again.

Web builds

The thermal printer plugin depends on native code, so on the web build scanning finds nothing and printing reports that it is unavailable. Receipts by email and SMS still work there.

When something goes wrong

Work down this list; the causes are ordered by how often they are the answer.

SymptomCauseFix
Nothing prints, no errorNo default printer saved on this deviceMore → Printer, scan, Pair. Printing without a default fails rather than queueing.
Print failed: …The printer is off, asleep, out of range, or claimed by another devicePower-cycle it, check range, then Test print. A printer paired to another phone in between must be paired here again.
The printer never appears in ScanNot in pairing mode, or not paired at the OS levelBluetooth printers usually need OS pairing first. Also check the Bluetooth is off banner.
Text wraps or half the roll is blankWrong paper widthSwitch between 58 mm and 80 mm. The server renders 32 or 48 characters per line to match.
Receipts print but the layout is wrong everywhereThe organization's receipt templateEdit posReceiptCustomerTemplate in Studio Manager — it changes every device without an app update.
The drawer will not openThe drawer cable, or no printer pairedKick drawer on the printer screen tests it. Drawer kick skipped means the pulse never left; open it with the key meanwhile.
Kitchen tickets do not printThey go through the hub, not this phoneSee Device Hub troubleshooting.
Printing is unavailable in a browserThe web build has no native printer pluginExpected. Email or text the receipt instead.
A receipt was needed and the tab is closedNothing is lostRe-print or re-send from the closed tab's payment list.