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

Transfer In

Transfer In cobra directamente desde la cuenta bancaria de un cliente, sin tarjeta. En Colombia funciona con procesadores, PSE (redirección bancaria) y Bre-B (QR en tiempo real), a través de los mismos endpoints bajo /transfer/v1. Toda integración empieza preguntando qué procesadores tiene el comercio.
Disponibilidad
Los procesadores disponibles y el tipo de integración dependen de la afiliación del comercio y de las políticas de riesgo.

Endpoints#

EndpointMétodo y rutaCredencialPropósitoLo usa
Consultar la configuración de Transfer InGET /transfer/v1/configPúblicaEmpieza aquí. Lista los procesadores habilitados para el comercio y, cuando aplica, los supportedFlows de cada unoTodos
Consultar lista de bancosGET /transfer/v1/bankListPúblicaBancos soportados (code, name)PSE
Solicitar un token de Transfer InPOST /transfer/v1/tokensPúblicaCrea un token de un solo usoTodos
Iniciar transacciónPOST /transfer/v1/initPrivadaInicia la transacción con el tokenTodos
Consultar estadoGET /transfer/v1/status/{token}PrivadaEstado final de la transacciónTodos
Cancelar transacciónPATCH /transfer/v1/cancel/{token}PrivadaCancela una transacción mientras no tenga estado finalBre-B

Flujo de integración#

1
Consulta los procesadores
Llama a Consultar la configuración de Transfer In con la credencial Public-Merchant-Id. processors[] lista los procesadores habilitados para el comercio. Es el punto de partida de toda integración directa por API.
2
Elige el procesador
Una entrada sin supportedFlows es PSE. Una entrada con supportedFlows es un procesador con flujos de pago (Bre-B). Si el comercio tiene varios, usa los supportedFlows de cada entrada para decidir cómo armar cada token.
3
Solicita el token
El cuerpo depende del procesador; consulta Procesadores de un vistazo más abajo. Los tokens son de un solo uso.
4
Inicia la transacción
Envía el token y repite el mismo monto. La respuesta depende del procesador: redirectUrl (PSE) o qr (Bre-B).
5
Confirma el estado final
Por webhook o con Consultar estado.
Kajita y Kushki.js
Estas herramientas no soportan el objeto processor: con ellas no hay consulta de procesadores y la tokenización sigue el proceso de PSE. Bre-B requiere una integración directa por API, donde el token se solicita desde tu backend.

Procesadores de un vistazo#

Los procesadores con flujos de pago, como Bre-B, también se conocen como APM (métodos alternativos de pago).
PSEBre-B
Se identifica porEntrada de config sin supportedFlowsEntrada de config con supportedFlows
Solicitud del tokenbankId, callbackUrl, userType, documentType, documentNumber, email, además de amount y currency. Sin objeto processor.amount, currency y processor: { name, flowType }, copiados tal cual de config. El resto es opcional; bankId no aplica.
Lista de bancosRequeridaNo se usa
Respuesta de initredirectUrlqr
Experiencia del clienteEs redirigido a PSE y luego a su bancoEscanea un QR en su app bancaria
VigenciaToken: 30 minutos, de un solo usoQR: 10 minutos
CancelaciónNo disponibleDisponible mientras no tenga estado final
Tipos de integraciónAPI directa, Kajita, Kushki.jsSolo API directa
DisponibilidadGeneralBeta, en comercios con el procesador habilitado
El token queda ligado al procesador con el que fue generado, y Iniciar transacción lo valida:
Token generadoProcesador del comercioResultado
Sin processorPSEContinúa; la respuesta incluye redirectUrl.
Con processor de Bre-BBre-BContinúa; la respuesta incluye qr.
Con processorOtro procesador422 E046
Sin processorBre-B422 E046
Con processor de Bre-BBre-B sin llaves configuradas404 E049

Detalle por procesador#

