1. Kushki One
Español
  • English
  • Español
  • Docs de API 🇨🇴
  • Online Payments
    • Errores del API de Kushki
    • Errores ISO
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Crear pago (sin token)
      • Anular una transacción
      • Reembolsar una transacción
      • Solicitar opciones de diferido
      • Autorizar pagos
      • Preautorización (sin token)
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Verificar cuenta
      • Validar OTP
      • Información de BIN
      • Información de BIN V2
    • One-Click & Scheduled Payments
      • Solicitar un token de cargo recurrente
      • Crear un cargo recurrente
      • Hacer un pago One-click
      • Actualizar los datos de la tarjeta del cargo recurrente
      • Cancelar un cargo recurrente
      • Actualizar un cargo recurrente
      • Agregar un cargo o descuento temporal
      • Autorizar pagos
      • Capturar un pago autorizado
      • Consultar información del cargo recurrente
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Transfer in
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
      • Cancelar transacción
    • Transfer out
      • Consultar lista de bancos
      • Consultar lista de bancos V2
      • Solicitar un token de Transfer Out
      • Iniciar transacción
      • Consultar estado
      • Saldo para payouts
    • Cash in
      • Solicitar un token de Cash In
      • Iniciar transacción
      • Estado de la transacción
      • Eliminar una transacción de Cash In
      • Actualizar una transacción de Cash In
    • Cash-out
      • Solicitar un token de Cash Out
      • Iniciar transacción
      • Estado de la transacción
      • Actualizar una transacción de Cash Out
      • Eliminar una transacción de Cash Out
    • Smartlinks-v2
      • Crear un Smartlink
      • Consultar un Smartlink
      • Actualizar un Smartlink
      • Eliminar un Smartlink
    • Analytics
      • Consultar listado de transacciones v2
    • Gateway-status
      • Consultar estado del gateway
      • Consultar estado de la plataforma
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Búsqueda avanzada
      • Eliminar credencial
      • Regenerar una credencial
      • Activar o desactivar
      • Actualizar credencial
    • Payment Button
      • Crear un Payment Button
    • Settlement
      • Consultar liquidación
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment
        • 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)
        • Search
          • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • 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
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • API Raw Card Present Payments
    • Notas de versión
    • Catálogo de errores
    • El objeto Amount
    • Proceso de intercambio de llaves
    • Datos de prueba
    • One-time Payments
      • Pago único
    • Two-step Payments
      • Autorización y captura
    • Card Information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Voids & Refunds
      • Anular y reversar
      • Reembolsar una transacción
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Introducción
      • Buenas prácticas
      • Webhooks-Pagos con tarjeta
      • Webhooks-Reembolsos
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • ChargebackListResponse
    • TransactionResponse
    • PrintJobRequest
    • card
    • one-and-two-step-payment-3
    • Card Present (CP)
    • one-and-two-step-payment-3
    • SubscriptionTransactionsResponse
    • Amount-cash-in
    • SettlementDateRangeRequest
    • amount
    • FraudAlertRequest
    • SubscriptionTransaction
    • ChargebackItem
    • SettlementRecord
    • RawResponse
    • CommandText
    • Card Not Present (CNP)
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400
    • CardData
    • CommandColumns
    • extra_taxes
    • FraudAlertRecord
    • ErrorResponse
    • currency
    • Deferred
    • webhooksItem
    • SettlementResponse
    • ErrorResponse401
    • LinkFailure
    • ColumnItem
    • Amount
    • ValidationError
    • pos_details
    • ErrorResponse403
    • CommandDivider
    • enc_tlv
    • TransactionEvent
    • extraTaxes
    • card_details
    • Country
    • payment_method
    • ErrorResponse500
    • CommandFeed
    • TransactionStatus
    • deferred
    • CommandSpace
    • ReadingType
    • contact_details
    • ContactDetails
    • CommandCut
    • sub_merchant
    • FailureReason
    • CommandImage
    • metadata
    • EventTerminal
    • documentType
    • Subscription
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • EventExtraTaxes
    • PrintJobAccepted
    • PrinterError
    • EventMetadata
    • SubscriptionUpdate
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • SubscriptionAdjustmentRequest
    • AmountCore
    • product
    • webhooks
    • headers
    • ExtraTaxes
    • PrintWebhookPayload
    • Metadata
    • webhooksChargeback
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • ExternalReferenceId
    • EventTerminal_2
    • ExternalSubscriptionId
    • EventOperation_2
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • SettlementTicketRequest
    • ErrorResponse
    • TransactionEvent_23
    • TransactionStatus4
    • ReadingType5
    • FailureReason_26
    • EventTerminal_27
    • EventOperation_28
    • EventAmount_29
    • EventMetadata_210
    • EventExtraTaxes_211
    • PrintWebhookPayload12
    • TransactionEvent13
    • FailureReason14
    • EventTerminal15
    • EventOperation16
    • EventAmount17
    • EventMetadata18
    • EventExtraTaxes19
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴
Chile 🇨🇱
  1. Kushki One

