Recibir Pagos (PAYIN)
Aprende cómo aceptar pagos de clientes usando métodos de pago locales en toda América Latina.
¿Qué es PAYIN?
PAYIN es el tipo de orden utilizado para aceptar pagos de clientes en tu cuenta de saldo virtual.
Casos de Uso
Acepta pagos para compras online en el checkout
Recauda pagos por servicios prestados
Pagos recurrentes para suscripciones
Acepta pagos por facturas emitidas
Cómo Funciona
Flujo de Alto Nivel
Cliente inicia checkout
Usuario agrega artículos al carrito y procede al pago
Tu app crea orden PAYIN
Envía detalles de la orden a la API de Koywe
Koywe devuelve URL de pago
Recibes una URL de checkout para el cliente
Cliente completa el pago
Cliente es redirigido a la página de pago y paga usando su método preferido
Koywe confirma el pago
Proveedor de pago confirma y Koywe acredita tu cuenta virtual
Tu app recibe webhook
Eres notificado vía webhook para cumplir con la orden
Diagrama de Flujo Detallado
Países y Métodos de Pago Soportados
Colombia 🇨🇴
| Método | Tipo | Tiempo de Liquidación |
|---|---|---|
| PSE | Transferencia bancaria | Instantáneo - 2 horas |
| Nequi | Billetera móvil | Instantáneo |
Aprende más sobre métodos de pago colombianos →
Brasil 🇧🇷
| Método | Tipo | Tiempo de Liquidación |
|---|---|---|
| PIX | Pago instantáneo | Instantáneo |
México 🇲🇽
| Método | Tipo | Tiempo de Liquidación |
|---|---|---|
| SPEI | Transferencia bancaria | 2-24 horas |
| Tarjetas | Crédito/Débito | Instantáneo |
Chile 🇨🇱
| Método | Tipo | Tiempo de Liquidación |
|---|---|---|
| Khipu | Transferencia bancaria | Instantáneo - 2 horas |
Argentina 🇦🇷
| Método | Tipo | Tiempo de Liquidación |
|---|---|---|
| Varios | Métodos locales | Varía |
Prerequisitos
Antes de integrar órdenes PAYIN, asegúrate de tener:
Requerido:
- ✅ API Key y Secret
- ✅ ID de Organización
- ✅ ID de Comercio
- ✅ Comprensión de Conceptos Clave
Recomendado:
- Endpoint de webhook configurado
- Manejo de errores implementado
- Pruebas en entorno sandbox
Inicio Rápido
¿Quieres empezar de inmediato? Sigue nuestra guía de integración paso a paso:
Guía detallada con ejemplos de código en cURL, Node.js y Python
O prueba el inicio rápido para un resumen más rápido:
Crea tu primera orden PAYIN en minutos
Flujo de Pago Explicado
Proceso Paso a Paso
1. Autenticación
Obtén un token de acceso usando tus credenciales API.
const token = await authenticate(apiKey, secret);2. Obtener Métodos de Pago Disponibles
Consulta qué métodos de pago están disponibles para el país del cliente.
const methods = await getPaymentMethods('CO', 'COP');
// Devuelve: PSE, NEQUI, etc.3. Crear Contacto (Opcional pero Recomendado)
Almacena información del cliente para seguimiento y cumplimiento.
const contact = await createContact({
email: 'cliente@ejemplo.com',
fullName: 'Juan Pérez',
country: 'CO'
});4. Crear Orden PAYIN
Crea la orden de pago con monto y método de pago.
const order = await createPayinOrder({
amount: 50000,
currency: 'COP',
paymentMethod: 'PSE',
contactId: contact.id
});5. Redirigir Cliente
Envía al cliente a la URL de pago para completar el pago.
window.location.href = order.paymentUrl;6. Manejar Webhooks
Escucha eventos de webhook para saber cuándo el pago está completo.
// Webhook: order.completed
// -> Cumplir orden, enviar email de confirmaciónProgresión de Estados de Orden
Comprender los estados de orden:
| Estado | Descripción | Próxima Acción |
|---|---|---|
| PENDING | Orden creada, esperando al cliente | Cliente necesita pagar |
| PROCESSING | Pago siendo procesado | Esperar confirmación |
| PAID | Pago confirmado | Fondos siendo liquidados |
| COMPLETED | Fondos en tu cuenta | Cumplir orden |
| FAILED | Pago falló | Mostrar error al cliente |
| EXPIRED | Ventana de pago expiró | Crear nueva orden |
| CANCELLED | Orden cancelada | No se necesita acción |
Conceptos Clave
URL de Pago
Cada orden PAYIN devuelve una paymentUrl:
{
"paymentUrl": "https://checkout.koywe.com/pay/ord_abc123"
}Esta URL:
- Es alojada por Koywe
- Proporciona una experiencia de pago segura
- Maneja la UI del método de pago
- Redirige de vuelta a tu
successUrlofailedUrl
URLs de Éxito y Fallo
Especifica dónde redirigir a los clientes después del pago:
{
"successUrl": "https://tusitio.com/pago/exito",
"failedUrl": "https://tusitio.com/pago/fallo"
}Mejor Práctica: No confíes únicamente en estas redirecciones para el cumplimiento de órdenes. Siempre usa webhooks como fuente de verdad.
ID Externo (Idempotencia)
Usa externalId para vincular órdenes a tu sistema y prevenir duplicados:
{
"externalId": "orden-12345" // Tu ID de orden interno
}Beneficios:
- Seguro para reintentar llamadas API fallidas
- Previene cargos duplicados
- Fácil reconciliación con tu base de datos
Patrones Comunes de Integración
Patrón 1: Checkout Simple
// 1. Usuario hace clic en "Pagar"
// 2. Crear orden
const order = await createPayinOrder({
amount: cartTotal,
currency: 'COP',
paymentMethod: 'PSE'
});
// 3. Redirigir
window.location.href = order.paymentUrl;
// 4. Manejar webhook
// 5. Cumplir ordenPatrón 2: Selección de Método de Pago
// 1. Mostrar métodos disponibles
const methods = await getPaymentMethods(country, currency);
// 2. Usuario selecciona método
// 3. Crear orden con método seleccionado
const order = await createPayinOrder({
amount: cartTotal,
currency: 'COP',
paymentMethod: userSelectedMethod
});
// 4. Redirigir y manejar webhookPatrón 3: Cliente Almacenado
// 1. Verificar si el cliente existe
let contact = await findContact(email);
if (!contact) {
contact = await createContact(customerData);
}
// 2. Crear orden vinculada al contacto
const order = await createPayinOrder({
amount: cartTotal,
contactId: contact.id,
// ... otros campos
});
// 3. Rastrear historial de pagos por contactoPróximos Pasos
Implementación paso a paso con ejemplos de código
Guía detallada para cada método de pago por país
Problemas comunes y cómo resolverlos
Probar flujos de pago en entorno sandbox