Skip to content

Printers

Overview

Printers are used to print order receipts, kitchen tickets, and customer receipts. Configure receipt printers for different purposes and locations.

Key Purpose: Configure and manage receipt printers.

Purpose

This page lets you add, configure, and manage receipt and kitchen printers so that order tickets and customer receipts are automatically routed to the correct device at each location.

Key Concepts

  • Printer Type: Printers are classified as receipt (customer-facing thermal receipts), kitchen (order preparation tickets), or label (packaging labels), and this type determines what content is printed.
  • Connection Type: Printers connect via USB, network (IP/Ethernet), Bluetooth, or cloud; network printers require a valid IP address and default to port 9100.
  • Category Routing: Kitchen printers can be assigned specific menu categories so that only items from those categories are printed on that device, enabling station-based ticket splitting.
  • Star Micronics Cloud Integration: Cloud printers authenticate via Star Micronics using OAuth 2.0 with PKCE, granting scopes for printer configuration, device management, and receipt printing.
  • Printer Token: Unlike kiosk and KDS devices that use activation codes, printer devices receive a secure token at creation time for authentication.

Actions

Add a Printer

Create a new printer device, specifying its name, type, connection method, location, and paper width; the system generates a secure token automatically for authentication.

Configure Category Routing

Assign specific menu categories to a kitchen printer so that only items belonging to those categories appear on its tickets, enabling multi-station kitchen workflows.

Connect a Star Micronics Cloud Printer

Initiate the OAuth 2.0 authorization flow with Star Micronics Cloud, complete the callback to obtain access tokens, and link the cloud printer to a location.

Assign a Printer Profile

Link a printer profile to the device to control receipt layout options such as logo printing, auto-cut behavior, and number of copies.

Location

  • Backoffice Route: /devices/printers
  • Backend Controller: app/Http/Controllers/Api/PrinterController.php
  • Vue Component: src/views/devices/printers/index.vue

Fields

Printer Name

PropertyValue
Field IDname
LabelPrinter Name
TypeText
RequiredYes
Validationmax: 50 characters

Description: Identifier for this printer.

Examples:

  • "Kitchen Printer"
  • "Receipt Printer - Counter"
  • "Bar Printer"
  • "Kiosk Receipt"

Printer Type

PropertyValue
Field IDtype
LabelPrinter Type
TypeSelect
Optionsreceipt, kitchen, label
Defaultreceipt

Description: Type of printer and its purpose.

Types:

  • Receipt: Customer receipts (thermal)
  • Kitchen: Kitchen order tickets
  • Label: Label printing (for packaging)

Connection Type

PropertyValue
Field IDconnection_type
LabelConnection
TypeSelect
Optionsusb, network, bluetooth, cloud
RequiredYes

Description: How the printer connects.

Options:

  • USB: Direct USB connection to device
  • Network: IP/Ethernet connection
  • Bluetooth: Bluetooth connection
  • Cloud: Cloud printing service

IP Address

PropertyValue
Field IDip_address
LabelIP Address
TypeText
RequiredYes (if network)
ValidationValid IP address
Depends Onconnection_type = network

Description: Network IP address of the printer.

Examples:

  • "192.168.1.100"
  • "10.0.0.50"

Port

PropertyValue
Field IDport
LabelPort
TypeNumber
Default9100
RequiredNo
Depends Onconnection_type = network

Description: Network port for printer communication.


Assigned Location

PropertyValue
Field IDlocation_id
LabelLocation
TypeSelect
RequiredYes

Description: Which location this printer belongs to.


PropertyValue
Field IDcategory_ids
LabelCategories
TypeMulti-select
RequiredNo
DefaultAll categories

Description: Which menu categories print to this printer (for kitchen routing).

Use Cases:

  • Grill printer: Only burger/steak categories
  • Bar printer: Only drinks category
  • Main kitchen: All food categories

Paper Width

PropertyValue
Field IDpaper_width
LabelPaper Width
TypeSelect
Options58mm, 80mm
Default80mm

Description: Width of thermal paper roll.


Auto-Cut

PropertyValue
Field IDauto_cut
LabelAuto-Cut Paper
TypeToggle
Defaulttrue

Description: Automatically cut paper after printing.


PropertyValue
Field IDprint_logo
LabelPrint Logo
TypeToggle
Defaulttrue

Description: Include logo on receipts.


Copies

PropertyValue
Field IDcopies
LabelNumber of Copies
TypeNumber
Default1
Validationmin: 1, max: 5

Description: Number of copies to print.


Enabled

PropertyValue
Field IDenabled
LabelEnabled
TypeToggle
Defaulttrue

Description: Whether this printer is active.


Customer Receipt

Printed after successful payment.

Contents:

  • Logo
  • Business name & address
  • Order number
  • Date/time
  • Items with prices
  • Modifiers
  • Subtotal
  • Discounts
  • Tax breakdown
  • Total
  • Payment method
  • VAT number

Kitchen Ticket

Printed for kitchen preparation.

Contents:

  • Order number (large)
  • Time
  • Channel (Online, Kiosk, etc.)
  • Dining option (Pickup, Delivery, Dine-in)
  • Items with modifiers
  • Special instructions
  • Customer name (for pickup)

Order Summary

Summary ticket for expo/assembly.

Contents:

  • Order number
  • All items
  • Delivery/pickup info
  • Customer details

Business Logic

Order confirmed


For each printer at location:
├── Is printer enabled? No → Skip

├── Is printer type = receipt?
│   └── Print customer receipt

├── Is printer type = kitchen?
│   └── For each item in order:
│       ├── Item category in printer categories?
│       │   └── Yes → Add to print job
│       └── No → Skip item
│   └── Print kitchen ticket (if items)

└── Continue to next printer

Category Routing Example

