1. Kushki One
  • API Docs Peru 🇵🇪
  • Online Payments
    • Release Notes
    • 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 v1
      • 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
  • 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
      • Balance inquiries
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Introduction
      • Good practices
      • Refunds
      • Card Payments
      • Check your webhooks
  • Kushki One
    • Cloud Services
      • Payment Cloud
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
        • Transaction Search
      • Print Cloud
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment Local
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Transaction Search — Local
        • Transaction Search — Online
        • Abort
      • Print Local
        • 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
  • Raíz
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • Amount-cash-in
      • 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
      • AmountWithTaxes
      • AmountCore
      • AmountWithTip
      • TerminalCardDetails
      • TerminalPosDetails
      • TerminalContactDetails
      • TerminalCardData
      • TransactionResponse
      • LinkFailure
      • TransactionSearchRequest
      • PrintJobRequest
      • PrinterError
      • PrintJobStatus
      • PrintWebhookPayload
    • RequestBodies
      • one-and-two-step-payment
    • currency
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • card-old
    • AmountWithTaxes-old
    • Card
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SettlementTicketRequest
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • networkToken
    • Language
    • extra_taxes
    • card_details
    • currency
    • ErrorResponse400-old
    • webhooksItem
    • ErrorResponse
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • currency
    • card
    • orderDetails-old
    • Country
    • ContactDetails-old
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • Amount
    • amount
    • documentType
    • extraTaxes-old
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • extraTaxes
    • enc_tlv
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • Deferred
    • pos_details
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • paymentMethod-old
    • Metadata
    • contact_details
    • Billing-Address-old
    • Deferred-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • ContactDetails
    • sub_merchant
    • headers
    • Amount-old
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • metadata
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • messageFields
    • PrinterError-old
    • Billing Address
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • currency-cash-in-old
    • product
    • webhooks
    • networkToken-old
    • PrintWebhookPayload-old
    • currency-CL-old
    • threeDomainSecure
    • webhooks
    • product-old
    • headers
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • citMit
    • network
    • Card-old-old
    • Submerchant-old
    • binInfo
    • Shipping-Address-old
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • transactionType
    • InvalidBinResponse-old
    • GetConfigurationRequest-old
    • BadRequestResponse-old
    • Amount-CL-old
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Kushki One

Local Services

Kushki ONE Local Network lets your POS communicate directly with the SmartPOS terminal over your local LAN or Wi-Fi — no internet required for the connection itself. Your server calls the terminal's IP address, the terminal processes the transaction using its EMV kernel and acquirer connection, and returns the result synchronously.
Beta
Kushki ONE Local Network is in Beta phase. Contact your account manager before deploying to production.

Available operations#

Payment API#

Charge
Single or deferred card charge in one step. Supports tip and cashback flows.
Authorization
Place a hold on the card without capturing funds. Use with Capture or Re-authorization.
Capture
Capture a previously authorized amount. Maximum capture = 110% of the total authorized (including re-authorizations).
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. Peru cutoff: 20:59 local time.
Refund
Refund a settled transaction — full or partial. Requires the transaction_reference from the original response.
Abort
Cancel a transaction currently in progress on the terminal.
Transaction Search (Online)
Query the transaction history from Kushki's acquirer backend — full history with status and amounts.
Transaction Search (Local)
Query transactions stored on the terminal itself — works offline, limited to the terminal's local storage window.
POS Tip
Display a tip entry screen on the terminal and retrieve the amount the customer selected.

Print API#

Create Print Job
Send an ordered list of print commands to the terminal's thermal printer. Returns 202 immediately — printing is asynchronous.
Get Print Job Status
Poll the current status of a queued print job.
Print Job Webhook
The terminal POSTs to your webhookUrl when a print job completes or fails. Implement this endpoint in your POS system.

Terminal setup#

Before making API calls, the terminal must be configured in DMS:
SettingDescription
Static IP / DHCP reservationAssign a fixed IP to the terminal on your local network
PortDefault 6868 (configurable in DMS)
CurrencySet at terminal level in DMS — not sent in request body
Tips & cashbackConfigured in DMS (v1.2.0+) — not sent in request body
The base URL is:
http://{terminalIp}:{port}
Default example: http://192.168.1.50:6868

Request structure#

All payment operations share the same endpoint path. The transaction_type and transaction_mode fields determine the operation:
{
  "transaction_type": "charge",
  "transaction_mode": "Authorization",
  "client_transaction_id": "<uuid-v4>",
  "amount": {
    "iva": 0,
    "subtotal_iva": 0,
    "subtotal_iva0": 500
  }
}
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. You must persist this value — it is required to void, refund, capture, or re-authorize that transaction.

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 transaction.

Void cutoff — Peru#

CountryCutoff
Peru 🇵🇪20:59 local time
Colombia23:59 local time
Chile23:59 local time
Void requests submitted after the cutoff will be rejected. Use Refund for same-day transactions past the cutoff.

Online vs Local transaction search#

Transaction Search (Online)Transaction Search (Local)
SourceKushki acquirer backendTerminal local storage
Works offline❌✅
Full history✅Limited to terminal storage window
Use caseReconciliation, reportingSame-day recovery, offline fallback

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.

Authentication#

Payment API (HMAC-SHA256)#

Sign the raw request body bytes using HMAC-SHA256. The key is your Business-Code (different from Cloud mode, which uses Private-Credential-Id). Encode the binary digest as Base64.
WARNING
The timestamp header must be in milliseconds (13 digits), not seconds.

Print API — no authentication required#

Print API calls are made directly over the local network and do not require Authorization or timestamp headers. Authentication is provided by network-level access control — only devices on the local network can reach the terminal.

Environments#

🔌 Local Network
http://{terminalIp}:6868
Point directly at your terminal's IP address. There is no separate UAT URL — connect to your designated test terminal.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-10 16:55:26
Previous
Get Print Job Status
Next
Payment Local
Built with