Recibir Pagos - Resumen

Comprender órdenes PAYIN y aceptación de pagos

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

1

Cliente inicia checkout

Usuario agrega artículos al carrito y procede al pago

2

Tu app crea orden PAYIN

Envía detalles de la orden a la API de Koywe

3

Koywe devuelve URL de pago

Recibes una URL de checkout para el cliente

4

Cliente completa el pago

Cliente es redirigido a la página de pago y paga usando su método preferido

5

Koywe confirma el pago

Proveedor de pago confirma y Koywe acredita tu cuenta virtual

6

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:

O prueba el inicio rápido para un resumen más rápido:


Flujo de Pago Explicado

Proceso Paso a Paso

1. Autenticación

Obtén un token de acceso usando tus credenciales API.

1const 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.

1const methods = await getPaymentMethods('CO', 'COP');
2// Devuelve: PSE, NEQUI, etc.

3. Crear Contacto (Opcional pero Recomendado)

Almacena información del cliente para seguimiento y cumplimiento.

1const contact = await createContact({
2 email: 'cliente@ejemplo.com',
3 fullName: 'Juan Pérez',
4 country: 'CO'
5});

4. Crear Orden PAYIN

Crea la orden de pago con monto y método de pago.

1const order = await createPayinOrder({
2 amount: 50000,
3 currency: 'COP',
4 paymentMethod: 'PSE',
5 contactId: contact.id
6});

5. Redirigir Cliente

Envía al cliente a la URL de pago para completar el pago.

1window.location.href = order.paymentUrl;

6. Manejar Webhooks

Escucha eventos de webhook para saber cuándo el pago está completo.

1// Webhook: order.completed
2// -> 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:

1{
2 "paymentUrl": "https://checkout.koywe.com/pay/ord_abc123"
3}

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:

1{
2 "successUrl": "https://tusitio.com/pago/exito",
3 "failedUrl": "https://tusitio.com/pago/fallo"
4}

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:

1{
2 "externalId": "orden-12345" // Tu ID de orden interno
3}

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// 1. Usuario hace clic en "Pagar"
2// 2. Crear orden
3const order = await createPayinOrder({
4 amount: cartTotal,
5 currency: 'COP',
6 paymentMethod: 'PSE'
7});
8// 3. Redirigir
9window.location.href = order.paymentUrl;
10// 4. Manejar webhook
11// 5. Cumplir orden

Patrón 2: Selección de Método de Pago

1// 1. Mostrar métodos disponibles
2const methods = await getPaymentMethods(country, currency);
3// 2. Usuario selecciona método
4// 3. Crear orden con método seleccionado
5const order = await createPayinOrder({
6 amount: cartTotal,
7 currency: 'COP',
8 paymentMethod: userSelectedMethod
9});
10// 4. Redirigir y manejar webhook

Patrón 3: Cliente Almacenado

1// 1. Verificar si el cliente existe
2let contact = await findContact(email);
3if (!contact) {
4 contact = await createContact(customerData);
5}
6// 2. Crear orden vinculada al contacto
7const order = await createPayinOrder({
8 amount: cartTotal,
9 contactId: contact.id,
10 // ... otros campos
11});
12// 3. Rastrear historial de pagos por contacto

Próximos Pasos


Recursos Adicionales