1. Kushki One
  • API Docs Colombia 🇨🇴
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • 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
      • BIN info V2
    • One-Click & 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
    • 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
      • Delete a cash in transaction
      • Update a cash in transaction
    • Cash-out
      • Request a cash out token
      • Init Transaction
      • Transaction Status
      • Update a cash out transaction
      • Delete a cash out transaction
    • Smartlinks-v2
      • Create a Smartlink
      • Get a Smartlink
      • Update a Smartlink
      • Delete a smartlink
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Gateway-status
      • Get gateway status
      • Get platform status
    • Payment Credentials
      • Create a credential
      • Search credentials
      • Advanced search
      • Delete credential
      • Regenerate a credential
      • Activate or deactivate
      • Update credential
    • Payment Button
      • Create a payment button
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search — Online
        • Transaction Search — Local
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • API RAW CARD PRESENT PAYMENTS
    • Release Notes
    • Error Catalog
    • The Amount Object
    • Key Exchange Process
    • Test data
    • Card Information
      • Get BIN Info
      • Balance inquiries
      • BIN info V2
      • Request deferred options
    • One-time Payments
      • Single payment
    • Two-step Payments
      • Authorization and capture
    • Voids & Refunds
      • Void & Reverse
      • Refund a transaction
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good Practices
      • Webhooks-Card Payments
      • Webhooks-Refunds
      • Check your webhooks
  • 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
    • SubscriptionTransactionsResponse
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • SettlementDateRangeRequest
    • AmountWithTaxes
    • PrintJobRequest
    • card
    • SubscriptionTransaction
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • AmountCore
    • CommandText
    • amount
    • ErrorResponse
    • currency
    • webhooksItem
    • ErrorResponse400
    • SettlementResponse
    • ExtraTaxes
    • CommandColumns
    • extra_taxes
    • Amount
    • ErrorResponse401
    • SettlementRecord
    • ColumnItem
    • pos_details
    • extraTaxes
    • ErrorResponse403
    • TransactionResponse
    • CommandDivider
    • card_details
    • Deferred
    • Country
    • payment_method
    • ErrorResponse500
    • RawResponse
    • CommandFeed
    • enc_tlv
    • Metadata
    • CardData
    • CommandSpace
    • contact_details
    • ContactDetails
    • AmountWithTip
    • CommandCut
    • deferred
    • sub_merchant
    • documentType
    • Subscription
    • LinkFailure
    • CommandImage
    • metadata
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • PrinterError
    • product
    • SubscriptionUpdate
    • PrintJobStatus
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • 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. Kushki One

Cloud Services

Kushki ONE Cloud Services let your backend communicate with the SmartPOS terminal through Kushki's cloud relay. Your server calls cloudt.kushkipagos.com, Kushki routes the command to the terminal identified by its serial number, and the terminal returns the result synchronously.
Beta
Kushki ONE Cloud Services are in Beta phase. Contact your account manager before deploying to production.
Three APIs are available in Cloud mode:
APIWhat it does
Payments APICard payments — charge, pre-authorization, capture, void, refund, and more
Transaction SearchQuery the full transaction history from Kushki's acquirer backend
Print APISend structured receipt jobs to the terminal's thermal printer

Payments API#

Available operations#

Charge
Single or deferred card charge in one step. Tip and cashback are configured in DMS.
Authorization
Place a hold on the card without capturing funds. Use before Capture or Re-authorization.
Capture
Capture a previously authorized amount. Maximum = 110% of total authorized (including re-authorizations). One capture per authorization cycle.
Re-authorization
Extend or increase an existing authorization before capture. Debit cards: 7-day limit. Credit cards: 28-day limit.
Void
Cancel an authorization or same-day charge before settlement. Colombia cutoff: 23:59 local time.
Refund
Refund a settled transaction — full or partial. Requires transaction_reference from the original charge or authorization response.
Abort
Cancel a transaction currently in progress on the terminal (e.g., customer walks away mid-flow).
POS Tip
Display a tip entry screen on the terminal and retrieve the amount the customer selected before charging.

Payment request structure#

All payment operations use the same endpoint. transaction_type and transaction_mode determine the operation:
{
  "transaction_type": "charge",
  "transaction_mode": "Authorization",
  "client_transaction_id": "550e8400-e29b-41d4-a716-446655440000",
  "amount": {
    "iva": 19000,
    "subtotal_iva": 100000,
    "subtotal_iva0": 0
  }
}
INFO
The amount object does not include a currency field — currency is configured at the terminal level in DMS.

Key concepts#

transaction_reference — save it always#

Every approved charge or authorization response includes a rawResponse.transaction_reference. Persist this value — it is required to void, refund, capture, or re-authorize that transaction.

Void cutoff — Colombia#