Release notes

Stay up to date with changes and updates to Kushki ONE Connect in Colombia 🇨🇴.
We use the ISO 8601 standard (YYYY-MM-DD) for dates, and Semantic Versioning (MAJOR.MINOR.PATCH) for version numbers, increasing the:
1.
MAJOR version when we make incompatible API changes,
2.
MINOR version when we add functionality in a backward-compatible manner, and
3.
PATCH version when we make backward-compatible bug fixes.
NEW for new features.
IMPROVEMENTS for changes in existing functionality.
DEPRECATED for soon-to-be removed features.
REMOVED for now removed features.
FIX for any bug fixes.
SECURITY in case of vulnerabilities.

Latest#

1.1.0 - 2026-08-05#

PRODUCT IN BETA VERSION

NEW

⚡ Asynchronous payment services#

Every terminal-mediated payment operation is now available in a non-blocking variant under the /async/ prefix, in both the Local Network and Cloud topologies.
A card-present payment depends on human interaction and routinely exceeds the ~15 s timeout budget of most POS architectures. Async operations return immediately, so your system is never blocked waiting for a cardholder.
Key capabilities:
Available for charge, authorization, capture, re_authorization, pos_tip and void. Local Network also exposes an async abort.
The response is an acknowledgement event with status: TERMINAL_ACKNOWLEDGED and previous_status: "", returned without waiting for the acquirer.
Request and response structures are otherwise identical to their sync counterparts.
WARNING
The async response is an acknowledgement, not a result. It confirms only that the terminal accepted the payment intent. To learn whether the transaction was approved you must consume the transaction webhook.

NEW

🔔 Transaction webhooks with a seven-state lifecycle#

Async operations now push a notification to your backend on every state change of the payment, through to the acquirer's final answer. See the Webhooks reference for the full contract.
Key capabilities:
Register the endpoint per transaction with events_webhook_url in the request body.
Seven transactional states: TERMINAL_ACKNOWLEDGED, TERMINAL_CANCELED, CARD_PRESENTED, TERMINAL_REJECTED, APPROVAL_REQUESTED, DECLINED and APPROVAL. Five originate in the terminal; only APPROVAL and DECLINED come from the acquirer.
A single TransactionEvent envelope serves both the async acknowledgement and every webhook delivery — write one deserializer for both.
failure_reason carries type, code and message on TERMINAL_REJECTED and DECLINED.
reading_type reports how the card was read: CHIP, CONTACTLESS or MAGNETIC_STRIPE.
Delivery is retried with exponential backoff and jitter — min(60s, 2s × 2^attempt) + random(0..2s) — stopping after 10 attempts or 15 minutes. If the terminal loses connectivity it queues events persistently and replays them, preserving per-transaction order.
WARNING
Build an idempotent consumer. Because events are retried and replayed, deduplicate by event_id and correlate by client_transaction_id. Use previous_status to detect missing or out-of-order events.
DANGER
APPROVAL_REQUESTED is the point of no return. Once the transaction reaches the acquirer it can no longer be aborted. Wait for APPROVAL or DECLINED, then reverse with void or refund.

NEW

📘 Transaction Examples guide#

A new Transaction Examples guide provides copy-ready requests for every operation in both topologies, including complete worked examples in COP, a safe amount-conversion helper, and a table of the most common integration mistakes.

IMPROVEMENTS

💰 Amount format documented for COP#

