1. Print
  • API Docs Chile 🇨🇱
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Create payment (tokenless)
      • Make a charge or deferred charge
      • 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 V2
      • Bin Info
      • Voucher
    • One-Click & Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Update recurring charge card data
      • Make an One-click payment
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Card Async
      • Request a card async token
      • Init Transaction
      • Authorize payments
      • Capture an authorized payment
      • Get Status
    • Async Card Recurring Charges
      • Request an async card recurring charge token
      • Init an async card recurring charge
      • Authorize payments
      • Capture an authorized payment
    • 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
    • Smartlinks V2
      • Create a Smartlink
      • Get a Smartlink
      • Delete a smartlink
      • Update a Smartlink
    • Payment Button
      • Create a payment button
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Status
      • Get platform status
      • Get gateway status
    • Subscription Transactions
      • Get subscription transactions
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Update credential
      • Regenerate a credential
      • Delete credential
      • Activate or deactivate
      • Advanced search
    • Settlement
      • Query settlement
  • API Raw Card Present Payments
    • Release Notes
    • Error Catalog
    • Test Data
    • Key Exchange Process
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
      • Void & Reverse
    • Card information
      • Get BIN Info
      • Bin Info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search
      • Print
        • Create Print Job
          POST
        • Get Print Job Status
          POST
    • Local Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search — Online
        • Transaction Search — Local
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • 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
    • documentType
    • Amount-cash-in
    • amount
    • Card
    • ChargebackListResponse
    • Channel
    • StatusComponent
    • SubscriptionTransactionsResponse
    • SettlementDateRangeRequest
    • AmountWithTaxes
    • PrintJobRequest
    • networkToken
    • extra_taxes
    • ChargebackItem
    • SubscriptionTransaction
    • SettlementTicketRequest
    • AmountCore
    • CommandText
    • webhooks
    • card
    • Amount-CL
    • webhooksItem
    • ErrorResponse400
    • SettlementResponse
    • ExtraTaxes
    • CommandColumns
    • headers
    • currency
    • Amount
    • card_details
    • ErrorResponse401
    • SettlementRecord
    • ColumnItem
    • Metadata
    • transactionType
    • enc_tlv
    • ErrorResponse403
    • ErrorResponse
    • TransactionResponse
    • CommandDivider
    • extraTaxes
    • Country
    • binInfo
    • Deferred
    • deferred
    • ErrorResponse500
    • payment_method
    • RawResponse
    • CommandFeed
    • SubscriptionUpdate
    • pos_details
    • CardData
    • CommandSpace
    • ContactDetails
    • Language
    • contact_details
    • sub_merchant
    • AmountWithTip
    • CommandCut
    • Subscription
    • metadata
    • LinkFailure
    • CommandImage
    • orderDetails
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • PrinterError
    • product
    • PrintJobStatus
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • PrintWebhookPayload
    • webhooksChargeback
    • citMit
    • network
    • messageFields
    • UnexpectedErrorResponse
    • ExternalReferenceId
    • ExternalSubscriptionId
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Print

Create Print Job

POST
/terminal/v1/{terminalSerial}/sync/print/job

🚧 Beta — Early Access#

This API is in early access. Endpoints, parameters, and response structures
may change without prior notice. Do not deploy to production without
coordinating with the Kushki integration team.
Queues a print job to the target terminal's thermal printer via Cloud relay.
Returns 202 Accepted with a PENDING status immediately.
The final result (COMPLETED or FAILED) is delivered via:
Webhook push: supply webhookUrl in the request.
Status polling: call POST .../print/job_status?print_job_id={id}.

Command Types#

The commands array contains polymorphic objects. The type property
(required on every object) determines its behavior. All enum values must be
sent in UPPERCASE.
typeDescription
textText line with configurable size, alignment, bold, italic, and underline.
columnsMulti-column row with proportional widths — ideal for item/price lines.
dividerFull-width separator: SOLID, DOTTED, or EMPTY.
feedAdvance paper N blank lines.
spaceInsert precise pixel-level vertical whitespace.
cutTrigger the auto-cutter. Silently ignored on cutterless terminals.
imagePrint a Base64-encoded PNG/JPG — typically used for merchant logos.
qrGenerate a QR code natively in printer hardware.
barcodeGenerate a CODE128 barcode natively in printer hardware.

text — Text Line#

Prints a line or paragraph of text with full format control.
Append \n to the text field to force an explicit line break.
ParameterTypeRequiredDefaultDescription
textString✅—Text to print.
alignLEFT | CENTER | RIGHT❌LEFTHorizontal alignment.
sizeInteger❌24Font size in px. Reference: 24 normal · 32 subtitle · 48 title.
boldBoolean❌falseBold.
italicBoolean❌falseItalic.
underlineBoolean❌falseUnderline.
{
  "type": "text",
  "text": "RESTAURANT EL BUEN SABOR\n",
  "align": "CENTER",
  "size": 32,
  "bold": true
}

