1. Online Payments
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 la configuración de 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
          • 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
      • 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
  • 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 🇨🇱
Status
Soporte / Support
Español
  • English
  • Español
  1. Online Payments

Pagos con tarjeta

La API de Card te permite tokenizar los datos de la tarjeta y procesar pagos de forma segura. Kushki maneja toda la información sensible de la tarjeta: tu servidor solo envía el token.
¡Ten en cuenta!
La generación del token requiere tu Private Key (Private-Merchant-Id). Nunca la expongas en código de cliente o de frontend: llama siempre al endpoint de token desde tu backend.

Flujo de pago#

1
Solicita un token de tarjeta
Llama a POST /card/v1/tokens desde tu backend con los datos de la tarjeta y el monto de la transacción. La respuesta devuelve un token de un solo uso, válido para un único cargo.
{
  "card": {
    "name": "Camila Rodríguez",
    "number": "5451951574925480",
    "expiryMonth": "08",
    "expiryYear": "28",
    "cvv": "121"
  },
  "totalAmount": 150000,
  "currency": "COP"
}
⚠️ Expiración del token: Los tokens expiran en poco tiempo. Úsalos de inmediato: no los guardes para usarlos después.
2
Haz un cargo
Llama a POST /card/v1/charges con el token y el desglose del monto. Incluye contactDetails y, opcionalmente, orderDetails y productDetails para el scoring antifraude.
{
  "token": "f5c64f7ac8ea42d5a58dcdc74de973dc",
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 150000,
    "ice": 0,
    "iva": 0,
    "currency": "COP"
  },
  "contactDetails": {
    "documentType": "CC",
    "documentNumber": "1234567890",
    "firstName": "Camila",
    "lastName": "Rodríguez",
    "email": "user@example.com",
    "phoneNumber": "+573001234567"
  }
}
Un cargo exitoso devuelve un ticketNumber y un transactionReference.
3
Procesa la respuesta
Revisa transactionStatus: "APPROVAL" significa que el cargo fue autorizado.
{
  "ticketNumber": "922513792073660814",
  "transactionReference": "6f16659e-b711-4995-a9ae-161aecbd6521"
}
Para la respuesta completa (detalles de la tarjeta, nombre del banco, montos), incluye "fullResponse": "v2" en tu request de cargo.

Monedas#

Colombia admite una moneda:
MonedaCódigo
Peso colombianoCOP

Tipos de documento#

ValorDescripción
CCCédula de Ciudadanía 🇨🇴
NITNúmero de Identificación Tributaria 🇨🇴
CECédula de Extranjería 🇨🇴
TITarjeta de Identidad 🇨🇴
PPPasaporte 🇨🇴

Cargos diferidos (cuotas)#

Colombia admite pagos diferidos (cuotas). Primero llama al endpoint de opciones de diferido para saber qué planes de cuotas están disponibles para el BIN de la tarjeta del cliente y luego incluye el plan en el request de cargo.

Paso 1 — Consulta los planes disponibles#

GET /card/v1/deferred/{bin}
La respuesta incluye los meses disponibles y el type del diferido:
[
  {
    "months": ["2", "3", "4", "5", "6", "7"],
    "monthsOfGrace": [],
    "type": "all"
  }
]

Paso 2 — Envía el cargo#

Modelo agregador
Modelo de adquirencia
Envía months como campo de primer nivel en el body del cargo (no dentro del objeto deferred):
{
  "token": "24e5cc0d47fc4b2ab098bdb7d0b94569",
  "amount": {
    "subtotalIva": 0,
    "subtotalIva0": 300000,
    "ice": 0,
    "iva": 0,
    "currency": "COP"
  },
  "months": 3,
  "contactDetails": {
    "documentType": "CC",
    "documentNumber": "1234567890",
    "firstName": "Camila",
    "lastName": "Rodríguez",
    "email": "user@example.com",
    "phoneNumber": "+573001234567"
  }
}

Flujo de preautorización#

Usa la preautorización para reservar fondos sin capturarlos de inmediato.
1
Autoriza
POST /card/v1/preAuthorization: reserva fondos en la tarjeta. Devuelve un ticketNumber.
2
Reautoriza (opcional)
POST /card/v1/reauthorization: extiende la ventana de la autorización o ajusta el monto reservado. Envía el ticketNumber original.
3
Captura
POST /card/v1/capture: captura el monto reservado (o una parte). Envía el ticketNumber original.
4
Anula (si no vas a capturar)
DELETE /v1/charges/{ticketNumber}: cancela la autorización y libera los fondos reservados.

Anulación y reembolso#

OperaciónEndpointNotas
VoidDELETE /v1/charges/{ticketNumber}Anula una transacción. Admite anulación total y parcial.
RefundDELETE /v1/refund/{ticketNumber}Devuelve los fondos al tarjetahabiente. Admite reembolso total y parcial.
Para una anulación o un reembolso parcial, incluye el objeto amount en el body del request con el monto parcial.

Cargos recurrentes y validación de tarjeta (transactionMode)#

