202 Accepted immediately and delivers the final status after printing completes.| Environment | Base URL |
|---|---|
| Production | https://cloudt.kushkipagos.com |
| UAT | https://uat-cloudt.kushkipagos.com |
POST /terminal/v1/{terminalSerial}/sync/print/job
POST /terminal/v1/{terminalSerial}/sync/print/job_status| Operation | Endpoint | Description |
|---|---|---|
| Create Print Job | POST /sync/print/job | Queue a print job — returns 202 Accepted immediately |
| Get Print Job Status | POST /sync/print/job_status | Poll the current status of a queued job |
{
"printJobId": "RECEIPT-20260101-001",
"webhookUrl": "https://pos.micomercio.co/webhooks/print",
"skipIfBusy": false,
"commands": [
{
"type": "text",
"text": "MI COMERCIO COLOMBIA\n",
"align": "CENTER",
"size": 32,
"bold": true
},
{
"type": "text",
"text": "NIT: 900.123.456-7\n",
"align": "CENTER",
"size": 20
},
{
"type": "divider",
"dividerType": "SOLID"
},
{
"type": "text",
"text": "Fecha: 01/01/2026 Hora: 14:32\n",
"align": "LEFT",
"size": 20
},
{
"type": "divider",
"dividerType": "DOTTED"
},
{
"type": "columns",
"columns": [
{ "text": "Producto A", "weight": 2, "align": "LEFT" },
{ "text": "$ 100.000", "weight": 1, "align": "RIGHT" }
]
},
{
"type": "divider",
"dividerType": "SOLID"
},
{
"type": "columns",
"columns": [
{ "text": "TOTAL", "weight": 2, "align": "LEFT", "bold": true },
{ "text": "$ 100.000", "weight": 1, "align": "RIGHT", "bold": true }
]
},
{
"type": "text",
"text": "APROBADO\n",
"align": "CENTER",
"size": 28,
"bold": true
},
{
"type": "qr",
"content": "https://micomercio.co/factura/001",
"dotSize": 6,
"errorLevel": "M",
"align": "CENTER"
},
{
"type": "feed",
"lines": 4
},
{
"type": "cut"
}
]
}{
"print_job_id": "RECEIPT-20260101-001",
"status": "PENDING"
}{
"print_job_id": "RECEIPT-20260101-001"
}{
"print_job_id": "RECEIPT-20260101-001",
"status": "COMPLETED"
}| Status | Description |
|---|---|
PENDING | Job queued — not yet printed |
COMPLETED | Printed successfully |
FAILED | Printing failed — check errorCode |
type | Description |
|---|---|
text | Text line — size, alignment, bold, italic, underline |
columns | Multi-column row — proportional widths, ideal for item/price lines |
divider | Full-width separator: SOLID, DOTTED, or EMPTY |
feed | Advance paper N blank lines |
space | Pixel-precise vertical whitespace |
cut | Trigger the auto-cutter |
image | Base64-encoded PNG/JPG — max 384 px wide |
qr | QR code generated natively in hardware |
barcode | CODE128 barcode generated natively in hardware |
| Practice | Reason |
|---|---|
Always end with feed (≥ 3 lines) + cut | Ensures content clears the tear edge before cutting |
Always set printJobId | Enables idempotent retries — terminal deduplicates by this ID |
Set skipIfBusy: false for payment receipts | Prevents a busy queue from discarding the receipt |
Use qr / barcode over image for codes | Native hardware generation is faster and higher density |
Use BINARIZATION algorithm for logos | Sharper edges on monochrome thermal paper |
| Set HTTP timeout ≥ 15 s | Cloud relay adds latency before the 202 response |
Got a suggestion on this documentation? Contact us.