Receipt and ticket printer management with CloudPRNT URLs
Create a custom print job with Star Micronics Markdown.
This endpoint allows sending raw Star Micronics Markdown content directly to a printer. Use this for custom receipt formats, promotional prints, or testing.
Star Micronics Markdown Reference:
[C]- Center alignment[L]- Left alignment[R]- Right alignment[D:1]to[D:4]- Font size (1 is normal, 4 is largest)[CUT]- Cut paper---- Horizontal line
Example:
Code
Request Body
printerGroupIdID of the printer group to print to
contentStar Micronics Markdown content to print
Responses
Custom print job created successfully
statusPrint kiosk order confirmation
Print an order confirmation slip on the kiosk's printer.
Guest-facing endpoint fired by the storefront confirmation page. Resolves the purchase's kitchen dispatch and prints an order confirmation (order number + QR code) to the specified printer group.
Flow:
- Resolves
purchaseIntentId→ kitchen dispatch ID via the purchase's order. - Validates the printer group belongs to the location.
- Sends an
order_confirmationprint job to the group.
Print kiosk order confirmation › Request Body
purchaseIntentIdPurchase intent ID from the storefront payment flow
printerIdPrinter ID from qrCode.printer — resolved to its group server-side
Print kiosk order confirmation › Responses
Print job created successfully
statusPrint kiosk receipt
Auto-print an order receipt on a kiosk's attached printer.
Fired by the storefront on the confirmation page when the kiosk's QR code has a printer UUID configured. The storefront only knows the purchaseIntentId; this endpoint resolves the underlying purchase plus the printer's group and issues a targeted print job so only the kiosk's printer produces the receipt.
Flow:
- Resolves
purchase.idfrom the givenpurchaseIntentId(scoped to the location). - Resolves the printer's group (scoped to the location) so the wrong kiosk can't be targeted.
- Publishes a
purchase_receiptprint job withtargetPrinterIdset so only that physical printer picks it up. - Returns the correlation ID for tracking.
Print kiosk receipt › Request Body
purchaseIntentIdPurchase intent ID from the storefront payment flow
printerIdUUID of the kiosk-attached printer (read from qrCode.printer)
Print kiosk receipt › Responses
Print job created successfully
statusReprint a kitchen ticket for an existing order.
This endpoint reprints kitchen tickets for a kitchen dispatch (order). Items are automatically routed to the correct printer groups based on printer group item configuration.
Important: Unlike the original print, this is a reprint operation that bypasses idempotency checks. Each call will create new print jobs.
Flow:
- Fetches kitchen dispatch with items, events, and comments
- Fetches printer groups for the location
- Routes items to correct printer groups based on printer_group_items configuration
- Sends print jobs for each printer group with relevant items
Request Body
kitchenDispatchIdID of the kitchen dispatch (order) to reprint tickets for
Responses
Kitchen ticket reprint jobs created successfully
statusCreate an order confirmation print job.
This endpoint prints an order confirmation slip for a kitchen dispatch (order). Used by POS when "print order confirmation" is enabled.
Order Confirmation Contents:
- Order number (daily ordinal)
- Order date/time
- QR code for order tracking
- Table name (if applicable)
Flow:
- Validates printer group belongs to location
- Fetches kitchen dispatch data
- Sends print job to printer service via Pub/Sub
Request Body
printerGroupIdID of the printer group to print to
kitchenDispatchIdID of the kitchen dispatch (order) to print confirmation for
Responses
Order confirmation print job created successfully
statusCreate a pre-check (pro forma bill) print job for a table.
This endpoint prints a pre-check showing all items on a table's tab with totals and a payment QR code. Used when guests want to see their bill before paying.
Flow:
- Validates printer group belongs to location
- Fetches tab with all items, prices, and table info
- Generates QR code URL for payment
- Sends complete data to printer service via Pub/Sub
Request Body
printerGroupIdID of the printer group to print to
tabIdID of the tab (QR code/table) to print pre-check for
selectedKdiItemIdsOptional kitchen_dispatch_items UUIDs to restrict the pro forma to. When set, only these items (and their children) are printed; otherwise the entire unpaid tab is printed.
Responses
Pre-check print job created successfully
statusCreate a purchase receipt print job.
This endpoint fetches the purchase data from the database and sends a complete print job to the printer service via Pub/Sub. The printer service will render the receipt using the appropriate template.
Flow:
- Validates printer group belongs to location
- Fetches purchase data with line items, VAT breakdown, and location info
- Sends complete data to printer service via Pub/Sub
- Returns correlation ID for tracking
Request Body
printerGroupIdID of the printer group to print to
purchaseIdID of the purchase to print receipt for
Responses
Print job created successfully
statusCreate a refund receipt print job.
This endpoint prints a refund receipt for a completed purchase refund. Used from the merchant dashboard when staff want to print a physical refund receipt.
Flow:
- Validates printer group belongs to location
- Sends refund receipt print job to printer service via Pub/Sub
- Printer service fetches refund data and renders the receipt
- Returns correlation ID for tracking
Request Body
printerGroupIdID of the printer group to print to
purchaseRefundIdID of the purchase refund to print receipt for
Responses
Refund receipt print job created successfully
statusPrint a receipt on the Adyen terminal.
Called from the POS receipt dialog after payment completes. The actual printing is fire-and-forget — this returns 202 immediately.
Flow:
- Proxies request to payment-service
- Payment-service fetches receipt data and sends print command to terminal
- Returns 202 Accepted immediately
Request Body
purchaseIntentIdID of the purchase intent to print receipt for
terminalIdID of the Adyen terminal to print on
Responses
Terminal receipt print initiated
statusCreate a test print job.
This endpoint sends a test page to the specified printer group. Use this to verify printer connectivity and configuration.
Test Page Contents:
- Service name and timestamp
- Custom message (if provided)
- Printer configuration info
Request Body
printerGroupIdID of the printer group to send test print to
messageOptional custom message to include on the test print
Responses
Test print job created successfully
statusGet printer dashboard with summary stats and recent activity
query Parameters
locationIdLocation ID. If not provided, uses X-Location-Id header or default location.
Responses
Successfully retrieved printer dashboard
statusList all printer groups (prep groups) for a location with their printers
query Parameters
locationIdLocation ID to filter printer groups. If not provided, uses X-Location-Id header or default location.
Responses
Successfully retrieved printer groups
statusCreate a new printer group (prep group)
query Parameters
locationIdLocation ID. If not provided, uses X-Location-Id header or default location.
Request Body
nameName for the printer group
typeType of the printer group (defaults to kitchen)
colorColor for the printer group (hex code, e.g. #FF5733)
defaultItemStateDefault item state for orders routed to this prep group. Null means use location/system default.
Responses
Successfully created printer group
statusGet a printer group by ID with its printers and CloudPRNT URLs
path Parameters
printerGroupIdPrinter Group UUID
Responses
Successfully retrieved printer group
statusUpdate a printer group (prep group) name
path Parameters
printerGroupIdPrinter Group UUID
Request Body
nameNew name for the printer group
colorColor for the printer group (hex code, e.g. #FF5733). Set to null to remove.
defaultItemStateDefault item state for orders routed to this prep group. Set to null to use location/system default.
Responses
Successfully updated printer group
statusList events for a printer group
path Parameters
printerGroupIdPrinter Group UUID
query Parameters
limitNumber of events to return
offsetOffset for pagination
Responses
Successfully retrieved printer events
statusList print jobs for a printer group
path Parameters
printerGroupIdPrinter Group UUID
query Parameters
limitNumber of jobs to return
offsetOffset for pagination
startDateFilter jobs created at or after this ISO 8601 datetime
endDateFilter jobs created at or before this ISO 8601 datetime
Responses
Successfully retrieved print jobs
statusGet a single print job by ID with its events timeline
path Parameters
printerGroupIdPrinter Group UUID
jobIdPrint Job UUID
Responses
Successfully retrieved print job with events
statusAdd a printer to an existing printer group
path Parameters
printerGroupIdPrinter Group UUID
Request Body
typeHardware type of the printer
terminalIdTerminal ID for terminal printers (v400m, v400cplus, s1f2)
Responses
Successfully added printer to group
statusList all printers for a location with CloudPRNT URLs
query Parameters
locationIdLocation ID to filter printers. If not provided, uses X-Location-Id header or default location.
Responses
Successfully retrieved printers
statusCreate a new printer (optionally assign to a printer group)
query Parameters
locationIdLocation ID. If not provided, uses X-Location-Id header or default location.
Request Body
typePrinter hardware model/type
printerGroupIdOptional ID of the printer group to add this printer to. If not provided, printer will be created without a group (storage state).
nameOptional name for the printer
terminalIdTerminal ID for terminal printers (v400m, v400cplus, s1f2)
Responses
Successfully created printer
statusGet a single printer by ID
path Parameters
printerIdPrinter UUID
query Parameters
locationIdLocation ID for access verification. If not provided, uses X-Location-Id header or default location.
Responses
Successfully retrieved printer
statusUpdate a printer (e.g. reassign to a different printer group)
path Parameters
printerIdPrinter UUID
Request Body
nameNew name for the printer
typePrinter hardware model/type
printerGroupIdID of the printer group to assign this printer to
Responses
Successfully updated printer
statusList events for a single printer (online, offline, created, deleted)
path Parameters
printerIdPrinter UUID
query Parameters
limitNumber of events to return
offsetOffset for pagination
Responses
Successfully retrieved printer events
statusSet which printer groups a printer belongs to (replaces all memberships)
path Parameters
printerIdPrinter UUID
Request Body
printerGroupIdsPrimary prep group UUIDs the printer prints for. Empty array removes all primary memberships.
secondaryPrinterGroupIdsOptional. Prep groups this printer is a ride-along ("secondary") member of. When the printer fires a primary print, items from these groups in the same kitchen dispatch are appended in smaller font. Secondary memberships never trigger a print on their own and may not overlap with primary IDs.
Responses
Successfully set printer groups
statusRemove a printer from a specific printer group
path Parameters
printerIdPrinter UUID
printerGroupIdPrinter Group UUID to remove the printer from
Responses
Successfully removed printer from group
statusWebhook: Printer flow updated
Fired when a printer flow changes. printer-service subscribes to invalidate its in-memory cache.
This is an outbound webhook event. Karma POSTs this payload to the URL you registered via POST /api/v1/webhooks/subscriptions. Your endpoint should respond 2xx within 30 seconds to acknowledge delivery.
Webhook: Printer flow updated › Request Body
idUnique webhook delivery ID
eventresourceresourceIdString ID of the affected resource
timestampISO 8601 timestamp when the event was emitted
apiVersionWebhook: Printer flow updated › Responses
Acknowledged. Karma considers any 2xx response a successful delivery; non-2xx triggers retry with exponential backoff.
Webhook: Printer flow deleted
Fired when a printer flow is removed.
This is an outbound webhook event. Karma POSTs this payload to the URL you registered via POST /api/v1/webhooks/subscriptions. Your endpoint should respond 2xx within 30 seconds to acknowledge delivery.
Webhook: Printer flow deleted › Request Body
idUnique webhook delivery ID
eventresourceresourceIdString ID of the affected resource
timestampISO 8601 timestamp when the event was emitted
apiVersionWebhook: Printer flow deleted › Responses
Acknowledged. Karma considers any 2xx response a successful delivery; non-2xx triggers retry with exponential backoff.