# Printer Setup

Printer settings are found under **POS > Settings > Printing**. Each device manages its own printer configuration — printers are stored locally and not synced between devices.

Printing to a printer that isn't on this device?

This page covers printers attached to the till by USB, Bluetooth, or the local network. For a printer in another room or location — or one you want every device to share — see [Cloud Printing](/receipts/cloud-printing.md). Cloud printers you've set up for your store appear **automatically** in every device's printer list — you don't add them here.

## Supported Printers by Platform[​](#supported-printers-by-platform "Direct link to Supported Printers by Platform")

The **Add Printer** form adapts to the app you're using — each platform shows only the connections and options it can actually use.

| Platform        | Supported Printers                                                                                                                               | Connections                       |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- |
| **Web app**     | Epson and Star printers with a built-in web server (network); Epson and Star printers via WebUSB/Web Bluetooth (USB/Bluetooth, Chrome/Edge only) | Network (HTTP), USB, Bluetooth    |
| **Desktop app** | Any network receipt printer                                                                                                                      | Network (raw TCP), USB, Bluetooth |
| **iOS app**     | Epson and Star                                                                                                                                   | Network, Bluetooth                |
| **Android app** | Epson and Star                                                                                                                                   | Network, Bluetooth, USB           |

Why only Epson and Star over the network on the web?

Web browsers cannot open raw TCP connections. Epson and Star receipt printers include a built-in web server that accepts print jobs over HTTP — this is the only way to send ESC/POS commands to a *network* printer from a browser. The desktop app doesn't have this limitation because it can connect directly over TCP.

USB and Bluetooth printing in the browser work too, but only in **Chrome or Microsoft Edge** (they use the WebUSB and Web Bluetooth APIs) — Safari and Firefox don't support them.

On the **mobile apps**, Bluetooth and USB printing go through Epson's and Star's official SDKs, so those connections require an Epson or Star printer. Generic printers work over the network only.

## Adding a Printer[​](#adding-a-printer "Direct link to Adding a Printer")

1

#### Open Printer Settings

Go to **POS > Settings > Printing**. If no printers are configured yet, you'll see an empty state with an **Add Printer** button. Every printer gets a **Printer Name** — just a label, auto-filled as "Receipt Printer" (then "Receipt Printer 2", and so on) — which you can change to anything that helps you tell your printers apart.

2

#### Choose How the Printer Connects

Every platform starts with the same question — **Connection Type** — and shows only the options that platform supports. The fields below update to match your choice.

* **Web app** — **Network**, **USB**, or **Bluetooth** (USB and Bluetooth need Chrome or Edge). For a **Network** printer you then choose the **Vendor** — Epson or Star — because the browser reaches a network printer through that brand's built-in web server.
* **Desktop app** — **Network**, **USB**, or **Bluetooth**.
* **Mobile apps** — **Network** or **Bluetooth**, plus **USB** on Android (iOS has no USB support).

3

#### Identify the Printer

**Network printers** — enter the **IP Address** (for example `192.168.1.100`). WCPOS probes the address to detect whether it's an Epson or Star device, and auto-fills the port, command language, and vendor. You'll see a "Detected: Epson" or "Detected: Star" label once detection completes. On the web app, it also shows the exact endpoint URL it will connect to.

**Bluetooth or USB printers** (mobile) — pick your printer from the discovered-device list. Selecting a device fills in its name and vendor automatically. Tap **Scan for printers** (Bluetooth) or **Refresh** (USB) if your printer isn't listed yet.

If automatic detection doesn't get everything right, you can adjust it all under **Advanced Settings**.

4

#### Save and Test

Click **Save**. WCPOS sends a **test print** first, and only saves the printer if it succeeds.

The test print is a short diagnostic — a numbered column ruler, centered normal and double-size text, a left/right alignment row, and a paper cut. It's designed so you can confirm the paper width, alignment, sizing, and cut are all configured correctly, not just that the printer is reachable.

Test fails? You can still save

If the test fails, you'll see the error along with a **Save without testing** option to save the profile anyway.

