1. Local Services
  • 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
    • Fraud Report
      • Consultar alertas de fraude
  • API Raw Card Present Payments
    • Release Notes
    • Error Catalog
    • Test Data
    • Key Exchange Process
    • 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
    • Query Transactions
      • Transaction Search
    • Chargebacks
      • Query Chargebacks
      • Request Chargeback Export
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
  • Kushki One
    • Cloud Services
      • Payment
        • Search
          • Transaction Search
        • 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)
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • Abort
        • Search
          • Transaction Search — Online
          • Transaction Search — Local
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
          • Abort (Async)
      • 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
    • TransactionResponse
    • PrintJobRequest
    • FraudAlertRequest
    • networkToken
    • extra_taxes
    • ChargebackItem
    • SubscriptionTransaction
    • SettlementTicketRequest
    • RawResponse
    • CommandText
    • FraudAlertResponse
    • webhooks
    • card
    • Amount-CL
    • webhooksItem
    • ErrorResponse400
    • SettlementResponse
    • CardData
    • CommandColumns
    • FraudAlertRecord
    • headers
    • currency
    • Amount
    • card_details
    • ErrorResponse401
    • SettlementRecord
    • LinkFailure
    • ColumnItem
    • ValidationError
    • transactionType
    • enc_tlv
    • ErrorResponse403
    • ErrorResponse
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • Country
    • binInfo
    • Deferred
    • deferred
    • ErrorResponse500
    • payment_method
    • CommandFeed
    • TransactionStatus
    • SubscriptionUpdate
    • pos_details
    • CommandSpace
    • ReadingType
    • ContactDetails
    • Language
    • contact_details
    • sub_merchant
    • CommandCut
    • FailureReason
    • Subscription
    • metadata
    • CommandImage
    • EventTerminal
    • orderDetails
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • EventExtraTaxes
    • PrintJobAccepted
    • product
    • PrinterError
    • EventMetadata
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • webhooksChargeback
    • AmountCore
    • ExtraTaxes
    • PrintWebhookPayload
    • Metadata
    • citMit
    • AmountWithTip
    • network
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • messageFields
    • TransactionEvent_2
    • UnexpectedErrorResponse
    • FailureReason_2
    • EventTerminal_2
    • ExternalReferenceId
    • EventOperation_2
    • ExternalSubscriptionId
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Local Services

Local Print Services

Print operations queue a receipt on the terminal's thermal printer (Sunmi P3, Sunmi P2 SE) over your LAN, with no drivers or SDKs. You describe the receipt as an ordered commands array; array order is physical paper order.
Beta — Early Access
Kushki ONE Local Network is currently in Beta for Chile 🇨🇱. Do not deploy to production without coordinating with the Kushki integration team.

Operations#

OperationEndpointReturns
Create Print JobPOST /terminal/v1/print202 Accepted with status PENDING
Get Print Job StatusGET /terminal/v1/print_job?print_job_id={id}PENDING, IN_PROGRESS, COMPLETED or FAILED
Print Job WebhookPOST to your webhookUrlImplemented by your POS
Note the paths: print does not use the /sync/ and /async/ prefixes that payment operations do.
WARNING
Printing is asynchronous. The 202 means queued, not printed — the real outcome arrives by webhook or polling.

How a job resolves#

1.
POST /terminal/v1/print with your commands array → 202 and a printJobId.
2.
The terminal prints. Then either:
Webhook — supply webhookUrl and the terminal POSTs the final state to it. Fire-and-forget, not retried.
Polling — GET /terminal/v1/print_job?print_job_id={id} every 2–3 seconds until COMPLETED or FAILED.
FieldWhy it matters
printJobIdYour idempotency key. Reuse it on retries — the terminal deduplicates and will not print twice
externalReferenceFree-form traceability. Echoed back in status and webhook responses
skipIfBusytrue returns 409 instead of queueing. Never set it to true for a payment receipt
DANGER
Do not treat the webhook as your only signal for a payment receipt. It is never retried, and a lost callback looks exactly like a failed print from your side. Poll to confirm.

Commands#

Write type in lowercase. Every other enum value — align, dividerType, algorithm, errorLevel — is UPPERCASE.
typeWhat it prints
textA line or paragraph, with size, alignment, bold, italic, underline
columnsProportional columns on one line — item and price
dividerFull-width rule: SOLID, DOTTED or EMPTY
feedN blank lines
spacePixel-precise vertical whitespace
cutThe auto-cutter. Silently ignored on cutterless terminals
imageA Base64 PNG/JPG, typically the merchant logo
qrA QR code generated in printer hardware
barcodeA CODE128 barcode generated in printer hardware
{
  "printJobId": "RECEIPT-20240317-001",
  "commands": [
    { "type": "text", "text": "MI COMERCIO CHILE\n", "align": "CENTER", "size": 28, "bold": true },
    { "type": "text", "text": "RUT: 76.543.210-1\n", "align": "CENTER", "size": 20 },
    { "type": "divider", "dividerType": "SOLID", "offset": 8 },
    { "type": "columns", "columns": [
        { "text": "2x Combo Hamburguesa", "weight": 2, "align": "LEFT" },
        { "text": "$30.000", "weight": 1, "align": "RIGHT" }
    ]},
    { "type": "columns", "columns": [
        { "text": "TOTAL", "weight": 2, "align": "LEFT" },
        { "text": "$38.000", "weight": 1, "align": "RIGHT" }
    ]},
    { "type": "qr", "content": "https://facturacion.micomercio.cl/ticket/4421", "dotSize": 6, "errorLevel": "M", "align": "CENTER" },
    { "type": "feed", "lines": 4 },
    { "type": "cut" }
  ]
}
Amounts are CLP — print them with no decimals ($38.000), matching what the terminal charged.
Per-command parameters, defaults and examples live on Create Print Job.

Practical limits#

RuleDetail
Always end with feed + cutAdvance ≥ 3 lines, or the cut lands on printed content
Max image width384 px on Sunmi hardware
LogosPrefer BINARIZATION — sharper edges on monochrome art. DITHERING is for photos
Base64Raw string only. The data:image/png;base64, prefix makes the image fail silently
CodesPrefer qr and barcode over image — hardware generation is faster and denser
Hardware failures come back as errorCode: OUT_OF_PAPER, COVER_OPEN, PAPER_JAM, PRINTER_HOT, CUTTER_ERROR, OFFLINE and others. Surface them to the cashier — most are fixed by someone touching the device.

Got a suggestion on this documentation? Contact us.
Modified at 2026-08-20 17:18:45
Previous
Abort (Async)
Next
Create Print Job
Built with