Order: Burger, Fries, Beer, Dessert

Kitchen Printer (categories: Burgers, Sides, Desserts):
- Prints: Burger, Fries, Dessert

Bar Printer (categories: Drinks):
- Prints: Beer

Receipt Printer:
- Prints: Full order receipt

Customer Impact

Receipt Quality

  • Clear, readable receipts
  • Logo for branding
  • All order details
  • Tax compliance info

Kitchen Efficiency

  • Orders routed to correct stations
  • Clear item display
  • Special instructions visible

Relations

Depends On

  • Locations: Printers assigned to locations
  • Categories: For kitchen routing

Affects

  • Transactions: Receipts printed
  • KDS: Alternative to digital display
  • Kiosk: Receipt printing

Business Rules

  • Printer devices do not require a Stripe subscription, unlike kiosk and KDS devices; they are created with a secure token instead of an activation code.
  • When an order is confirmed, the system iterates over all enabled printers at the location: receipt-type printers produce a full customer receipt, while kitchen-type printers only print items whose categories match the printer's assigned categories.
  • Star Micronics cloud OAuth tokens are cached for 10 minutes during the PKCE authorization flow; if the callback is not completed within that window, authorization must be restarted.
  • Each printer must be assigned to exactly one location; the location determines which orders are routed to that printer.
  • A kitchen printer with no categories assigned (empty list) receives tickets for all items in every order at its location, acting as a catch-all station printer.

FAQs

  • "How do I split kitchen tickets across multiple printers?" Assign different menu categories to each kitchen printer; the system will automatically route only the relevant items to each device per order.
  • "What is the difference between a printer token and an activation code?" Printers use a one-time secure token generated at creation for authentication, while kiosk and KDS devices use a short-lived activation code that must be entered on the physical device.
  • "Can I use a cloud printer without Star Micronics?" Currently the cloud printing integration is specifically built for Star Micronics Cloud; other cloud printing providers are not supported.
  • "Why does my kitchen printer print every item?" If no specific categories are assigned to the printer, it defaults to printing all categories; assign only the relevant categories to restrict the output.
  • "How many copies can a printer produce per order?" The copies setting supports 1 to 5 copies per print job; this is validated on save and defaults to 1.

Troubleshooting

Problem: Printer not printing

Causes:

  1. Printer offline/disconnected
  2. Wrong IP address
  3. Paper out
  4. Printer disabled

Solutions:

  1. Check printer power and connection
  2. Verify IP address
  3. Refill paper
  4. Enable printer in settings

Problem: Partial printing (cut off)

Causes:

  1. Wrong paper width setting
  2. Content too wide
  3. Printer malfunction

Solutions:

  1. Set correct paper width (58mm/80mm)
  2. Adjust receipt template
  3. Test printer hardware

Problem: Kitchen tickets going to wrong printer

Causes:

  1. Category routing incorrect
  2. Multiple printers with same categories
  3. Printer assignment wrong

Solutions:

  1. Review category assignments
  2. Make categories exclusive
  3. Check printer location assignment

Problem: Logo not printing

Causes:

  1. Print logo disabled
  2. Logo not uploaded
  3. Logo format incompatible

Solutions:

  1. Enable print logo setting
  2. Upload logo in branding
  3. Use compatible format (BMP, PNG)

Examples

Single Printer Setup

json
{
  "printers": [
    {
      "name": "Main Printer",
      "type": "receipt",
      "connection_type": "network",
      "ip_address": "192.168.1.100",
      "port": 9100,
      "location_id": "loc-123",
      "paper_width": "80mm",
      "auto_cut": true,
      "print_logo": true,
      "copies": 1,
      "enabled": true
    }
  ]
}

Multi-Printer Kitchen Setup

json
{
  "printers": [
    {
      "name": "Receipt Printer",
      "type": "receipt",
      "connection_type": "network",
      "ip_address": "192.168.1.100",
      "category_ids": [],
      "enabled": true
    },
    {
      "name": "Grill Station",
      "type": "kitchen",
      "connection_type": "network",
      "ip_address": "192.168.1.101",
      "category_ids": ["burgers", "steaks", "chicken"],
      "copies": 1,
      "enabled": true
    },
    {
      "name": "Fryer Station",
      "type": "kitchen",
      "connection_type": "network",
      "ip_address": "192.168.1.102",
      "category_ids": ["fries", "appetizers"],
      "copies": 1,
      "enabled": true
    },
    {
      "name": "Bar",
      "type": "kitchen",
      "connection_type": "network",
      "ip_address": "192.168.1.103",
      "category_ids": ["drinks", "cocktails"],
      "copies": 1,
      "enabled": true
    }
  ]
}

Kiosk with Printer

json
{
  "kiosk": {
    "name": "Kiosk 1",
    "printer_id": "printer-kiosk-1"
  },
  "printer": {
    "name": "Kiosk 1 Receipt",
    "type": "receipt",
    "connection_type": "usb",
    "paper_width": "80mm",
    "auto_cut": true,
    "print_logo": true
  }
}

Receipt Template

        [LOGO]
    
    MARIO'S RESTAURANT
    123 Main Street
    Amsterdam, 1012 AB
    Tel: +31 20 123 4567
    
    ─────────────────────────
    Order #1234
    15 Jan 2024 12:45
    ─────────────────────────
    
    1x Margherita Pizza    €12.50
       - Large             +€3.00
    1x Garlic Bread         €4.50
    2x Cola                 €5.00
    
    ─────────────────────────
    Subtotal              €25.00
    Delivery Fee           €3.50
    ─────────────────────────
    VAT 9%                 €2.36
    ─────────────────────────
    TOTAL                 €30.86
    ─────────────────────────
    
    Paid: iDEAL
    
    VAT Nr: NL123456789B01
    
    Thank you for your order!