Skip to Content
Aceptar PagosResumen

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

🛒Checkout E-Commerce

Acepta pagos para compras online en el checkout

💼Pagos de Servicios

Recauda pagos por servicios prestados

🔁Facturación de Suscripciones

Pagos recurrentes para suscripciones

🧾Pagos de Facturas

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étodoTipoTiempo de Liquidación
PSETransferencia bancariaInstantáneo - 2 horas
NequiBilletera móvilInstantáneo

Aprende más sobre métodos de pago colombianos →

Brasil 🇧🇷

MétodoTipoTiempo de Liquidación
PIXPago instantáneoInstantáneo

México 🇲🇽

MétodoTipoTiempo de Liquidación
SPEITransferencia bancaria2-24 horas
TarjetasCrédito/DébitoInstantáneo

Chile 🇨🇱

MétodoTipoTiempo de Liquidación
KhipuTransferencia bancariaInstantáneo - 2 horas

Argentina 🇦🇷

MétodoTipoTiempo de Liquidación
VariosMétodos localesVarí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 de Integración Completa

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:

⚡ Inicio Rápido de 5 Minutos

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ón

Progresión de Estados de Orden

Comprender los estados de orden:

EstadoDescripciónPróxima Acción
PENDINGOrden creada, esperando al clienteCliente necesita pagar
PROCESSINGPago siendo procesadoEsperar confirmación
PAIDPago confirmadoFondos siendo liquidados
COMPLETEDFondos en tu cuentaCumplir orden
FAILEDPago fallóMostrar error al cliente
EXPIREDVentana de pago expiróCrear nueva orden
CANCELLEDOrden canceladaNo 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 successUrl o failedUrl

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 orden

Patró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 webhook

Patró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 contacto

Próximos Pasos


Recursos Adicionales

Last updated on