commands array with the content to print. The terminal queues the job and returns 202 Accepted with a print_job_id.COMPLETED or FAILED) is delivered in one of two ways:webhookUrl in the request; Kushki POSTs the result when printing finishes.print_job_id.POST /terminal/v1/{terminalSerial}/sync/print/jobPOST /terminal/v1/print{
"webhookUrl": "https://yoursite.com/print/notify",
"commands": [
{
"type": "IMAGE",
"src": "data:image/png;base64,iVBORw0KGgo...",
"align": "CENTER",
"width": 200
},
{
"type": "TEXT",
"text": "MI COMERCIO CHILE",
"align": "CENTER",
"size": 32,
"bold": true
},
{
"type": "DIVIDER",
"style": "SOLID"
},
{
"type": "COLUMNS",
"columns": [
{"text": "Producto Premium", "width": 3},
{"text": "10.000", "width": 1, "align": "RIGHT"}
]
},
{
"type": "DIVIDER",
"style": "DOTTED"
},
{
"type": "COLUMNS",
"columns": [
{"text": "TOTAL", "width": 3, "bold": true},
{"text": "10.000", "width": 1, "align": "RIGHT", "bold": true}
]
},
{
"type": "FEED",
"lines": 2
},
{
"type": "QR",
"data": "https://yoursite.com/receipt/12345",
"size": 6
},
{
"type": "CUT"
}
]
}{
"print_job_id": "pj_a1b2c3d4e5f6",
"status": "PENDING"
}POST /terminal/v1/{terminalSerial}/sync/print/job_statusGET /terminal/v1/print_job?print_job_id={id}{
"print_job_status": "COMPLETED",
"print_job_id": "pj_a1b2c3d4e5f6"
}| Status | Description |
|---|---|
PENDING | Job queued — not yet printed |
COMPLETED | Job printed successfully |
FAILED | Printing failed (paper jam, out of paper, etc.) |
webhookUrl to receive the result when printing finishes. The terminal POSTs to your URL:{
"print_job_id": "pj_a1b2c3d4e5f6",
"print_job_status": "COMPLETED"
}commands array must include a type field. All type values must be sent in UPPERCASE.type | Description |
|---|---|
TEXT | Text line with size, alignment, bold, italic, underline |
COLUMNS | Multi-column row with proportional widths — ideal for item/price lines |
DIVIDER | Full-width separator: SOLID, DOTTED, or EMPTY |
FEED | Advance paper N blank lines |
SPACE | Insert precise pixel-level vertical whitespace |
CUT | Trigger the auto-cutter (silently ignored on cutterless terminals) |
IMAGE | Print a Base64-encoded PNG/JPG — typically used for logos |
QR | Generate a QR code natively in printer hardware |
BARCODE | Generate a CODE128 barcode natively in printer hardware |
TEXT parameters| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
text | string | ✅ | — | Text to print. Append \n for explicit line break |
align | LEFT | CENTER | RIGHT | — | LEFT | Horizontal alignment |
size | integer | — | 24 | Font size in px — 24 normal · 32 subtitle · 48 title |
bold | boolean | — | false | Bold text |
italic | boolean | — | false | Italic text |
underline | boolean | — | false | Underline text |
COLUMNS parameters| Parameter | Type | Required | Description |
|---|---|---|---|
columns | array | ✅ | Array of column objects |
columns[].text | string | ✅ | Column text |
columns[].width | integer | ✅ | Proportional weight (e.g. 3 and 1 = 75% / 25%) |
columns[].align | LEFT | CENTER | RIGHT | — | Column alignment |
columns[].bold | boolean | — | Bold |
IMAGE parameters| Parameter | Type | Required | Description |
|---|---|---|---|
src | string | ✅ | Base64-encoded PNG or JPG (data:image/png;base64,...) |
align | LEFT | CENTER | RIGHT | — | Image alignment |
width | integer | — | Width in pixels |
QR parameters| Parameter | Type | Required | Description |
|---|---|---|---|
data | string | ✅ | Data to encode in the QR |
align | LEFT | CENTER | RIGHT | — | Alignment |
size | integer | — | QR module size (1–8) |
BARCODE parameters| Parameter | Type | Required | Description |
|---|---|---|---|
data | string | ✅ | Data to encode (CODE128) |
align | LEFT | CENTER | RIGHT | — | Alignment |
width | integer | — | Barcode width in pixels |
height | integer | — | Barcode height in pixels |
https://cloudt.kushkipagos.com/terminal/v1/{terminalSerial}/syncGot a suggestion on this documentation? Contact us.