1. Online Payments
Español
  • English
  • Español
  • Docs para desarrolladores 🇪🇨
  • Online Payments
    • Notas de versión
    • Errores del API de Kushki
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Reembolsar una transacción
      • Anular una transacción
      • Solicitar opciones de diferido
      • Validar OTP
      • Información de BIN V2
      • Información de BIN
    • One Click and 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
      • Consultar información del cargo recurrente
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Cash in
      • Solicitar un token de Cash In
      • Iniciar transacción
      • Actualizar una transacción de Cash In
      • Estado de la transacción
      • Eliminar una transacción de Cash In
    • Transfer in
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • Analytics
      • Consultar listado de transacciones v2
    • Smartlinks
      • Crear un Smartlink
      • Actualizar un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
    • Status
      • Consultar estado del gateway
      • Consultar estado de la plataforma
    • Commissions
      • Consultar configuración de comisiones
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Activar o desactivar
      • Eliminar credencial
      • Actualizar credencial
      • Regenerar una credencial
      • Búsqueda avanzada
    • Payment Button
      • Crear un Payment Button
    • Settlement
      • Consultar liquidación
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • threeDomainSecure
    • Card-old
    • Channel
    • SubscriptionTransactionsResponse
    • Card Present (CP)
    • Amount-cash-in
    • webhooks
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • Card
    • networkToken
    • ChargebackItem
    • SettlementRecord
    • Card Not Present (CNP)
    • currency
    • ErrorResponse
    • SubscriptionTransaction
    • Subscription
    • Amount
    • ErrorResponse400
    • SettlementResponse
    • Country
    • Deferred
    • extraTaxes
    • ErrorResponse401
    • Language
    • ErrorResponse403
    • Metadata
    • payment_method
    • ErrorResponse500
    • ContactDetails
    • orderDetails
    • Shipping Address
    • Billing-Address
    • payment_submethod
    • SubscriptionUpdate
    • documentType
    • SubscriptionAdjustmentRequest
    • threeDomainSecure
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • ExternalReferenceId
    • product
    • transactionType
    • SettlementTicketRequest
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪México 🇲🇽Ecuador 🇪🇨
Colombia 🇨🇴Chile 🇨🇱
  1. Online Payments

Pagos con tarjeta

La API de Tarjetas te permite tokenizar los datos de la tarjeta y procesar pagos de forma segura en Ecuador. Kushki maneja toda la información sensible de la tarjeta: tu servidor solo envía el token.
¡Ten en cuenta!
La generación de tokens y los cargos requieren tu Private Key (Private-Merchant-Id). Nunca la expongas en código de cliente o 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": "Juan Pérez",
    "number": "4242424242424242",
    "expiryMonth": "08",
    "expiryYear": "28",
    "cvv": "123"
  },
  "totalAmount": 100.00,
  "currency": "USD"
}
⚠️ Expiración del token: Los tokens son de un solo uso y expiran en poco tiempo. Úsalos de inmediato y nunca los almacenes.
2
Realiza un cargo
Llama a POST /card/v1/charges con el token y el desglose del monto. Incluye contactDetails y, de forma opcional, orderDetails para el scoring antifraude.
{
  "token": "f5c64f7ac8ea42d5a58dcdc74de973dc",
  "amount": {
    "subtotalIva": 89.29,
    "subtotalIva0": 0,
    "ice": 0,
    "iva": 10.71,
    "currency": "USD"
  },
  "contactDetails": {
    "documentType": "CI",
    "documentNumber": "1712345678",
    "firstName": "Juan",
    "lastName": "Pérez",
    "email": "user@example.com"
  }
}
Un cargo exitoso devuelve un ticketNumber y un transactionReference. Guarda ambos para conciliación, anulaciones y reembolsos.
3
Procesa la respuesta
Revisa los campos code/message. Si se aprueba, entrega el bien o servicio. Si se rechaza, muestra el error al comprador y permite reintentar con un token nuevo.

Monedas#

Ecuador opera en dólares estadounidenses (USD). Envía el desglose completo del monto para que los impuestos se reporten correctamente:
CampoDescripción
subtotalIvaMonto sujeto a IVA.
subtotalIva0Monto no sujeto a IVA.
iceImpuesto a los Consumos Especiales (ICE), si aplica.
ivaMonto del IVA.
currencySiempre USD.

Tipos de documento#

TipoDescripción
CICédula de identidad.
RUCRegistro Único de Contribuyentes.
PASPasaporte (tarjetahabientes extranjeros).

Cargos diferidos#

Ecuador admite pagos diferidos: corriente, diferido con interés y diferido sin interés, con meses de gracia opcionales.
1
Consulta los planes disponibles
Llama a GET /card/v1/deferred/{bin} con el BIN de la tarjeta para obtener las opciones de diferido que permite el emisor (months, creditType, graceMonths).
2
Envía el cargo diferido
Envía POST /card/v1/charges incluyendo el objeto deferred:
{
  "token": "f5c64f7ac8ea42d5a58dcdc74de973dc",
  "amount": { "subtotalIva": 89.29, "subtotalIva0": 0, "ice": 0, "iva": 10.71, "currency": "USD" },
  "deferred": {
    "creditType": "03",
    "graceMonths": 2,
    "months": 12
  }
}

Validación de OTP (3D Secure)#

Para las transacciones que requieren autenticación del tarjetahabiente, valida la contraseña de un solo uso con POST /rules/v1/secureValidation antes de completar el cargo.

Anulación y reembolso#

OperaciónEndpointCuándo usarla
AnulaciónDELETE /v1/charges/{ticketNumber}Cancelar un cargo el mismo día, antes de la liquidación.
ReembolsoDELETE /v1/refund/{ticketNumber}Devolver los fondos después de que la transacción se liquidó.

Información del BIN#

Consulta los metadatos de la tarjeta (marca, banco, tipo) antes de cobrar:
GET /card/v1/bin/{bin} — información del BIN.
GET /deferred/v2/bin/{bin} — información del BIN v2, incluye la elegibilidad para diferidos.

Cargos recurrentes#

Para vincular un cargo a una suscripción externa en Ecuador, envía externalSubscriptionID en POST /card/v1/charges. En Ecuador este campo se usa sin originalTransactionID ni citMit.

Autenticación#

Todas las solicitudes se autentican con tu cabecera Private-Merchant-Id. Genera los tokens y los cargos únicamente desde tu backend.

Endpoints disponibles#

MétodoRutaDescripción
POST/card/v1/tokensRequest a card token
POST/card/v1/chargesMake a charge or deferred charge
GET/card/v1/deferred/{bin}Request deferred options
POST/rules/v1/secureValidationValidate OTP
GET/card/v1/bin/{bin}BIN info
GET/deferred/v2/bin/{bin}BIN info v2
DELETE/v1/charges/{ticketNumber}Void a transaction
DELETE/v1/refund/{ticketNumber}Refund a transaction
Modified at 2026-09-11 14:47:09
Previous
Errores del API de Kushki
Next
Solicitar un token de tarjeta
Built with