1. Kushki One
English
  • English
  • Español
  • API Docs Peru 🇵🇪
  • Online Payments
    • Release Notes
    • ISO errors
    • Kushki API errors
    • 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 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
    • Fraud Report
      • Query fraud alerts
  • 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
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
    • Chargebacks
      • Query Chargebacks
      • Request Chargeback Export
    • Fraud Report
      • Query fraud alerts
  • Kushki One
    • Webhooks
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Cloud Services
      • Payment
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Abort
          • Void
        • 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
      • Diagnostics
        • Connection test
        • Terminal info
    • Local Services
      • Payment
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • 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)
      • Diagnostics
        • Connection test
        • Terminal info
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • 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
      • TerminalContactDetails
      • TerminalCardDetails
      • TerminalPosDetails
      • TransactionSearchRequest
      • TerminalCardData
    • RequestBodies
      • one-and-two-step-payment
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • card-old
    • AmountWithTaxes-old
    • Card
    • PrintJobRequest
    • amount
    • one-and-two-step-payment
    • Card Present (CP)
    • one-and-two-step-payment1
    • FraudAlertRequest
    • TransactionResponse
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • Deferred
    • networkToken
    • Language
    • extra_taxes
    • CommandText
    • Card Not Present (CNP)
    • FraudAlertResponse
    • RawResponse
    • currency
    • Amount-cash-in
    • ErrorResponse400-old
    • Deferred-old
    • webhooksItem
    • ErrorResponse
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • currency
    • card
    • CommandColumns
    • FraudAlertRecord
    • CardData
    • orderDetails-old
    • Country
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • Amount
    • card_details
    • ColumnItem
    • ValidationError
    • LinkFailure
    • 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
    • CommandFeed
    • TransactionStatus
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • pos_details
    • CommandSpace
    • ReadingType
    • Billing-Address-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • contact_details
    • metadata
    • sub_merchant
    • CommandCut
    • FailureReason
    • headers
    • Amount-old
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • CommandImage
    • EventTerminal
    • ContactDetails-old
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • Subscription
    • CommandQR
    • EventOperation
    • SubscriptionUpdate
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • CommandBarcode
    • EventAmount
    • messageFields
    • PrinterError-old
    • Billing Address
    • EventExtraTaxes
    • PrintJobAccepted
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • EventMetadata
    • PrinterError
    • webhooks
    • networkToken-old
    • PrintWebhookPayload-old
    • threeDomainSecure
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • webhooks
    • AmountCore
    • product-old
    • headers
    • PrintWebhookPayload
    • ExtraTaxes
    • Metadata
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • citMit
    • AmountWithTip
    • TransactionSearchOnlineBody
    • TransactionSearchBody
    • Card-old-old
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • messageFields
    • TransactionEvent_2
    • Promotions-old
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • EventTerminal_2
    • EventOperation_2
    • InvalidBinResponse-old
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • currency
    • Amount-CL-old
    • SettlementTicketRequest
    • metadata
    • network
    • payment_method
    • currency
    • currency
    • Submerchant
    • Shipping Address
    • GetConfigurationRequest-old
    • BadRequestResponse
    • ContactDetails
    • product
    • TransactionEvent_21
    • TransactionStatus2
    • ReadingType3
    • FailureReason_24
    • EventTerminal_25
    • EventOperation_26
    • EventAmount_27
    • EventMetadata_28
    • EventExtraTaxes_29
    • PrintWebhookPayload10
    • TransactionEvent11
    • FailureReason12
    • EventTerminal13
    • EventOperation14
    • EventAmount15
    • EventMetadata16
    • EventExtraTaxes17
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
    • TransactionSearchOnlineResponse
    • TransactionSearchLocalResponse
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
Status
Soporte / Support
English
  • English
  • Español
  1. Kushki One

Release notes

Stay up to date with changes and updates to Kushki ONE Connect in Peru 🇵🇪.
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 it with /void.

NEW

📘 Transaction Examples guide#

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

IMPROVEMENTS

💰 Amount format documented for PEN#

Amount fields are now explicitly typed as integers in the smallest unit of the currency, and the documentation covers the decimal handling of Peru (PEN).
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 PEN — see Building the amount.
WARNING
PEN has two decimals and the payload carries no currency field. The last two digits of the integer you send are the fractional part: 12000 is 120.00 PEN, not 12.000. The currency is configured on the terminal, so the same integer means different money on a terminal provisioned for another market.
WARNING
Event payloads echo amounts as decimals (12000.0) while requests take integers. Do not reuse an amount from an event to build a new request.

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 for your terminal. When a capability is disabled the terminal either ignores the field or returns a CONFIGURATION error (CONF-4001 tip, CONF-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 and is never used to sign requests. Signing with it returns AUTH-001 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, 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-09-09 18:27:55
Previous
Error Catalog
Next
Transaction Examples
Built with