## Connection Types[​](#connection-types-mobile-apps "Direct link to Connection Types")

You start by picking the **Connection Type** at the top of the Add Printer form, and the connection fields update to match. The types available depend on the platform (see the table above).

### Network[​](#network "Direct link to Network")

The printer is on the same Wi-Fi network as your device. On the **desktop** and **mobile** apps, tap **Scan Network** to discover printers automatically, or enter the IP address manually — see [Finding Your Printer's IP Address](#finding-your-printers-ip-address). The **web app** uses manual IP entry only. On the desktop and mobile apps a network printer can be Epson, Star, or Generic; on the web it must be **Epson or Star**, and you pick which under the Network connection.

### Bluetooth[​](#bluetooth "Direct link to Bluetooth")

The printer is paired to your device over Bluetooth. Choose yours from the list — its name and vendor fill in automatically. On **mobile**, Bluetooth printing uses Epson's and Star's native SDKs, so the printer must be an **Epson or Star** model; on the **web**, Bluetooth works in Chrome or Edge via the Web Bluetooth API.

### USB[​](#usb-android-only "Direct link to USB")

The printer is connected by a USB cable. Pick it from the connected-device list. USB is available on the **web** (Chrome or Edge, via WebUSB), the **desktop** app, and **Android** — but **not iOS**, which has no general USB peripheral support. On mobile, USB printing requires an **Epson or Star** printer.

note

The **Port** setting only applies to network printers — it's hidden for Bluetooth and USB connections.

## Advanced Settings[​](#advanced-settings "Direct link to Advanced Settings")

Expand **Advanced Settings** to fine-tune the printer configuration. Most of these are filled in automatically once the vendor is known.

These settings apply on every platform:

| Setting                 | Options                                                         | Description                                                                                                                           |
| ----------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Language**            | ESC/POS, StarPRNT, Star Line Mode                               | The command protocol the printer speaks. Auto-filled from the detected vendor.                                                        |
| **Printer text width**  | 58mm (32 chars), 80mm standard (42 chars), 80mm wide (48 chars) | How many characters fit on a line. Match this to your paper and printer — most 80mm printers are 42 characters per line, some are 48. |
| **Full receipt raster** | Off / On                                                        | Print the whole receipt as an image instead of text — see [Full receipt raster](#full-receipt-raster) below.                          |

These two settings behave differently depending on the platform and connection type:

| Setting    | Options              | Where it applies                                                                                                                                                                                                                                                                 |
| ---------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Vendor** | Epson, Star, Generic | Printer manufacturer. On the **web app** you pick the vendor directly under the **Network** connection (Epson or Star only), not as an advanced setting. Generic is available for **network** printers on the desktop and mobile apps, but not for Bluetooth or USB connections. |
| **Port**   | Auto-filled          | Network port for the printer, shown next to the IP address. **Network only** — hidden for Bluetooth and USB. It's filled in for you based on the vendor (and, on the web, whether your POS is served over HTTP or HTTPS); change it only if your network remaps it.              |

## Printer Options[​](#printer-options "Direct link to Printer Options")

These toggles sit at the bottom of the Add Printer form:

| Option                    | Description                                                                                  |
| ------------------------- | -------------------------------------------------------------------------------------------- |
| **Auto-cut paper**        | Cut the paper automatically after each receipt                                               |
| **Auto-open cash drawer** | Send a kick command to open a connected cash drawer after printing                           |
| **Set as default**        | Make this the default printer — used for any receipt that isn't routed to a specific printer |

Looking for "auto-print after checkout"?

Automatically printing a receipt when a sale completes is a **cart setting**, not a printer setting — turn on **Auto-print receipt** in the POS cart settings. *Which* printer it uses is decided by your default printer and any per-template printer routing.

## Print routing[​](#print-routing "Direct link to Print routing")

If you use more than one template — say a thermal receipt **and** an A4 invoice — print routing decides which printer each template prints to. Routing has three layers, checked in this order:

1. **Per-job override.** On the receipt screen, a printer dropdown sits next to the template switcher. Picking a printer here overrides everything for that one print job. Switching templates resets it back to **Auto**.

2. **Settings override.** Go to **POS > Settings > Printing**, then use the **Receipt templates** section to assign a specific printer to each template. For example, route your thermal receipt to the Epson network printer and your HTML invoice to the system print dialog. Set a template back to **Auto** to remove the override.

3. **Auto-match.** When no override is set, WCPOS matches automatically:

   <!-- -->

   * **Thermal templates** route to thermal printers whose character width matches. A 58mm thermal template prefers 32-column printers; an 80mm template prefers 42- or 48-column printers.
   * **HTML templates** route to the system print dialog.
   * If multiple printers match, the **default** printer wins.

If you manually send a template to an incompatible printer — say, a thermal template to the system dialog — an amber **mismatch warning** appears on the receipt screen. The print still proceeds but the output may not render correctly.

Routing overrides are stored **per device**. Each iPad, phone, or computer manages its own routing — there is no server-side sync.

note

The **Receipt templates** printer controls under **POS > Settings > Printing** only appear once you've added at least one printer. With no printers configured, every template uses the system print dialog implicitly. **Cloud printers** set up for your store count here too — they appear as routing targets automatically, without being added on the device.

## Full receipt raster[​](#full-receipt-raster "Direct link to Full receipt raster")

By default, WCPOS sends receipts to thermal printers as **text** — fast, compact, and crisp, using the printer's built-in fonts. The catch: thermal printer fonts only cover a limited set of characters. Scripts the printer has no font for — many non-Latin alphabets, right-to-left text, some symbols — can come out as blank boxes or garbled characters.

**Full receipt raster** fixes this. When it's on, WCPOS renders the whole receipt as an image and sends that image to the printer, so the printout matches exactly what's on screen — in any language or script.

Turn it on per-printer under **Advanced Settings**. Things to know:

* **It's slower.** An image is much larger than a line of text, so the receipt takes longer to send and print.
* **Use it only when you need it.** If your receipts print fine as text, leave it off.
* It applies to thermal printers on any connection (network, Bluetooth, USB). It doesn't apply to the system print dialog, which already prints from a full-page rendering.

## Discovering Printers[​](#discovering-printers "Direct link to Discovering Printers")

How you find a printer depends on the connection:

* **Bluetooth and USB** — on the **mobile apps**, tap **Scan for printers** (Bluetooth) or **Refresh** (USB) and pick yours from the list; its name and vendor fill in automatically. On the **web** (Chrome or Edge), click **Connect** and choose the printer from the browser's own device chooser.
* **Network** — on the **desktop** and **mobile** apps, tap **Scan Network** to find printers on your local network automatically (the desktop discovers them over mDNS/Bonjour; mobile uses the Epson and Star SDKs), then pick yours from the list. You can also enter the IP address directly — see [Finding Your Printer's IP Address](#finding-your-printers-ip-address) below. Browsers can't scan networks, so the **web app** always uses manual IP entry.

## Finding Your Printer's IP Address[​](#finding-your-printers-ip-address "Direct link to Finding Your Printer's IP Address")

Most receipt printers can print a self-test page that includes the IP address:

* **Epson**: Hold the feed button while powering on
* **Star**: Hold the feed button for 5 seconds while powered on

Alternatively, check your router's connected-devices list or your printer's configuration utility.

### Static IP Recommended[​](#static-ip-recommended "Direct link to Static IP Recommended")

Receipt printers should use a **static IP address** to prevent the address from changing when the printer restarts. Configure this either:

* In your printer's built-in web interface (usually accessible at `http://<printer-ip>`)
* In your router's DHCP settings (assign a reserved IP to the printer's MAC address)

## Epson Printers[​](#epson-printers "Direct link to Epson Printers")

Epson printers with ePOS support communicate over HTTP. WCPOS sends SOAP/XML requests to the printer's built-in web server.

**Connection details:**

* Port `8008` (HTTP) or `8043` (HTTPS) — auto-filled to match whether your POS is served over HTTP or HTTPS
* Endpoint: `/cgi-bin/epos/service.cgi`

**Confirmed working models:**

* Epson TM-T70-i 2 (network)
* Epson TM-m30iii (with Printus middleware)

tip

Make sure your Epson printer has ePOS enabled in its configuration. Access the printer's web interface at `http://<printer-ip>` to check and enable ePOS settings.

On the **mobile apps**, Epson printers can also connect over Bluetooth or USB through Epson's native SDK — no IP address or ePOS web server required.

## Star Printers[​](#star-printers "Direct link to Star Printers")

Star printers with WebPRNT support communicate over HTTP. WCPOS sends commands to the Star WebPRNT endpoint.

**Connection details:**

* Port `80` (HTTP) or `443` (HTTPS) — auto-filled to match whether your POS is served over HTTP or HTTPS
* Endpoint: `/StarWebPRNT/SendMessage`

On the **mobile apps**, Star printers can also connect over Bluetooth or USB through Star's native SDK.

## Generic Printers[​](#generic-printers "Direct link to Generic Printers")

The **desktop app** supports any network receipt printer via raw TCP. Enter the printer's IP address and port (usually `9100`). This works with most thermal printers regardless of manufacturer, as long as they accept ESC/POS commands.

On the **mobile apps**, Generic printers are also supported — but for **network** connections only, not over Bluetooth or USB (those require an Epson or Star printer). The **web app** does not support Generic printers at all.

## Cash Drawers[​](#cash-drawers "Direct link to Cash Drawers")

Cash drawers connected to a receipt printer can be triggered automatically after each sale:

1. Enable **Auto-open cash drawer** in the printer options
2. The POS sends an ESC/POS kick command after printing

note

Cash drawer control requires a thermal printer profile — the browser print dialog cannot trigger cash drawers.

## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting")

Printer not detected during setup

* Confirm the printer is powered on and connected to the same network as your device
* For network printers: on the desktop or mobile app, try **Scan Network** to find it automatically; otherwise check the IP address is correct (print a self-test page)
* For the web app: confirm the printer is an Epson or Star model with ePOS/WebPRNT support
* For the desktop app: try the Generic vendor option with port 9100
* For Bluetooth: pair the printer in your device's Bluetooth settings first, then tap **Scan for printers**
* For USB (Android): check the cable and approve the USB permission prompt if one appears
* Check that no firewall is blocking the connection

Printer detected but nothing prints

* Check the paper roll — it may be empty or jammed
* Verify the **Printer text width** setting matches your paper (58mm or 80mm)
* Try printing a self-test from the printer itself to confirm it works
* Check the command language matches your printer (ESC/POS for Epson, StarPRNT or Star Line Mode for Star)

Receipt is garbled or has wrong characters

* The command language setting may be wrong — try switching between ESC/POS, StarPRNT, and Star Line Mode
* Make sure the **Printer text width** setting is correct
* If the receipt is in a non-Latin script or a right-to-left language, turn on **Full receipt raster** in Advanced Settings — it prints the receipt as an image so any language renders correctly

Cash drawer doesn't open

* Confirm **Auto-open cash drawer** is enabled in the printer options
* Check the drawer is connected to the printer's DK port (not a separate power source)
* Not all printers support the drawer kick command — consult your printer's documentation

Cannot connect from the web app

* Over the **network**, the web app reaches only Epson and Star printers (through their built-in web servers) — generic raw-network printers aren't supported in a browser; use the desktop or mobile app, or a [cloud printer](/receipts/cloud-printing.md)
* **USB and Bluetooth** printers do work on the web, but only in **Chrome or Microsoft Edge** (Safari and Firefox don't support the WebUSB / Web Bluetooth APIs)
* If your site uses HTTPS but the printer only speaks HTTP, the browser may block the connection as mixed content — the printer must use the same HTTP/HTTPS as your POS

Bluetooth printer won't connect (mobile)

* Pair the printer in your device's system Bluetooth settings before adding it in WCPOS
* Bluetooth printing supports Epson and Star printers only — Generic Bluetooth printers aren't supported
* If the printer doesn't appear in the list, tap **Scan for printers** again and make sure it's powered on and in range