CountryCutoff
Colombia 🇨🇴23:59 local time
Void requests submitted after the cutoff are rejected. Use Refund instead for same-day transactions past the cutoff.

Pre-authorization lifecycle#

Card typeMaximum holdCapture limit
Debit7 days110% of total authorized
Credit28 days110% of total authorized
Only one capture is allowed per authorization cycle. Multiple re-authorizations are permitted before capture.

Idempotency#

Every request must include a unique client_transaction_id (UUID v4). Reusing the same ID on a retry returns the original result without creating a duplicate.

Tips, cashback, and installments#

As of v1.2.0, tip and cashback amounts are configured in DMS and entered by the customer on the terminal natively — they are not sent in the request body. Installment options are also configured per terminal in DMS.

Transaction Search#

Query the full transaction history stored in Kushki's acquirer backend. Supports filtering by date range, terminal serial, card BIN, last four digits, and transaction reference.
Transaction Search
Returns a paginated list of transactions processed by the authenticated merchant. Source: Kushki acquirer backend — full history, all statuses.

Request structure#

{
  "from": "2026-01-01T00:00:00",
  "to": "2026-01-31T23:59:59",
  "page": 1,
  "page_size": 50
}
INFO
Transaction Search queries Kushki's acquirer backend and requires internet connectivity. For offline or same-day recovery, use the Local Transaction Search available in Local Network mode.

Print API#

Control the terminal's thermal printer from the cloud. Print jobs are asynchronous — the terminal returns 202 Accepted immediately and delivers the final status via webhook or polling.

Available operations#

Create Print Job
Send an ordered commands array to the terminal's thermal printer. Returns 202 immediately — printing executes asynchronously.
Get Print Job Status
Poll the current status of a queued print job using print_job_id. Returns PENDING, COMPLETED, or FAILED.

Print request structure#

{
  "printJobId": "RECEIPT-20260101-001",
  "webhookUrl": "https://pos.micomercio.co/webhooks/print",
  "skipIfBusy": false,
  "commands": [
    { "type": "text", "text": "MI COMERCIO COLOMBIA\n", "align": "CENTER", "size": 32, "bold": true },
    { "type": "text", "text": "NIT: 900.123.456-7\n", "align": "CENTER", "size": 20 },
    { "type": "divider", "dividerType": "SOLID" },
    { "type": "columns", "columns": [
        { "text": "Producto A",  "weight": 2, "align": "LEFT" },
        { "text": "$ 30.000",   "weight": 1, "align": "RIGHT" }
    ]},
    { "type": "divider", "dividerType": "DOTTED" },
    { "type": "columns", "columns": [
        { "text": "TOTAL",      "weight": 2, "align": "LEFT" },
        { "text": "$ 30.000",   "weight": 1, "align": "RIGHT" }
    ]},
    { "type": "text", "text": "APROBADO\n", "align": "CENTER", "size": 28, "bold": true },
    { "type": "qr", "content": "https://micomercio.co/factura/001", "dotSize": 6, "align": "CENTER" },
    { "type": "feed", "lines": 4 },
    { "type": "cut" }
  ]
}

Print command types#

typeDescription
textText line — size, alignment, bold, italic, 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 pixel-precise vertical whitespace
cutTrigger the auto-cutter (silently ignored on cutterless terminals)
imagePrint a Base64-encoded PNG/JPG — typically for merchant logos (max 384 px wide)
qrGenerate a QR code natively in hardware
barcodeGenerate a CODE128 barcode natively in hardware

Print best practices#

PracticeReason
Always end with feed (≥ 3 lines) + cutEnsures content clears the tear edge
Always set printJobIdEnables idempotent retries — terminal deduplicates
Set skipIfBusy: false for payment receiptsPrevents a busy queue from silently discarding the receipt
Use BINARIZATION algorithm for logosSharper edges on monochrome thermal paper
Set HTTP timeout ≥ 15 sCloud relay adds latency before the 202 response

Authentication#

All Cloud Services use the same HMAC-SHA256 authentication scheme:
Sign the raw request body bytes using HMAC-SHA256. The key is your Private-Credential-Id. Encode the binary digest as Base64.
WARNING
timestamp must be in milliseconds (13 digits). A 10-digit seconds value will be rejected.

Terminal identification#

In Cloud mode, the terminal is identified by its serial number in the URL path — assigned by DMS when the terminal is enrolled:
POST /terminal/v1/SN71652/sync
POST /terminal/v1/SN71652/sync/print/job
POST /terminal/v1/SN71652/sync/transaction/search

Environments#

🟢 Production
🧪 Sandbox (UAT)
https://cloudt.kushkipagos.com

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-10 16:02:48
Previous
Kushki One
Next
Payment
Built with