1. Perú 🇵🇪
  • 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. Perú 🇵🇪

CARD PRESENT PAYMENTS (API RAW)

The Card Present API lets you process face-to-face card payments directly from your POS terminals in Peru. A single, consistent set of endpoints covers the full payment lifecycle: one-time charges, two-step authorize-and-capture, voids, refunds, and transaction queries — across chip (ICC), magnetic stripe (MCR), and contactless (NFC) reading channels.
Beta
Card Present payments are in Beta phase. Contact your account manager for access.

Available operations#

One-Time Payments
Process immediate charges — single, deferred, cashback, or tip — in a single API call.
Two-Step Payments
Place a hold (pre-auth), then capture when ready. Supports reauthorization and cardless capture.
Voids & Refunds
Cancel an authorization (void), roll back a transaction (reverse), or refund a settled payment — full or partial, with or without card reading.
Card Information
Look up BIN data, check deferred availability, and query instalment options before initiating a charge.
Query Transactions
Search and paginate through POS terminal transactions with filters by date, BIN, card digits, or reference.

How it works#

All Card Present operations share a common request structure built around three main objects: the transaction intent, the card data, and the terminal details.
POST /pos/v1/transaction
Private-Merchant-Id: <your-private-key>
Content-Type: application/json
{
  "transaction_type": "charge",
  "transaction_mode": "Authorization",
  "country": "PER",
  "client_transaction_id": "<uuid-v4>",
  "amount": {
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 500,
    "iva": 0
  },
  "card_details": {
    "reading_type": "ICC",
    "enc_tlv": "<encrypted-tlv>",
    "pin_ksn": "<ksn-value>"
  },
  "cvm_type": "pin",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "1.1.13"
  }
}

Key concepts#

Reading channels#

Set card_details.reading_type to indicate how the card was presented.
ValueChannelRequired card data
ICCChip (EMV)enc_tlv, pin_ksn
MCRMagnetic stripetracks.enc_track2, tracks.track_ksn
NFCContactlessenc_tlv and/or tracks depending on card

Cardholder verification (cvm_type)#

ValueMeaning
pinOnline PIN — encrypted PIN block sent in card_details.pin_block
signatureSignature at the terminal
noneNo CVM (e.g., low-value transactions, contactless)

Cardless operations#

For voids, reverses, refunds, captures, and reauthorizations where re-reading the card is not practical, set omit_card: true. The card_details and cvm_type fields are optional in this case.

Deferred charges#

To process an instalment payment, set is_deferred: true and include the deferred object. Always call the BIN lookup endpoint first to confirm the card supports instalments.
"is_deferred": true,
"deferred": {
  "months": "6"
}

Idempotency#

Every request must include a unique client_transaction_id (UUID v4). Reusing the same ID for retries is safe — Kushki will return the result of the original transaction rather than creating a duplicate.

Currencies#

CurrencyCode
Peruvian SolPEN
US DollarUSD

Encryption#

Card data (TLV, track data, PIN blocks) must be encrypted using the DUKPT (Derived Unique Key Per Transaction) protocol before being sent to the API. Kushki and the merchant exchange Base Derivation Keys (BDK) through a secure Key Encryption Key (KEK) ceremony prior to going live.
See Key Exchange Process for the full procedure.

Webhooks#

Kushki sends webhook notifications for all Card Present events: charges, authorizations, captures, voids, reverses, and refunds. Configure your webhook endpoints from the Console (Developers > Webhooks).
See Introduction for signature verification and Card Payments / Refunds for the webhook body structure.
WARNING
Card Present webhooks can only be configured through the Console. Webhook configuration via API is not supported.

Authentication#

OperationHeader
Charges, voids, refunds, transaction listPrivate-Merchant-Id: <your-private-key>
BIN lookup, card informationPrivate-Credential-Id: <your-private-credential>
Deferred options, BIN infoPublic-Merchant-Id: <your-public-key>
Query transactions (analytics)Private-Credential-Id: <your-private-credential>

Using the API#

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

Additional resources#

Key Exchange Process
DUKPT/KEK ceremony required before processing live transactions.
Test Data
Amounts and scenarios for sandbox testing in Peru.
Error Catalog
HTTP status codes and ISO error codes for Mastercard and Visa.
Release Notes
Latest changes and version history for the Card Present API.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-10 17:06:38
Previous
Query settlement
Next
Release notes
Built with