columns — Multi-Column Row#

Prints text in proportional columns on a single paper line.
The weight field controls the relative width of each column.
Field (per column)TypeRequiredDefaultDescription
textString✅—Cell text.
weightInteger❌1Relative width. Weights 2 and 1 give the first column 2/3 of the paper.
alignLEFT | CENTER | RIGHT❌LEFTAlignment within the cell.
{
  "type": "columns",
  "columns": [
    { "text": "2x Combo Burger", "weight": 2, "align": "LEFT" },
    { "text": "$30.00",          "weight": 1, "align": "RIGHT" }
  ]
}

divider — Separator Line#

Prints a full-width horizontal rule. Use it to delimit receipt sections
(header, items, totals).
ParameterTypeRequiredDefaultDescription
dividerTypeSOLID | DOTTED | EMPTY❌EMPTYLine style.
offsetInteger❌10Extra space in px before the separator.
{ "type": "divider", "dividerType": "DOTTED", "offset": 10 }

feed — Paper Advance#

Advances the paper N blank lines. Always use before cut to fully expose
the printed content past the tear edge.
ParameterTypeRequiredDefaultDescription
linesInteger❌1Number of blank lines to advance.
{ "type": "feed", "lines": 3 }

space — Pixel-Precise Spacing#

Inserts vertical whitespace with pixel precision. More granular than feed
for fine adjustments between receipt elements.
ParameterTypeRequiredDefaultDescription
pixelsInteger❌10Pixels of blank space to insert.
{ "type": "space", "pixels": 20 }

cut — Paper Cut#

Triggers the hardware auto-cutter. No additional parameters.
On cutterless terminals (e.g., Sunmi V2) the command is silently ignored.
{ "type": "cut" }

image — Base64 Image#

Prints a PNG or JPG sent as Base64. Typically used for the merchant logo
in the receipt header.
ParameterTypeRequiredDefaultDescription
base64ImageString✅—Raw Base64 string. Do not include the data:image/...;base64, prefix.
alignLEFT | CENTER | RIGHT❌CENTERImage alignment.
widthInteger❌—Max width in px. Sunmi P3 / P2 SE support up to 384 px.
algorithmBINARIZATION | DITHERING❌DITHERINGBINARIZATION: maximum sharpness for logos. DITHERING: simulates grayscale for photos.
Send only the raw Base64 string. Including the data:image/png;base64,
prefix will cause the image to fail silently.
{
  "type": "image",
  "base64Image": "iVBORw0KGgoAAAANSUhEUgAAAAo...",
  "align": "CENTER",
  "width": 384,
  "algorithm": "BINARIZATION"
}

qr — QR Code#

Generates a QR code natively in printer hardware from a content string —
no image rendering required. Faster and higher-density than sending a
pre-rendered bitmap.
ParameterTypeRequiredDefaultDescription
contentString✅—URL or text to encode.
dotSizeInteger❌8Size in px of each QR module. Affects the total code size.
errorLevelL | M | Q | H❌LError correction: L=7% · M=15% · Q=25% · H=30%.
alignLEFT | CENTER | RIGHT❌CENTERHorizontal alignment.
{
  "type": "qr",
  "content": "https://yourstore.com/receipt/4421",
  "dotSize": 6,
  "errorLevel": "M",
  "align": "CENTER"
}

barcode — CODE128 Barcode#

Generates a 1D barcode natively in hardware. Format: CODE128.
ParameterTypeRequiredDefaultDescription
contentString✅—Data to encode (e.g., UPC, invoice number).
alignLEFT | CENTER | RIGHT❌CENTERHorizontal alignment.
widthInteger❌3Width of each vertical bar in points.
heightInteger❌162Total barcode height in px.
{
  "type": "barcode",
  "content": "A-1234567890",
  "align": "CENTER",
  "width": 2,
  "height": 162
}

Idempotency#

Reuse the same printJobId on retries to prevent duplicate prints.
The terminal deduplicates by printJobId.

Request

Path Params

Body Params application/jsonRequired

Examples

Responses

🟢202
application/json
Print job queued. Terminal will process asynchronously.
Bodyapplication/json

🟠400
🟠401
🟠409
🔴500
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location 'https://api-uat.kushkipagos.com/terminal/v1//sync/print/job' \
--header 'Content-Type: application/json' \
--data '{
    "printJobId": "CUST-TICKET-001",
    "commands": [
        {
            "type": "text",
            "text": "RECIBO DE PAGO\n",
            "align": "CENTER",
            "size": 28,
            "bold": true
        },
        {
            "type": "feed",
            "lines": 3
        },
        {
            "type": "cut"
        }
    ]
}'
Response Response Example
202 - default
{
    "printJobId": "CUST-TICKET-001",
    "status": "PENDING",
    "message": "Impresión encolada correctamente."
}
Modified at 2026-06-09 20:34:29
Previous
Print
Next
Get Print Job Status
Built with