1. Print Cloud
  • API Docs Peru 🇵🇪
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Preauthorization (tokenless)
      • Create payment (tokenless)
      • Void a transaction
      • Refund a transaction
      • Verify Account
      • Request deferred options
      • Authorize payments
      • Reauthorize payments
      • Capture an authorized payment
      • Validate OTP
      • Bin Info V2
      • Bin Info
    • 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 Out
      • Get Card Payout Token
      • Get Subscription Token
      • Push funds
      • Push Funds in subscriptions
      • Get transaction status
      • Delete Subscription
    • 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
      • Update a Smartlink
      • Get a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Gateway Status
      • Get gateway status
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Advanced search
      • Activate or deactivate
      • Delete credential
      • Update credential
      • Regenerate a credential
    • Payment Button
      • Create a payment button
    • Platform Status
      • Get platform status
    • Subscription Transactions
      • Get subscription transactions
    • Settlement
      • Query settlement
  • Card Present Payments (API Raw)
    • Release notes
    • Key Exchange Process
    • Test data
    • Kushki Error Catalog for POS transactions
    • The Amount Object
    • 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
      • Balance inquiries
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
  • Kushki One
    • Cloud Services
      • Payment Cloud
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print Cloud
        • Create Print Job
          POST
        • Get Print Job Status
          POST
    • Local Services
      • Payment Local
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Transaction Search — Local
        • Transaction Search — Online
        • Abort
      • Print Local
        • 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
  • Raíz
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • Amount-cash-in
      • GetConfigurationRequest
    • Identity & Contact
      • Shipping Address
    • Card & Payments
      • ChargesVoidCardResponse
      • Promotions
      • Submerchant
    • Subscriptions
      • SubscriptionUpdate
      • SubscriptionAdjustmentRequest
      • SubscriptionTransactionsResponse
    • Webhooks
    • Analytics
      • AnalyticsTransactionItem
      • AnalyticsListResponse
    • Settlement
      • SettlementDateRangeRequest
      • SettlementTicketRequest
      • SettlementResponse
    • Chargebacks
      • ChargebackListResponse
      • ChargebackSearchRequest
    • Cash
      • CashChargeInitRequest
      • CashStatusResponse
    • Transfer
      • TransferTokenRequest
      • TransferInitRequest
      • TransferStatusResponse
    • Payouts
      • PayoutsWebhooksItem
    • Smart Link
      • SmartLinkAmount
    • Terminal
      • AmountWithTaxes
      • AmountCore
      • AmountWithTip
      • TerminalCardDetails
      • TerminalPosDetails
      • TerminalContactDetails
      • TerminalCardData
      • TransactionResponse
      • LinkFailure
      • TransactionSearchRequest
      • PrintJobRequest
      • PrinterError
      • PrintJobStatus
      • PrintWebhookPayload
    • RequestBodies
      • one-and-two-step-payment
    • currency
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • card-old
    • AmountWithTaxes-old
    • Card
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SettlementTicketRequest
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • networkToken
    • Language
    • extra_taxes
    • card_details
    • currency
    • ErrorResponse400-old
    • webhooksItem
    • ErrorResponse
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • currency
    • card
    • orderDetails-old
    • Country
    • ContactDetails-old
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • Amount
    • amount
    • documentType
    • extraTaxes-old
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • extraTaxes
    • enc_tlv
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • Deferred
    • pos_details
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • paymentMethod-old
    • Metadata
    • contact_details
    • Billing-Address-old
    • Deferred-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • ContactDetails
    • sub_merchant
    • headers
    • Amount-old
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • metadata
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • messageFields
    • PrinterError-old
    • Billing Address
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • currency-cash-in-old
    • product
    • webhooks
    • networkToken-old
    • PrintWebhookPayload-old
    • currency-CL-old
    • threeDomainSecure
    • webhooks
    • product-old
    • headers
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • citMit
    • network
    • Card-old-old
    • Submerchant-old
    • binInfo
    • Shipping-Address-old
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • transactionType
    • InvalidBinResponse-old
    • GetConfigurationRequest-old
    • BadRequestResponse-old
    • Amount-CL-old
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Print Cloud

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-02 16:29:32
Previous
Print Cloud
Next
Get Print Job Status
Built with