# POS Software

Most POS applications print to a network printer by host and port. That is the whole integration: swap
the address of the device on your counter for the address of a virtual printer.

## What to enter

| Setting | Value |
|---|---|
| Host / IP address | `virtual-printer.online` (or your own host when self-hosting) |
| Port | your printer's port, shown on its card |
| Connection type | Network, Ethernet, TCP/IP, raw, or "9100" - the names vary |
| Protocol / emulation | ESC/POS for receipts, EPL for labels - match the printer you created |
| Encoding / code page | whatever your receipts need; see [Garbled characters](/docs/troubleshooting/garbled-characters) |

Avoid any option that mentions a Windows driver, a spooler, USB, or a serial port. Those paths do not
open a socket, and the virtual printer only accepts sockets.

## Confirming it works

Print anything - a test receipt from the application is ideal - and watch the document appear. If it
does not:

1. Check [Workspace Settings -> Access Log](/#settings/connections). A rejected entry means the
   [IP whitelist](/#settings/whitelist) does not have the terminal's address yet.
2. If nothing is logged, the bytes never arrived: see
   [Connection refused or reset](/docs/troubleshooting/connection-refused).

## Testing a whole site

Terminals usually address several printers - kitchen, bar, receipts. Create one virtual printer per
role, give each the width of the hardware it stands in for, and point each terminal at the matching
port. Ports are permanent, so the configuration you enter once keeps working.

Widths worth knowing: 384 dots for 58 mm paper, 576 dots for 80 mm. A layout that only ever ran on 80 mm
paper often breaks on 58 mm, and creating both is the cheapest way to find out before the printer does.