PSE
Bre-B (Beta)
Campos de la solicitud del token
CampoRequeridoDescripción
bankIdSícode del banco seleccionado de la lista de bancos.
amountSíObjeto con subtotalIva, subtotalIva0 e iva. Consulta Objeto amount más abajo.
currencySíSiempre COP.
callbackUrlSíURL a la que llega el cliente después de pagar en el banco.
userTypeSí0 = persona natural · 1 = empresa.
documentTypeSíCC, NIT, CE, TI o PP.
documentNumberSíNúmero de documento del cliente.
emailSíCorreo electrónico del cliente.
Los tokens expiran a los 30 minutos y son de un solo uso. Si la transacción falla o el token expira, solicita uno nuevo.
documentTypeDocumento
CCCédula de Ciudadanía
NITNúmero de Identificación Tributaria
CECédula de Extranjería
TITarjeta de Identidad
PPPasaporte
Campos de la respuesta de init
El redirectUrl es de un solo uso: redirige al cliente apenas lo recibas.
CampoDescripción
redirectUrlURL de un solo uso para redirigir al cliente a PSE.
trazabilityCodeTambién llamado CUS: código único de referencia del pago en PSE.
bankIdCódigo del banco seleccionado para la transacción.
bankNameNombre del banco seleccionado para la transacción.
transactionReferenceReferencia única de la transacción.
La respuesta del estado también incluye el trazabilityCode (CUS), que puedes usar para conciliar la transacción con los registros de PSE.

Estados#

Confirma el resultado final con Consultar estado, usando el token original como parámetro de ruta. El webhook y los estados son los mismos para todos los procesadores.
EstadoSignificado
initializedTransactionLa transacción se creó pero no se completó.
approvedTransactionLa transferencia fue autorizada.
declinedTransactionLa transferencia fue rechazada.

Objeto amount#

El objeto amount es obligatorio en la solicitud del token. Usa la siguiente estructura según si la transacción tiene impuestos o no:
Con IVA
Sin impuestos (IVA 0)
Con impuestos adicionales
{
  "amount": {
    "subtotalIva": 100000,
    "subtotalIva0": 0,
    "iva": 10000
  }
}
Pon en subtotalIva la base gravable y en iva el valor del impuesto. Pon subtotalIva0 en 0. Todos los montos en COP.

Notificaciones por webhook#

Puedes recibir notificaciones de la transacción en tiempo real incluyendo el objeto webhooks en tu solicitud de Init Transaction. Esto es independiente de los webhooks configurados en la Kushki Console: los dos canales se disparan al mismo tiempo.
{
  "webhooks": [
    {
      "events": ["approvedTransaction", "declinedTransaction"],
      "headers": [
        { "label": "Authorization", "value": "Bearer your-token" }
      ],
      "urls": [
        "https://merchant.example.com/webhooks/transfer-in"
      ]
    }
  ]
}

Errores#

ProcesadorEndpointHTTPCódigoCuándo ocurreQué hacer
TodosGET /transfer/v1/config500E002Error al consultar la configuración del comercio («Ha ocurrido un error inesperado.»).Reintenta; contacta a soporte si persiste.
Bre-BPOST /transfer/v1/tokens400—El cuerpo no cumple el contrato: falta un campo requerido, valor fuera del enumerado (processor.name, processor.flowType) o propiedad adicional dentro de processor.Corrige el cuerpo según config.
TodosPOST /transfer/v1/init422E046El token no es compatible con el procesador resuelto.Regenera el token para el procesador correcto.
Bre-BPOST /transfer/v1/init404E049El comercio no tiene un procesador Bre-B configurado (faltan las llaves).Verifica la configuración del procesador con Kushki.
Bre-BPATCH /transfer/v1/cancel/{token}400T023La transacción ya alcanzó un estado final.Ninguna: no se puede cancelar.
TodosCualquiera401—Credencial ausente o inválida.Revisa Public-Merchant-Id o Private-Merchant-Id, según el endpoint.

Autenticación y entornos#

Las credenciales se envían en un header; cada endpoint usa una de ellas (consulta la columna Credencial de arriba):
HeaderCredencialUso
Public-Merchant-IdPúblicaConfiguración, lista de bancos y tokenización.
Private-Merchant-IdPrivadaInit, estado y cancelación. Nunca la expongas en código de frontend.
🟢 Producción
🧪 Sandbox (UAT)
https://api.kushkipagos.com/
Modified at 2026-10-23 14:49:23
Previous
Solicitar exportación de chargebacks
Next
Consultar la configuración de Transfer In
Built with