Incluye transactionMode en la solicitud de token para flujos recurrentes o validación de tarjeta con monto cero:
ValorDescripción
initialRecurrenceMarca la primera transacción de una serie recurrente.
subsequentRecurrenceCargos recurrentes posteriores: no se requiere CVV una vez procesado un initialRecurrence.
accountValidationValidación de tarjeta con monto cero. Confirma que la tarjeta es válida sin cobrarla.

Cargo sin token (v2)#

POST /card/v2/charges acepta los datos de la tarjeta directamente en el body del request, sin necesidad de una llamada previa de token. Útil para integraciones servidor a servidor donde ya tienes los datos de la tarjeta.

Webhooks#

Incluye un array webhooks en tu request de cargo o de preautorización para recibir notificaciones en tiempo real:
{
  "webhooks": ["https://yoursite.com/kushki/notify"]
}
Kushki envía un POST a cada URL cuando cambia el estado de la transacción.

3D Secure#

Colombia admite dos modos de 3DS:
ModoDescripción
Insecure 3DSKushki maneja el flujo 3DS a través de kushki.js. Incluye el jwt que obtienes de la librería al solicitar el token.
Motor 3DS propioOperas tu propio servidor 3DS. Incluye los campos con el resultado de la autenticación en threeDomainSecure — cavv, eci y specificationVersion para Visa; directoryServerTransactionID, eci, ucaf, specificationVersion y collectionIndicator para Mastercard.
Valores de ECI:
Visa — 05 y 06 son seguros; 07 es riesgoso.
Mastercard — 01 y 02 son seguros; 00 es riesgoso.
Para procesar una transacción riesgosa, envía también acceptRisk: true. Al hacerlo, el comercio asume la responsabilidad ante contracargos.

Network Tokens (BETA)#

Para una explicación completa de las dos formas de usar network tokens (trae tu propio token, o deja que Kushki cree uno), consulta Network Tokens.
Colombia admite procesar transacciones con tarjetas tokenizadas por la red (tokens aprovisionados por Visa o Mastercard a través de wallets digitales como Apple Pay).
Para usar esta funcionalidad, envía isNetworkToken: true en tu request de token o de cargo sin token e incluye el objeto networkToken con los metadatos adicionales:
CampoDescripción
deviceTypeTipo de dispositivo que origina la transacción tokenizada
requestorIdID único que la red de tarjetas asigna al solicitante del token
sourceOrigen del token
walletIdIdentificador de la wallet digital: "01" para Apple Pay, "04" para otras wallets
authenticationLevelNivel de autenticación realizado durante el aprovisionamiento del token
mvvMerchant Verification Value de 10 dígitos (solo transacciones Visa)
Incluye también el campo cryptogram en el objeto card cuando el network token traiga un criptograma de la wallet digital o del servicio de tokens del emisor. El valor debe tener entre 20 y 28 caracteres alfanuméricos.
⚠️ BETA: Esta funcionalidad está disponible en Colombia. Contacta a tu ejecutivo de cuenta de Kushki antes de habilitarla.

Información del BIN#

GET /card/v1/bin/{bin} y GET /deferred/v2/bin/{bin} devuelven los metadatos de la tarjeta (banco, marca, tipo de tarjeta, país emisor) para un BIN dado. Úsalos para determinar la elegibilidad de diferido y mostrar el logo de la marca en el checkout.

Verificación de cuenta#

Para verificar una tarjeta sin cobrarla, solicita un token con totalAmount: 0. El flujo de token ejecuta una validación con monto cero contra la tarjeta.

Autenticación#


Uso de la API#

🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

Endpoints disponibles#

Solicitar un token de tarjeta
Tokeniza los datos de la tarjeta. Devuelve un token de un solo uso para un único cargo.
Hacer un cargo
Haz un cargo a una tarjeta usando un token. Admite cargos únicos, diferidos, 3DS, webhooks y scoring antifraude.
Cargo sin token (v2)
Envía los datos de la tarjeta y haz el cargo en una sola llamada, sin token previo.
Anular una transacción
Anula una transacción antes de la liquidación. Admite anulación total y parcial.
Reembolsar una transacción
Devuelve los fondos al tarjetahabiente. Admite reembolso total y parcial.
Consultar opciones de diferido
Devuelve los planes de cuotas disponibles para el BIN de una tarjeta. Llámalo antes de enviar un cargo diferido.
Preautorización
Reserva fondos sin capturarlos de inmediato.
Preautorización sin token (v2)
Preautoriza con los datos de la tarjeta directamente, sin paso previo de token.
Reautorizar
Extiende o ajusta una autorización pendiente.
Capturar
Captura un monto autorizado previamente.
Verificación de cuenta
Verifica una tarjeta con una solicitud de token de monto cero.
Validar el OTP
Valida una contraseña de un solo uso para flujos 3DS basados en OTP.
Información del BIN
Obtén los metadatos de la tarjeta (banco, marca, tipo, país) por BIN.
Información del BIN v2
Consulta extendida de BIN, incluida la elegibilidad de diferido.

¿Tienes una sugerencia sobre esta documentación? Escríbenos.
Modified at 2026-10-08 17:04:55
Previous
Notas de versión
Next
Solicitar un token de tarjeta
Built with