1. Cloud Services
  • API Docs Colombia 🇨🇴
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Void a transaction
      • Refund a transaction
      • Request deferred options
      • Authorize payments
      • Preauthorization (tokenless)
      • Reauthorize payments
      • Capture an authorized payment
      • Verify Account
      • Validate OTP
      • Bin Info
      • BIN info V2
    • One-Click & Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Make an One-click payment
      • Update recurring charge card data
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Transfer in
      • Get Bank List
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Transfer out
      • Get Bank List
      • Get Bank List V2
      • Request a Transfer Out token
      • Init Transaction
      • Get Status
      • Balance for Payouts
    • CASH-IN
      • Request a cash in token
      • Init Transaction
      • Transaction Status
      • Delete a cash in transaction
      • Update a cash in transaction
    • Cash-out
      • Request a cash out token
      • Init Transaction
      • Transaction Status
      • Update a cash out transaction
      • Delete a cash out transaction
    • Smartlinks-v2
      • Create a Smartlink
      • Get a Smartlink
      • Update a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Gateway-status
      • Get gateway status
      • Get platform status
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Advanced search
      • Delete credential
      • Regenerate a credential
      • Activate or deactivate
      • Update credential
    • Payment Button
      • Create a payment button
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search — Online
        • Transaction Search — Local
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • API RAW CARD PRESENT PAYMENTS
    • Release Notes
    • Error Catalog
    • The Amount Object
    • Key Exchange Process
    • Test data
    • Card Information
      • Get BIN Info
      • Balance inquiries
      • BIN info V2
      • Request deferred options
    • One-time Payments
      • Single payment
    • Two-step Payments
      • Authorization and capture
    • Voids & Refunds
      • Void & Reverse
      • Refund a transaction
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good Practices
      • Webhooks-Card Payments
      • Webhooks-Refunds
      • Check your webhooks
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • SubscriptionTransactionsResponse
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • SettlementDateRangeRequest
    • AmountWithTaxes
    • PrintJobRequest
    • card
    • SubscriptionTransaction
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • AmountCore
    • CommandText
    • amount
    • ErrorResponse
    • currency
    • webhooksItem
    • ErrorResponse400
    • SettlementResponse
    • ExtraTaxes
    • CommandColumns
    • extra_taxes
    • Amount
    • ErrorResponse401
    • SettlementRecord
    • ColumnItem
    • pos_details
    • extraTaxes
    • ErrorResponse403
    • TransactionResponse
    • CommandDivider
    • card_details
    • Deferred
    • Country
    • payment_method
    • ErrorResponse500
    • RawResponse
    • CommandFeed
    • enc_tlv
    • Metadata
    • CardData
    • CommandSpace
    • contact_details
    • ContactDetails
    • AmountWithTip
    • CommandCut
    • deferred
    • sub_merchant
    • documentType
    • Subscription
    • LinkFailure
    • CommandImage
    • metadata
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • PrinterError
    • product
    • SubscriptionUpdate
    • PrintJobStatus
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • PrintWebhookPayload
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • transactionType
    • ExternalReferenceId
    • ExternalSubscriptionId
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
  1. Cloud Services

Print

The Print API (Cloud) lets your POS control the thermal printer on the SmartPOS terminal through Kushki's cloud relay. You send an ordered array of print commands, the terminal executes them, and reports the result via webhook or polling.
Print jobs are asynchronous — the terminal returns 202 Accepted immediately and delivers the final status after printing completes.
Beta — Early Access
The Print API is in Beta for Colombia 🇨🇴. Do not deploy to production without coordinating with the Kushki integration team.

Base URL and endpoint pattern#

EnvironmentBase URL
Productionhttps://cloudt.kushkipagos.com
UAThttps://uat-cloudt.kushkipagos.com
POST /terminal/v1/{terminalSerial}/sync/print/job
POST /terminal/v1/{terminalSerial}/sync/print/job_status

Authentication#


Available operations#

OperationEndpointDescription
Create Print JobPOST /sync/print/jobQueue a print job — returns 202 Accepted immediately
Get Print Job StatusPOST /sync/print/job_statusPoll the current status of a queued job

Create Print Job#

Request#

{
  "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"
    }
  ]
}

Response#

{
  "print_job_id": "RECEIPT-20260101-001",
  "status": "PENDING"
}

Get Print Job Status#

Request#

{
  "print_job_id": "RECEIPT-20260101-001"
}

Response#

{
  "print_job_id": "RECEIPT-20260101-001",
  "status": "COMPLETED"
}
StatusDescription
PENDINGJob queued — not yet printed
COMPLETEDPrinted successfully
FAILEDPrinting failed — check errorCode

Command types#

typeDescription
textText line — size, alignment, bold, italic, underline
columnsMulti-column row — proportional widths, ideal for item/price lines
dividerFull-width separator: SOLID, DOTTED, or EMPTY
feedAdvance paper N blank lines
spacePixel-precise vertical whitespace
cutTrigger the auto-cutter
imageBase64-encoded PNG/JPG — max 384 px wide
qrQR code generated natively in hardware
barcodeCODE128 barcode generated natively in hardware

Best practices#

PracticeReason
Always end with feed (≥ 3 lines) + cutEnsures content clears the tear edge before cutting
Always set printJobIdEnables idempotent retries — terminal deduplicates by this ID
Set skipIfBusy: false for payment receiptsPrevents a busy queue from discarding the receipt
Use qr / barcode over image for codesNative hardware generation is faster and higher density
Use BINARIZATION algorithm for logosSharper edges on monochrome thermal paper
Set HTTP timeout ≥ 15 sCloud relay adds latency before the 202 response

Got a suggestion on this documentation? Contact us.
Modified at 2026-06-10 19:43:15
Previous
Transaction Search
Next
Create Print Job
Built with