---
title: "Print ESC/POS receipts from an application"
description: "Send prepared ESC/POS receipt data from a POS, ecommerce or business application to a compatible local receipt printer."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">CloudPrint Documentation</a><span aria-hidden="true">/</span><span>Printing workflows</span></nav>

# Print ESC/POS receipts from an application

<p class="docs-lead">CloudPrint can deliver prepared ESC/POS data from a POS, ecommerce or business application to a compatible local receipt printer. It transports the print commands and reports the job status; it does not register a sale, operate a fiscal device or create a legally compliant fiscal receipt.</p>

## Separate receipt layout from fiscalization

Build the receipt data only after the sales or order system has completed the business operation. If local law requires a fiscal device, registration, signature or tax reporting, complete that process in the certified fiscal system. CloudPrint may print a prepared customer or service receipt, but it is not a fiscalization service.

## Prepare ESC/POS bytes in your application

Generate the text, barcode, QR code, feeds and cuts supported by the target model. Test character encoding, code page and the real 58 mm or 80 mm paper width. CloudPrint passes the byte stream through; it does not rewrite commands or repair unsupported characters.

## Declare and validate the language

Upload the payload with `document_format=raw` and `document_raw_language=escpos`. Before creating the job, call `GET /api/v1/printers` and confirm that the selected queue advertises `escpos` in `capabilities.language_profiles` and has RAW passthrough available.

## Assign the correct receipt printer

Store the stable `printer_id` for each till, service counter or kitchen station. If one order produces several documents, model each destination explicitly. Never choose by queue name alone and never reroute a customer receipt to another location without an operator decision.

## Prevent duplicate receipts

Use one `Idempotency-Key` per intended output and persist the returned `print_job_id`. Follow the status to `printed`, `failed` or `cancelled`. A timeout retry reuses the same key and payload; a deliberate second copy is a new, auditable reprint.

## Next steps

<div class="docs-card-grid"><a class="docs-card" href="/docs/guides/print-formats/"><strong>PDF and RAW printer languages</strong><span>Choose PDF or an explicit RAW language—ZPL, TSPL, CPCL or ESC/POS—and route each job only to a compatible printer.</span></a>
<a class="docs-card" href="/docs/api/documents/"><strong>Upload PDF and RAW documents</strong><span>Choose multipart upload, a public HTTPS URL or Base64, and prepare PDF or RAW printer-language data for CloudPrint.</span></a>
<a class="docs-card" href="/docs/api/print-jobs/"><strong>Create and track CloudPrint print jobs</strong><span>Create idempotent print jobs, validate printer options and follow each job safely until it is printed or fails.</span></a></div>

<nav class="docs-resource-links" aria-label="Next steps"><a href="https://cloudprint.me/status/">Service status</a><a href="/docs/api/v1/explorer/">OpenAPI</a><a href="https://developer.cloudprint.me">Developer Portal</a><a href="https://my.cloudprint.me">Open account</a><a href="/docs/legal/privacy/">Privacy Policy</a><a href="/docs/legal/terms/">Terms</a><a href="/docs/legal/data-processing/">DPA</a><a href="/docs/legal/service-level-agreement/">Service Level Agreement</a></nav>