Pagar Proveedores (PAYOUT)
Aprende cómo enviar pagos desde tu saldo virtual a cuentas bancarias externas.
¿Qué es PAYOUT?
PAYOUT es el tipo de orden utilizado para enviar fondos desde tu cuenta de saldo virtual a cuentas bancarias externas (proveedores, vendedores, contratistas, etc.).
Casos de Uso
Pagar a proveedores y vendedores por bienes y servicios
Enviar pagos a freelancers y contratistas
Devolver pagos a clientes
Pagar a vendedores en tu plataforma marketplace
Cómo Funciona
Flujo de Alto Nivel
Verifica tu saldo virtual
Asegúrate de tener fondos suficientes
Crea contacto de proveedor
Almacena información del proveedor y cuenta bancaria
Crea orden PAYOUT
Especifica monto y cuenta bancaria de destino
Fondos son debitados
Dinero es inmediatamente reservado de tu cuenta virtual
Transferencia bancaria iniciada
Koywe inicia transferencia al banco del proveedor
Proveedor recibe fondos
Tiempo de liquidación varía por país (instantáneo a 24 horas)
Recibes confirmación
Notificación webhook cuando la transferencia se completa
Diagrama de Flujo Detallado
Prerequisitos
Antes de hacer payouts:
Requerido:
- ✅ Fondos suficientes en cuenta virtual
- ✅ Contacto de proveedor creado
- ✅ Cuenta bancaria de proveedor vinculada
- ✅ Detalles de cuenta bancaria verificados
Crítico: Siempre verifica el saldo de tu cuenta virtual antes de crear una orden PAYOUT. Las órdenes fallarán si no tienes fondos suficientes.
Países Soportados
Colombia 🇨🇴
- Método: Transferencia bancaria directa
- Moneda: COP
- Liquidación: 1-2 horas (horas hábiles)
- Bancos: Todos los bancos colombianos
Brasil 🇧🇷
- Método: Transferencia PIX
- Moneda: BRL
- Liquidación: Instantánea
- Bancos: Todos los bancos brasileños con PIX
México 🇲🇽
- Método: Transferencia SPEI
- Moneda: MXN
- Liquidación: 2-24 horas
- Bancos: Todos los bancos mexicanos
Chile 🇨🇱
- Método: Transferencia bancaria
- Moneda: CLP
- Liquidación: 1-2 días hábiles
- Bancos: Todos los bancos chilenos
Argentina 🇦🇷
- Método: Transferencia bancaria
- Moneda: ARS
- Liquidación: 1-2 días hábiles
- Bancos: Todos los bancos argentinos
Ejemplo Rápido
Aquí hay un flujo PAYOUT simple:
// 1. Verificar saldo
const balance = await getBalance(token, orgId, merchantId, 'COP');
console.log('Disponible:', balance.availableBalance); // ej., 1,000,000 COP
// 2. Crear contacto de proveedor
const provider = await createContact(token, orgId, merchantId, {
fullName: 'Servicios ABC SAS',
email: 'proveedor@ejemplo.com',
country: 'CO',
documentType: 'NIT',
documentNumber: '900123456-1',
businessType: 'COMPANY'
});
// 3. Agregar cuenta bancaria
const bankAccount = await addBankAccount(token, orgId, merchantId, provider.id, {
country: 'CO',
currency: 'COP',
bankCode: 'BANCOLOMBIA',
accountNumber: '1234567890',
accountType: 'checking',
holderName: 'Servicios ABC SAS'
});
// 4. Crear orden PAYOUT
const payout = await createPayoutOrder(token, orgId, merchantId, {
type: 'PAYOUT',
originCurrencySymbol: 'COP',
destinationCurrencySymbol: 'COP',
amountIn: 500000, // 500,000 COP
contactId: provider.id,
destinationAccountId: bankAccount.id,
description: 'Pago por Factura #INV-001'
});
console.log('Payout creado:', payout.id);
console.log('Estado:', payout.status); // "PROCESSING"Diferencias Clave vs PAYIN
| Característica | PAYIN | PAYOUT |
|---|---|---|
| Dirección | Cliente → Tu cuenta | Tu cuenta → Proveedor |
| Saldo | Acredita tu cuenta | Debita tu cuenta |
| URL de Pago | Sí (para cliente) | No |
| Cuenta Bancaria | Opcional | Requerida |
| Contacto | Opcional | Recomendado |
| Verificación Saldo | No necesaria | Crítica |
Comparación de Flujo de Pago
PAYIN (Recibir)
Cliente paga → Fondos acreditados → Webhook → Cumplir ordenPAYOUT (Enviar)
Verificar saldo → Crear orden → Fondos debitados → Transferencia bancaria → Confirmación webhookRequisitos de Saldo
Verificar Saldo Antes de PAYOUT
async function safeCreatePayout(token, orgId, merchantId, payoutData) {
// 1. Obtener saldo actual
const balances = await getMerchantBalances(token, orgId, merchantId);
const balance = balances.find(b => b.currencySymbol === payoutData.currency);
// 2. Verificar saldo disponible
if (!balance || balance.availableBalance < payoutData.amount) {
throw new Error(
`Saldo insuficiente. Disponible: ${balance?.availableBalance || 0} ${payoutData.currency}, ` +
`Requerido: ${payoutData.amount} ${payoutData.currency}`
);
}
console.log(`✓ Saldo suficiente: ${balance.availableBalance} ${payoutData.currency}`);
// 3. Crear payout
const payout = await createPayoutOrder(token, orgId, merchantId, payoutData);
return payout;
}Tiempos de Liquidación
Comprender cuándo los proveedores reciben fondos:
| País | Método | Liquidación Típica |
|---|---|---|
| Colombia | Transferencia Bancaria | 1-2 horas (horas hábiles) |
| Brasil | PIX | Instantánea (24/7) |
| México | SPEI | 2-24 horas |
| Chile | Transferencia Bancaria | 1-2 días hábiles |
| Argentina | Transferencia Bancaria | 1-2 días hábiles |
Horas Hábiles: Para países con restricciones de horario hábil, las transferencias iniciadas fuera de horario o fines de semana pueden procesarse el próximo día hábil.
Próximos Pasos
Implementación paso a paso con ejemplos de código
Aprende sobre gestión de saldo
Probar payouts en entorno sandbox
Gestionar información de proveedores