Amount fields are now explicitly typed as integers in the smallest unit of the currency, and the documentation covers the decimal handling of Colombia (COP).
Key capabilities:
subtotal_iva0, subtotal_iva, iva, tip, cashback_amount and every member of extra_taxes are now declared as integer / int64 instead of floating-point numbers.
The API description documents the conversion rule for COP — see Building the amount.
WARNING
COP has no decimals and is never padded. 12000 is 12.000 COP. The payload carries no currency field — it comes from the terminal's DMS configuration, so padding an amount the way a two-decimal market would charges 100× too much.

IMPROVEMENTS

🧾 Optional fields on charge and re-authorization#

The async charge operation now documents three optional fields, and async re_authorization documents one.
New fields:
amount.tip — tip amount added to the total.
cashback_amount — cash withdrawal on top of the purchase.
query_deferred — when true, the terminal prompts the cardholder for installment options.
omit_card — on re_authorization, skips card presentation for the operation.
INFO
These fields require the matching capability enabled in the Device Management System (DMS). When a capability is disabled the terminal either ignores the field or returns a CONFIGURATION error (-4001 tip, -4002 cashback) — see the Error Catalog.

IMPROVEMENTS

🔍 Lifecycle status filter in local transaction search#

The Transaction Search — Local operation now filters by the full set of seven lifecycle states through the filters.status field, replacing the previous transaction_type filter.

IMPROVEMENTS

🔑 Authentication headers documented as required#

Authorization and timestamp are now declared as required headers on every operation of the Payment and Print APIs, in both topologies. Previously only the path parameters were documented.
Key capabilities:
Authorization — HMAC-SHA256 signature of the raw request body, Base64-encoded.
timestamp — Unix timestamp in milliseconds.

FIX

🔐 Corrected the HMAC signing key#

The documentation previously stated that the HMAC-SHA256 signature was computed with the Private-Credential-Id. The correct signing key is the Business-Code.
DANGER
These are two different values. The private_credential_id is a terminal configuration field inside the DMS and is never used to sign requests. Signing with it returns UNAUTHORIZED on every call.

FIX

🖨️ Corrected the Print API Cloud paths#

Two endpoints in the Print API (Cloud) were documented under paths that do not exist.
Documented beforeCorrect path
POST /terminal/v1/{terminalSerial}/sync/print/jobPOST /terminal/v1/{terminalSerial}/sync/print
POST /terminal/v1/{terminalSerial}/sync/print/job_statusPOST /terminal/v1/{terminalSerial}/sync/print_job

FIX

🖨️ Corrected how the print job status is queried in Cloud#

The Cloud status query documented print_job_id as a query parameter. It is sent in the request body.
{
  "print_job_id": "RECEIPT-20240317-001"
}
INFO
Local Network keeps its own convention: GET /terminal/v1/print_job?print_job_id={id}, with the identifier in the URL. The asymmetry between topologies is intentional — see Get Print Job Status — Local.

Previous release notes#

1.0.0 - 2026-04-29#

PRODUCT IN BETA VERSION
NEW

🎉 Kushki ONE Connect — initial release#

First public release of Kushki ONE Connect, the API integration layer that lets your point-of-sale software drive a Kushki ONE SmartPOS terminal (Sunmi P3, Sunmi P2 SE) operating in semi-integrated mode.
Payment API — synchronous operations:
charge, authorization, capture, re_authorization, pos_tip, void, refund, abort and transaction search.
Print API:
Full control over the terminal's built-in thermal printer through a commands array supporting text, columns, dividers, feeds, spacing, cut, images, QR codes and barcodes — with an asynchronous webhook reporting the final job status.
Integration topologies:
Local Network (LAN / Wi-Fi) for direct HTTP to the terminal's IP, and Cloud (Internet) routed through Kushki's servers using the terminal serial. The request and response structures are identical in both — only the base URL changes.
Unified error model:
A single structured JSON response for every failure, classified by type into PARAMETER, TERMINAL, AUTHENTICATION, NOT_FOUND, ACQUIRER, INTERNAL, CONFIGURATION, TERMINAL-PRINTER and MANUFACTURER, with per-category code catalogs. See the Error Catalog.

Got a suggestion on this documentation? Contact us.
Modified at 2026-08-31 15:20:45
Previous
Error Catalog
Next
Transaction Examples
Built with