1. Two-step Payments
Español
  • English
  • Español
  • Docs de API 🇵🇪
  • Online Payments
    • Errores ISO
    • Errores del API de Kushki
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Preautorización (sin token)
      • Crear pago (sin token)
      • Anular una transacción
      • Reembolsar una transacción
      • Verificar cuenta
      • Solicitar opciones de diferido
      • Autorizar pagos
      • Reautorizar pagos
      • Capturar un pago autorizado
      • 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
      • Actualizar los datos de la tarjeta del cargo recurrente
      • Hacer un pago One-click
      • 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
    • Card Out
      • Obtener token de Card Payout
      • Obtener token de suscripción
      • Push funds
      • Push Funds en suscripciones
      • Consultar estado de la transacción
      • Eliminar suscripción
    • Transfer In
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • 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
    • Smartlinks V2
      • Crear un Smartlink
      • Actualizar un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
    • Analytics
      • Consultar listado de transacciones v2
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Gateway Status
      • Consultar estado del gateway
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Búsqueda avanzada
      • Activar o desactivar
      • Eliminar credencial
      • Actualizar credencial
      • Regenerar una credencial
    • Payment Button
      • Crear un Payment Button
    • Platform Status
      • Consultar estado de la plataforma
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Settlement
      • Consultar liquidación
    • Fraud Report
      • Consultar alertas de fraude
  • Card Present Payments (API Raw)
    • Notas de versión
    • Proceso de intercambio de llaves
    • Datos de prueba
    • Catálogo de errores de Kushki para transacciones POS
    • El objeto Amount
    • One-time Payments
      • Pago único
    • Two-step Payments
      • Autorización y captura
        POST
    • Voids & Refunds
      • Reembolsar una transacción
      • Anular y reversar
    • Card information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Introducción
      • Buenas prácticas
      • Reembolsos
      • Pagos con tarjeta
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment Cloud
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Refund
          • Abort
          • Void
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
        • Search
          • Transaction Search
      • Print Cloud
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment Local
        • 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 Local
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • 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
      • 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
      • TerminalContactDetails
      • TerminalCardDetails
      • TerminalPosDetails
      • TransactionSearchRequest
      • TerminalCardData
    • RequestBodies
      • one-and-two-step-payment
    • card-old
    • AmountWithTaxes-old
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment
    • Card Present (CP)
    • one-and-two-step-payment1
    • Card
    • amount
    • FraudAlertRequest
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • Language
    • extra_taxes
    • CommandText
    • RawResponse
    • Card Not Present (CNP)
    • Deferred
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400-old
    • Deferred-old
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • card
    • CommandColumns
    • CardData
    • FraudAlertRecord
    • currency
    • currency
    • ErrorResponse
    • webhooksItem
    • orderDetails-old
    • Country
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • LinkFailure
    • ColumnItem
    • Amount
    • card_details
    • ValidationError
    • documentType
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • extraTaxes-old
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • CommandFeed
    • TransactionStatus
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • CommandSpace
    • ReadingType
    • pos_details
    • Billing-Address-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • metadata
    • sub_merchant
    • CommandCut
    • FailureReason
    • contact_details
    • headers
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • CommandImage
    • EventTerminal
    • Amount-old
    • ContactDetails-old
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • CommandQR
    • EventOperation
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • CommandBarcode
    • EventAmount
    • messageFields
    • PrinterError-old
    • Billing Address
    • EventExtraTaxes
    • PrintJobAccepted
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • PrinterError
    • EventMetadata
    • networkToken-old
    • PrintWebhookPayload-old
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • webhooks
    • AmountCore
    • webhooks
    • product-old
    • headers
    • PrintWebhookPayload
    • ExtraTaxes
    • Metadata
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • Card-old-old
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • EventTerminal_2
    • EventOperation_2
    • InvalidBinResponse-old
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • currency
    • Amount-CL-old
    • SettlementTicketRequest
    • metadata
    • 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
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Two-step Payments

Autorización y captura

https://api-uat.kushkipagos.com
https://api-uat.kushkipagos.com
POST
/pos/v1/transaction
Los pagos presenciales mediante autorización y captura están disponibles en Perú.
Con este endpoint puedes:
Realizar preautorizaciones
Hacer reautorizaciones
Hacer capturas
Anular preautorizaciones

Canales de lectura soportados#

Soportamos los siguientes canales de lectura. Los campos que nos envías para procesar un cargo pueden variar según el tipo de lectura.
ICC= Integrated Circuit Card
MCR= Magnetic Card reader
MFC= Multi-Function Card

Hacer preautorizaciones (retener el saldo de un pago con tarjeta)#

Puedes retener el saldo de una tarjeta para reservar un monto determinado de la cuenta.

Estructura#

Para hacer autorizaciones, envía preAuth en el campo transaction_type y Authorization en el campo transaction_mode como parte del body de tu request. (Revisa el ejemplo completo al lado derecho de la pantalla).

Make reauthorizations#

Puedes extender el monto o la vigencia de la autorización.
La moneda debe ser la misma de la autorización.
Puedes enviar un monto de $0 en la reautorización para extender la fecha de captura.
La reautorización puede ser por un monto mayor al de la autorización.
NOTA: Una reautorización se puede anular. Después de anularla, no se pueden hacer más reautorizaciones sobre la transacción anulada.

