¿Qué vas a lograr?
Al terminar esta guía podrás crear cobros y enviarlos a tus clientes por múltiples canales. Todo se hace con un solo endpoint (POST /payments), y el canal de entrega depende de los campos que envíes.
Prerrequisitos
- Cuenta de OnePay creada y verificada
- Llaves de API generadas (ver cómo)
- Webhooks configurados (ver cómo)
¿Qué canal necesitas?
| Quiero… | Campo clave | ¿Qué sucede? |
|---|---|---|
| Cobrar por WhatsApp | phone | El cliente recibe el link por WhatsApp |
| Cobrar por Email | email | El cliente recibe el link por correo |
| Crear un link de pago (monto fijo) | amount | Se genera un link con monto predefinido |
| Crear un link de pago (monto abierto) | Sin amount | El cliente ingresa el monto |
| Crear una referencia para el portal | reference | El cliente busca su cobro en el portal |
| Todos los canales | phone + email + reference | Se envía por todos los canales |
Para ver ejemplos detallados de cada caso, consulta los Casos de uso de cobros.
Diagrama de flujo
Paso a paso
Crear la solicitud de cobro
Usa
POST /payments con los campos que necesites según el canal de entrega:- WhatsApp
- Email
- Link manual
- Monto abierto
- Portal de pagos
Obtener el link de pago
En la respuesta recibirás un objeto con el
payment_link:- Si enviaste
phone: el cliente recibe el link automáticamente por WhatsApp. - Si enviaste
email: el cliente recibe el link por correo electrónico. - Si enviaste
reference: el cliente puede buscar el cobro en el portal de pagos. - Si no enviaste ninguno: copia
payment_linky compártelo manualmente.
El cliente completa el pago
Al abrir el link, el cliente verá una página de pago con los métodos habilitados. Si el link es de monto abierto, el cliente ingresará el monto antes de pagar.
Opciones adicionales
Configurar métodos de pago
Usa el campoallows para controlar qué métodos de pago estarán disponibles en el link:
Establecer fecha de expiración
Redireccionar después del pago
Errores comunes
| Error | Causa | Solución |
|---|---|---|
validation_error (10001) | Falta el campo title | Asegúrate de enviar al menos el title |
idempotency_error (10003) | Falta el header x-idempotency | Agrega un token de idempotencia único |
| Pago expirado | El cliente no pagó a tiempo | Crea un nuevo cobro o ajusta expiration_date |