1. Online 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
      • Crear pago (sin token)
      • Solicitar opciones de diferido
      • Reembolsar una transacción
      • Autorizar pagos
      • Preautorización (sin token)
      • Anular una transacción
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Información de BIN V2
      • Información de BIN
      • Validar OTP
    • One-Click and 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
    • 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
    • Smartlinks
      • Crear un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
      • Actualizar un Smartlink
    • Payment Button
      • Crear un Payment Button
    • Analytics
      • Consultar listado de transacciones v2
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Commissions
      • Consultar configuración de comisiones
    • Payment Credentials
      • Crear una credencial
      • Activar o desactivar
      • Eliminar credencial
      • Regenerar una credencial
      • Actualizar credencial
      • Búsqueda avanzada
      • Buscar credenciales
    • Platform Status
      • Consultar estado de la plataforma
      • Consultar estado del gateway
    • Settlement
      • Consultar liquidación
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Fraud Report
      • Consultar alertas de fraude
  • Card Present Billpocket
    • Notas de versión
    • Notas de versión del SDK de Android
    • Notas de versión de la app de Android
    • Notas de versión de la app de iOS
    • Get Started
      • Crear una cuenta
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transferencia de fondos a tu cuenta bancaria
      • Errores de transferencia de fondos
    • Terminals
      • App Review
      • Splash Screen
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Crear checkout
        • Consultar detalles del checkout
      • E-commerce Flex
        • Obtener token
        • Validar token
        • Cobrar pagos
        • Reembolso
        • Capturar un pago autorizado
        • Consultar estado
    • Catalogs
      • Estados
      • Municipios
      • Empresas de impuestos
      • Actividades comerciales
    • Accounts
      • Clabe Account Setup
        • Agregar cuenta CLABE
      • Deposit Accounts
        • Agregar o actualizar cuenta CLABE
    • User Settings
      • Crear usuario
    • Card Present Payment Services
      • Cloud Terminal API
        • Cobrar pagos con tarjeta
        • Imprimir ticket
        • Cancelar notificación push
        • Consultar estado de la transacción
        • Cobrar pagos con tarjeta v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK Android
        • Errores del SDK de Android
    • Transactions
      • Transaction List
        • Obtener token
        • Consultar listado de transacciones
        • Consultar listado de transacciones v2
        • Consultar listado de transacciones v3
        • Consultar listado de transacciones v4
      • Cancel Payments
        • Códigos de error de cancelación
        • Cancelar pagos
  • API Raw Card Present
    • El objeto Amount
    • Catálogo de errores
    • Proceso de intercambio de llaves
    • Notas de versión
    • Datos de prueba
    • One-time payments
      • Pago único
    • Two-step-payments
      • Autorización y captura
    • 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
      • Webhooks — Pagos con tarjeta
      • Webhooks — Reembolsos
      • Webhooks — Introducción
      • Buenas prácticas
      • 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
        • 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)
        • Search
          • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment
        • 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
        • 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
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment-2
    • Card Present (CP)
    • one-and-two-step-payment-2
    • SubscriptionTransactionsResponse
    • FraudAlertRequest
    • StatusComponent
    • SettlementDateRangeRequest
    • amount
    • ChargebackItem
    • SubscriptionTransaction
    • extra_taxes
    • RawResponse
    • CommandText
    • Card Not Present (CNP)
    • Deferred
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400
    • SettlementRecord
    • card
    • CardData
    • CommandColumns
    • FraudAlertRecord
    • SettlementResponse
    • currency
    • webhooksItem
    • ErrorResponse
    • Country
    • ErrorResponse401
    • LinkFailure
    • ColumnItem
    • ValidationError
    • Amount
    • card_details
    • ErrorResponse403
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • payment_method
    • ErrorResponse500
    • CommandFeed
    • TransactionStatus
    • deferred
    • CommandSpace
    • ReadingType
    • pos_details
    • ContactDetails
    • sub_merchant
    • CommandCut
    • FailureReason
    • contact_details
    • Subscription
    • metadata
    • CommandImage
    • EventTerminal
    • documentType
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • EventOperation
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • EventAmount
    • Billing-Address
    • SubscriptionUpdate
    • EventExtraTaxes
    • PrintJobAccepted
    • PrinterError
    • EventMetadata
    • SubscriptionAdjustmentRequest
    • product
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • AmountCore
    • webhooks
    • headers
    • ExtraTaxes
    • PrintWebhookPayload
    • webhooksChargeback
    • Metadata
    • 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
HomePerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Pagos con tarjeta

La API de Card te permite tokenizar los datos de la tarjeta y procesar pagos de forma segura en México. Kushki maneja toda la información sensible de la tarjeta: tu servidor solo envía el token. Todos los montos van en pesos mexicanos (MXN).
¡Tenlo en cuenta!
Hay dos credenciales y no son intercambiables:
Public Key (Public-Merchant-Id): tokenización y consultas de tarjeta — POST /card/v1/tokens, POST /rules/v1/secureValidation, GET /card/v1/deferred/{bin}, GET /card/v1/bin/{bin} y GET /deferred/v2/bin/{bin}.
Private Key (Private-Merchant-Id): todas las operaciones que mueven dinero — cargos, preautorizaciones, reautorizaciones, capturas, anulaciones y reembolsos.
Nunca expongas la Private Key en código del lado del cliente ni del frontend: llama a esos endpoints 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": "Juan Pérez",
    "number": "4242424242424242",
    "expiryMonth": "08",
    "expiryYear": "28",
    "cvv": "123"
  },
  "totalAmount": 116,
  "currency": "MXN"
}
2
Haz el cargo
Envía POST /card/v1/charges con el token y el desglose del monto (amount). El IVA en México normalmente es del 16 %.
{
  "token": "f5c64f7ac8ea42d5a58dcdc74de973dc",
  "amount": {
    "subtotalIva": 100,
    "subtotalIva0": 0,
    "iva": 16,
    "currency": "MXN"
  }
}

Modelos de integración#

Algunas capacidades solo están disponibles en el modelo Acquirer. Confirma tu modelo con tu ejecutivo de cuenta de Kushki antes de integrar.
CapacidadDisponibilidad
Network tokens (isNetworkToken, networkToken, cryptogram)Solo Acquirer — BETA en México
isoErrorCode en cargos declinadosSolo Acquirer, y únicamente cuando fullResponse es v2
messageFields (códigos de respuesta adicionales de la marca)Solo Acquirer

Tipos de documento#

TipoDescripción
CCDocumento de identidad.
CURPClave Única de Registro de Población.
RFCRegistro Federal de Contribuyentes.

Pagos diferidos — Meses Sin Intereses (MSI)#

México admite pagos diferidos con Meses Sin Intereses (MSI).
1
Consulta los planes disponibles
Llama a GET /card/v1/deferred/{bin} con el BIN de la tarjeta para obtener los planes de MSI que permite el emisor. Este es el endpoint recomendado para MSI. Admite los primeros seis u ocho dígitos del número de tarjeta.
2
Envía el cargo diferido
Envía POST /card/v1/charges incluyendo el objeto deferred:
{
  "token": "f5c64f7ac8ea42d5a58dcdc74de973dc",
  "amount": { "subtotalIva": 100, "subtotalIva0": 0, "iva": 16, "currency": "MXN" },
  "deferred": {
    "creditType": "03",
    "graceMonths": "0",
    "months": 6
  }
}
creditType: "03" corresponde a Meses Sin Intereses. Los valores disponibles de months dependen del banco emisor.

Pagos en dos pasos (preautorización y captura)#

Reserva los fondos ahora y captúralos después: útil para pedidos que se confirman luego del checkout.
1
Preautoriza
POST /card/v1/preAuthorization reserva el monto en la cuenta del tarjetahabiente.
2
Captura
POST /card/v1/capture cobra el monto reservado (total o parcial).
3
Reautoriza (opcional)
POST /card/v1/reauthorization ajusta un monto preautorizado antes de la captura.

Pagos sin token#