Estructura#

Para hacer reautorizaciones, envía reAuthorization en el campo transaction_type y Authorization en el campo transaction_mode como parte del body de tu request. (Revisa el ejemplo completo al lado derecho de la pantalla).
Descubre cómo hacer una reautorización sin tarjeta.

Capture a payment#

Cuando necesites cobrar los fondos de la tarjeta, captura el monto que definas.
La captura debe ser la suma de la autorización y de todas las reautorizaciones hechas que no hayan sido anuladas. El monto a capturar puede ser igual o menor al monto autorizado o reautorizado.

Estructura#

Para capturar envía capture en el campo transaction_type, Authorization en el campo transaction_mode y el transaction_reference de la transacción a capturar como parte del body de tu request (el transaction_reference debe ser de una autorización, no de una reautorización). (Revisa el ejemplo completo al lado derecho de la pantalla).
Descubre cómo hacer una captura sin tarjeta.

Cardless operations#

Puedes hacer una reautorización, captura o anulación sin necesidad de leer la tarjeta. A continuación te explicamos cómo puedes hacer una operación sin tarjeta:
NOTA: También puedes revisar la información de un reembolso sin tarjeta.
Para hacer una operación sin tarjeta debes enviar el campo omit_card con el valor true en el request. Los campos obligatorios para una operación sin tarjeta son los siguientes:
PROPIEDADTIPOValores permitidos
amountObject
transaction_modeStringAuthorization, Void
transaction_typeStringcharge, reAuthorization, capture
client_transaction_idString
transaction_referenceString
omit_cardBooleantrue
NOTA: Las operaciones sin tarjeta están actualmente en fase Beta en Perú para tarjetas de crédito y débito Visa y Mastercard.

Ejemplo de una operación sin tarjeta#

Para hacer una operación sin tarjeta, se envía el campo omit_card con el valor true y se omiten los demás campos no obligatorios:
{
    "amount": {
        "currency": "PEN",
        "iva": 0.0,
        "subtotal_iva": 0.0,
        "subtotal_iva0": 600
    },
    "transaction_mode": "Authorization",
    "transaction_type": "reAuthorization",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
    "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
    "omit_card": true
}
{
    "amount": {
        "currency": "PEN",
        "iva": 0.0,
        "subtotal_iva": 0.0,
        "subtotal_iva0": 600
    },
    "transaction_mode": "Authorization",
    "transaction_type": "capture",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
    "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
    "omit_card": true
}
{
    "amount": {
        "currency": "PEN",
        "iva": 0.0,
        "subtotal_iva": 0.0,
        "subtotal_iva0": 600
    },
    "transaction_mode": "Void",
    "transaction_type": "charge",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
    "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
    "omit_card": true
}

Request

Header Params

Body Params application/json

Examples

Responses

🟢200
application/json
OK
Bodyapplication/json

🟠400
🟠401
🔴500
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location '/pos/v1/transaction' \
--header 'Private-Credential-Id;' \
--header 'Content-Type: application/json' \
--data '{
    "card": {
        "card_holder_name": "John Doe"
    },
    "amount": {
        "iva": 0,
        "tip": 0,
        "currency": "PEN",
        "extra_taxes": {
            "iac": 0,
            "ice": 0,
            "airport_tax": 0,
            "travel_agency": 0
        },
        "subtotal_iva": 0,
        "subtotal_iva0": 600
    },
    "country": "PER",
    "cvm_type": "none",
    "is_cashback": false,
    "pos_details": {
        "brand": "SUNMI",
        "model": "P2-EU",
        "version": "Kushki SunmiV1.1.26",
        "location": {
            "latitude": -12.0464,
            "longitude": -77.0428
        },
        "has_print": true,
        "terminal_id": "PB04216R20537"
    },
    "card_details": {
        "tracks": {
            "track_ksn": "FFFF4357486333600002",
            "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
        },
        "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
        "pin_ksn": "FFFF4357486333600002",
        "reading_type": "ICC"
    },
    "contact_details": {
        "email": "",
        "last_name": "",
        "first_name": "",
        "phone_number": "",
        "document_type": "-1",
        "document_number": ""
    },
    "transaction_mode": "Authorization",
    "transaction_type": "preAuth",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}'
Response Response Example
200 - Approved preAuth transaction
{
    "additional_amounts": {
        "account_type": "",
        "amount": 0,
        "amount_type": "",
        "card_type": "",
        "currency_code": ""
    },
    "authorized_amount": 601,
    "card_type": "credit",
    "cvm_type": "none",
    "F11": "101658",
    "franchise": "MASTERCARD",
    "kushki_response": {
        "code": "000",
        "message": "Transacción Aprobada."
    },
    "message_fields": {
        "F38": "890862",
        "F39": "00"
    },
    "transaction_reference": "2aa48997-a545-4bdb-8e1c-a57546f03e5f",
    "transaction_status": "APPROVAL",
    "transaction_type": "preAuth",
    "ticket_number": "111727462978861299"
}
Modified at 2026-09-11 14:56:09
Previous
Two-step Payments
Next
Voids & Refunds
Built with