1. Local Services
  • API Docs Mexico 🇲🇽
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Request deferred options
      • Refund a transaction
      • Authorize payments
      • Preauthorization (tokenless)
      • Void a transaction
      • Reauthorize payments
      • Capture an authorized payment
      • Bin Info V2
      • Bin Info
      • Validate OTP
      • Verify Account
    • One-Click and 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
    • 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
    • Smartlinks
      • 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
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Commissions
      • Get Commission Configuration
    • Payment Credentials
      • Create a credential
      • Activate or deactivate
      • Delete credential
      • Regenerate a credential
      • Update credential
      • Advanced search
      • Search credentials
    • Platform Status
      • Get platform status
      • Get gateway status
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Card Present Billpocket
    • Get Started
      • Create Account
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transfer Funds (v1)
      • Webhooks — Transfer Funds to Your Bank Account
      • Transfer Funds Errors
    • Terminals
      • App Review
      • Splash Screen
    • Card Present Payment Services
      • Cloud Terminal API
        • Collect card payments
        • Print Ticket
        • Cancel Push Notification
        • Get transaction status
        • Collect card payments v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK
        • Android SDK errors
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Create checkout
        • Get checkout details
      • E-commerce Flex
        • Get token
        • Validate token
        • Collect payments
        • Refund
        • Capture an authorized payment
        • Get status
    • Catalogs
      • States
      • Municipalities
      • Tax companies
      • Commercial activities
    • User Settings
      • Create user
    • Accounts
      • Clabe Account Setup
        • Add CLABE account
      • Deposit Accounts
        • Add or update CLABE account
    • Transactions
      • Transaction List
        • Get token
        • Get transaction list
        • Get transaction list v2
        • Get transaction list v3
        • Get transaction list v4
      • Cancel Payments
        • Cancel payments Error Codes
        • Cancel payments
  • API Raw Card Present
    • The Amount Object
    • Error Catalog
    • Key Exchange Process
    • Release Notes
    • Test Data
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
    • Card information
      • Get BIN Info
      • Balance inquiries
      • Bin Info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Webhooks — Introduction
      • Good Practices
      • Webhooks — Card Payments
      • Webhooks — Refunds
      • 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
        • Get Print Job Status
    • Local Services
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search — Online
        • Transaction Search — Local
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • amount
    • AmountWithTaxes
    • PrintJobRequest
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • SubscriptionTransaction
    • extra_taxes
    • AmountCore
    • CommandText
    • currency
    • ErrorResponse400
    • ErrorResponse
    • SettlementResponse
    • webhooksItem
    • card
    • ExtraTaxes
    • CommandColumns
    • Amount
    • Country
    • ErrorResponse401
    • SettlementRecord
    • card_details
    • ColumnItem
    • extraTaxes
    • ErrorResponse403
    • enc_tlv
    • TransactionResponse
    • CommandDivider
    • Deferred
    • payment_method
    • ErrorResponse500
    • deferred
    • RawResponse
    • CommandFeed
    • Metadata
    • pos_details
    • CardData
    • CommandSpace
    • ContactDetails
    • contact_details
    • sub_merchant
    • AmountWithTip
    • CommandCut
    • documentType
    • Subscription
    • metadata
    • LinkFailure
    • CommandImage
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • SubscriptionUpdate
    • PrinterError
    • product
    • SubscriptionAdjustmentRequest
    • PrintJobStatus
    • threeDomainSecure
    • 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. Local Services

Print

The Print API (Local Network) lets your POS control the terminal's thermal printer directly over your local network. No authentication headers are required — requests are trusted based on local network access.
Print jobs are asynchronous — the terminal returns 202 Accepted immediately and delivers the final status via webhook or polling.
Beta — Early Access
The Print API is in Beta for Mexico 🇲🇽. Do not deploy to production without coordinating with the Kushki integration team.

Base URL#

http://{terminalIp}:6868
INFO
The Print API does not require Authorization or timestamp headers — unlike the Payment API.

Available operations#

OperationEndpointDescription
Create Print JobPOST /terminal/v1/printQueue a print job — returns 202 Accepted immediately
Get Print Job StatusGET /terminal/v1/print_job?print_job_id={id}Poll the current status of a queued job
Print Job Webhook—Inbound endpoint in your POS — receives completion events from the terminal

Create Print Job#

Request#

{
  "printJobId": "RECEIPT-20260101-001",
  "webhookUrl": "https://pos.micomercio.com.mx/webhooks/print",
  "skipIfBusy": false,
  "commands": [
    {
      "type": "text",
      "text": "MI COMERCIO MÉXICO\n",
      "align": "CENTER",
      "size": 32,
      "bold": true
    },
    {
      "type": "text",
      "text": "RFC: MCC800101HNG\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": "$ 500.00",   "weight": 1, "align": "RIGHT" }
      ]
    },
    {
      "type": "divider",
      "dividerType": "SOLID"
    },
    {
      "type": "columns",
      "columns": [
        { "text": "TOTAL",    "weight": 2, "align": "LEFT", "bold": true },
        { "text": "$ 500.00", "weight": 1, "align": "RIGHT", "bold": true }
      ]
    },
    {
      "type": "text",
      "text": "APROBADO\n",
      "align": "CENTER",
      "size": 28,
      "bold": true
    },
    {
      "type": "qr",
      "content": "https://micomercio.com.mx/recibo/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#

GET /terminal/v1/print_job?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

Print Job Webhook#

Supply a webhookUrl in the Create Print Job request. When the job finishes, the terminal POSTs to your URL:
Success:
{
  "print_job_id": "RECEIPT-20260101-001",
  "print_job_status": "COMPLETED"
}
Failure:
{
  "print_job_id": "RECEIPT-20260101-001",
  "print_job_status": "FAILED",
  "errorCode": "OUT_OF_PAPER",
  "errorMessage": "The printer is out of paper. Insert a roll and try again."
}
Your webhook endpoint must return HTTP 2xx. If the webhook does not arrive within ~60 seconds, fall back to polling with Get Print Job Status.

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
Max image width: 384 pxHardware limit on Sunmi P3 / P2 SE

Printer error codes#

CodeCauseAction
OUT_OF_PAPERNo paper rollInsert new roll
COVER_OPENCover openClose firmly
COVER_INCOMPLETECover not latchedRe-open and close
PAPER_JAMPaper jammedRemove manually
BUSYQueue busy + skipIfBusy: trueRetry after current job
PRINTER_HOTPrint head overheatedWait 2–3 min
MOTOR_HOTMotor overheatedWait for cooling
CUTTER_ERRORCutter jammedTechnical service required
UNKNOWN_ERRORUnclassified errorCheck logs
BAD_FORMATMalformed JSON or commandFix the request

Got a suggestion on this documentation? Contact us.
Modified at 2026-06-03 17:27:26
Previous
Local Services
Next
Create Print Job
Built with