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
    • Chargebacks
      • Query Chargebacks
      • Request Chargeback Export
  • Kushki One
    • Cloud Services
      • Payment Cloud
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Refund
          • Abort
          • Void
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
        • Search
          • Transaction Search
      • Print Cloud
        • Create Print Job
          POST
        • Get Print Job Status
          POST
    • Local Services
      • Payment Local
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • Abort
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
          • Abort (Async)
        • Search
          • Transaction Search — Online
          • Transaction Search — Local
      • 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
      • TerminalCardDetails
      • TerminalPosDetails
      • TerminalContactDetails
      • TerminalCardData
      • TransactionSearchRequest
    • RequestBodies
      • one-and-two-step-payment
    • currency
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • card-old
    • AmountWithTaxes-old
    • Card
    • TransactionResponse
    • PrintJobRequest
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SettlementTicketRequest
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • networkToken
    • Language
    • extra_taxes
    • card_details
    • CommandText
    • RawResponse
    • currency
    • ErrorResponse400-old
    • webhooksItem
    • ErrorResponse
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • currency
    • card
    • CommandColumns
    • CardData
    • orderDetails-old
    • Country
    • ContactDetails-old
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • Amount
    • LinkFailure
    • amount
    • ColumnItem
    • documentType
    • extraTaxes-old
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • extraTaxes
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • Deferred
    • pos_details
    • deferred
    • CommandFeed
    • TransactionStatus
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • paymentMethod-old
    • contact_details
    • CommandSpace
    • ReadingType
    • Billing-Address-old
    • Deferred-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • ContactDetails
    • sub_merchant
    • CommandCut
    • FailureReason
    • headers
    • Amount-old
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • metadata
    • CommandImage
    • EventTerminal
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • Subscription
    • CommandQR
    • EventOperation
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • CommandBarcode
    • EventAmount
    • messageFields
    • PrinterError-old
    • Billing Address
    • EventExtraTaxes
    • PrintJobAccepted
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • currency-cash-in-old
    • product
    • PrinterError
    • EventMetadata
    • webhooks
    • networkToken-old
    • PrintWebhookPayload-old
    • currency-CL-old
    • threeDomainSecure
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • webhooks
    • AmountCore
    • product-old
    • headers
    • PrintWebhookPayload
    • ExtraTaxes
    • Metadata
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • citMit
    • AmountWithTip
    • network
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • Card-old-old
    • Submerchant-old
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • Shipping-Address-old
    • messageFields
    • TransactionEvent_2
    • Promotions-old
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • EventTerminal_2
    • EventOperation_2
    • InvalidBinResponse-old
    • EventAmount_2
    • GetConfigurationRequest-old
    • EventExtraTaxes_2
    • EventMetadata_2
    • BadRequestResponse-old
    • Amount-CL-old
    • metadata
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Print Cloud

Create Print Job

UAT Testing Env
https://api-uat.kushkipagos.com
UAT Testing Env
https://api-uat.kushkipagos.com
POST
/terminal/v1/{terminalSerial}/sync/print

🚧 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.
Both print endpoints require the same signed Authorization and timestamp
headers as the Payment API.
The final result (COMPLETED or FAILED) is delivered via:
Webhook push: supply webhookUrl in the request.
Status polling: call POST .../print_job with print_job_id in the request body.

Command Types#

The commands array contains polymorphic objects. The type property
(required on every object) determines its behavior. Write type in lowercase
(text, columns, divider…); every other enum value — align, dividerType,
algorithm, errorLevel — 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": "S/ 300.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.

Callbacks

printJobResult

Request

Path Params

Header Params

Body Params application/jsonRequired

Examples

Responses

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

🟠400Bad Request
🟠401Unauthorized
🟠409
🔴500Server Error
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location 'https://api-uat.kushkipagos.com/terminal/v1/SN71652/sync/print' \
--header 'Authorization: nRvpFJZHjqLU4k8Rz2YiDvxA3mQs9oB1cW7eT0=' \
--header 'timestamp: 1700000000000' \
--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-08-21 18:03:55
Previous
Print Cloud
Next
Get Print Job Status
Built with