Si tu integración cumple con PCI, puedes enviar los datos de la tarjeta directamente, sin el paso aparte de token:
POST /card/v2/charges: cargo sin token.
POST /card/v2/preAuthorization: preautorización sin token.

3D Secure#

Puedes dejar que Kushki ejecute el challenge de 3DS o enviar el resultado de tu propio motor de autenticación.

3DS gestionado por Kushki#

Envía require3DS en true al solicitar el token (POST /card/v1/tokens). Kushki ejecuta el challenge y devuelve el resultado de la autenticación.

Motor 3DS propio#

Si usas tu propio motor, envía el objeto threeDomainSecure en el cargo. Los campos obligatorios dependen de la marca de la tarjeta:
CampoVisaMastercard
cavvObligatorio—
ucaf—Obligatorio
eciObligatorioObligatorio
specificationVersionObligatorioObligatorio
collectionIndicator—Obligatorio
directoryServerTransactionID—Obligatorio
specificationVersion admite 2.0.0 y 2.2.0. El soporte para 3D Secure 1.0.2 terminó en octubre de 2022, así que hay que usar la versión 2 del protocolo.
Electronic Commerce Indicator (eci): es el valor que devuelve el directory server con el resultado del intento de autenticación.
MarcaValorSignificado
Visa05, 06Transacción segura.
Visa07Transacción riesgosa. Envía acceptRisk en true para procesarla.
Mastercard01, 02Transacción segura.
Mastercard00Transacción riesgosa. Envía acceptRisk en true para procesarla.
collectionIndicator (solo Mastercard):
ValorPara ECISignificado
000La autenticación 3DS falló o no se pudo intentar.
101El emisor no está listo, pero hay traslado de responsabilidad porque el comercio sí solicitó 3DS.
202Transacción autenticada por el emisor, con traslado de responsabilidad.
Responsabilidad
Al enviar acceptRisk en true, el comercio asume la responsabilidad en caso de chargebacks.

Network Tokens#

Un network token reemplaza el PAN de la tarjeta por un token provisionado por la red de pago (Visa, Mastercard) o por una wallet digital. BETA — disponible solo en el modelo Acquirer.
Envía isNetworkToken en true junto con el objeto networkToken. Si omites el campo o lo envías en false, el número de tarjeta se trata como un PAN tradicional.
Disponible en:
POST /card/v1/tokens: acepta además cryptogram.
POST /card/v2/charges: cargo sin token.
CampoDescripción
walletId01 para Apple Pay, 04 para otras wallets.
requestorIdIdentificador del solicitante del token que asigna la red.
sourceOrigen del token.
deviceTypeTipo de dispositivo del que proviene el token.
authenticationLevelNivel de autenticación aplicado.
mvvMerchant Verification Value.

Anulaciones y reembolsos#

AcciónEndpointCuándo
AnulaciónDELETE /v1/charges/{ticketNumber}Reversa el mismo día, antes de la liquidación.
ReembolsoDELETE /v1/refund/{ticketNumber}Después de la liquidación: devuelve los fondos al tarjetahabiente.

Idempotencia#

Envía la cabecera Idempotency-Key para reintentar una operación de forma segura, sin duplicarla. Las llaves tienen una vigencia de 24 horas.
EndpointIdempotency-Key
DELETE /v1/charges/{ticketNumber} (anulación)Obligatoria
DELETE /v1/refund/{ticketNumber} (reembolso)Opcional

Validación de OTP e información de la tarjeta#

POST /rules/v1/secureValidation: valida el challenge de OTP cuando se requiere autenticación. Envía secureServiceId y otpValue; los dos son obligatorios.
GET /card/v1/bin/{bin}: obtén la información del BIN de la tarjeta (marca, tipo, emisor). Admite solo los primeros seis dígitos.
GET /deferred/v2/bin/{bin}: la misma información, admitiendo los primeros ocho a diez dígitos.
Los tres endpoints no son intercambiables: cada uno admite una longitud de BIN distinta, y solo GET /card/v1/deferred/{bin} devuelve planes de MSI.
Modified at 2026-09-11 14:42:15
Previous
Notas de versión
Next
Solicitar un token de tarjeta
Built with