cloudt.kushkipagos.com, Kushki routes the command to the terminal identified by its serial number, and the terminal returns the result synchronously.| API | What it does |
|---|---|
| Payments API | Card payments — charge, pre-authorization, capture, void, refund, and more |
| Transaction Search | Query the full transaction history from Kushki's acquirer backend |
| Print API | Send structured receipt jobs to the terminal's thermal printer |
transaction_reference from the original charge or authorization response.transaction_type and transaction_mode determine the operation:{
"transaction_type": "charge",
"transaction_mode": "Authorization",
"client_transaction_id": "550e8400-e29b-41d4-a716-446655440000",
"amount": {
"iva": 19000,
"subtotal_iva": 100000,
"subtotal_iva0": 0
}
}amount object does not include a currency field — currency is configured at the terminal level in DMS.transaction_reference — save it alwaysrawResponse.transaction_reference. Persist this value — it is required to void, refund, capture, or re-authorize that transaction.| Country | Cutoff |
|---|---|
| Colombia 🇨🇴 | 23:59 local time |
| Card type | Maximum hold | Capture limit |
|---|---|---|
| Debit | 7 days | 110% of total authorized |
| Credit | 28 days | 110% of total authorized |
client_transaction_id (UUID v4). Reusing the same ID on a retry returns the original result without creating a duplicate.{
"from": "2026-01-01T00:00:00",
"to": "2026-01-31T23:59:59",
"page": 1,
"page_size": 50
}202 Accepted immediately and delivers the final status via webhook or polling.{
"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": "columns", "columns": [
{ "text": "Producto A", "weight": 2, "align": "LEFT" },
{ "text": "$ 30.000", "weight": 1, "align": "RIGHT" }
]},
{ "type": "divider", "dividerType": "DOTTED" },
{ "type": "columns", "columns": [
{ "text": "TOTAL", "weight": 2, "align": "LEFT" },
{ "text": "$ 30.000", "weight": 1, "align": "RIGHT" }
]},
{ "type": "text", "text": "APROBADO\n", "align": "CENTER", "size": 28, "bold": true },
{ "type": "qr", "content": "https://micomercio.co/factura/001", "dotSize": 6, "align": "CENTER" },
{ "type": "feed", "lines": 4 },
{ "type": "cut" }
]
}type | Description |
|---|---|
text | Text line — 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 pixel-precise vertical whitespace |
cut | Trigger the auto-cutter (silently ignored on cutterless terminals) |
image | Print a Base64-encoded PNG/JPG — typically for merchant logos (max 384 px wide) |
qr | Generate a QR code natively in hardware |
barcode | Generate a CODE128 barcode natively in hardware |
| Practice | Reason |
|---|---|
Always end with feed (≥ 3 lines) + cut | Ensures content clears the tear edge |
Always set printJobId | Enables idempotent retries — terminal deduplicates |
Set skipIfBusy: false for payment receipts | Prevents a busy queue from silently discarding the receipt |
Use BINARIZATION algorithm for logos | Sharper edges on monochrome thermal paper |
| Set HTTP timeout ≥ 15 s | Cloud relay adds latency before the 202 response |
Private-Credential-Id. Encode the binary digest as Base64.timestamp must be in milliseconds (13 digits). A 10-digit seconds value will be rejected.POST /terminal/v1/SN71652/sync
POST /terminal/v1/SN71652/sync/print/job
POST /terminal/v1/SN71652/sync/transaction/searchhttps://cloudt.kushkipagos.comGot a suggestion on this documentation? Contact us.