Cobros
Solicita un importe a un cliente con una página de pago propia.
Un Cobro (invoice) representa una deuda o el registro de una compra pagada. No es una factura fiscal.
{
"customer": "cus_ejemplo",
"currency": "USD",
"lines": [
{"description": "Asesoría de una hora", "unitAmount": 3000, "quantity": 1}
],
"daysUntilDue": 7
}customer, currency y lines son obligatorios. Una línea puede tener description y unitAmount, o referirse a product y opcionalmente variant. Comparte la url devuelta. Sin daysUntilDue, el cobro no tiene fecha límite.
| Método | Ruta | Acción |
|---|---|---|
| POST / GET | /v1/invoices | Crear / listar |
| GET | /v1/invoices/:invoice | Consultar |
| POST | /v1/invoices/:invoice/void | Anular un cobro abierto |
La lista admite customer, subscription, status, search y orden por creación o importe.
Cupones
Mientras el cobro está abierto, tu cliente puede aplicar un cupón en su página, si tu negocio acepta cupones (allowCoupons en el cobro del navegador). Se valida como en una compra y queda como uso del cupón al pagarse. No se cambia mientras hay un pago en verificación (payment_in_progress).
- Renovación: se emite con el cupón que conserva la suscripción (
subscriptionCouponCode). Otro cupón del plan lo reemplaza desde ese pago, también para las renovaciones siguientes, y el anterior pierde los pagos con descuento que le quedaban. Quitarlo antes de pagar devuelve el de la suscripción. - Cobro suelto: un cupón de productos descuenta las líneas del catálogo que cubre, nunca los conceptos libres.
const invoice = await client.invoices.update("in_ejemplo", { coupon: "VERANO" });Anulación
Solo se anulan cobros abiertos sin un pago en verificación. Un cobro de renovación se gestiona cancelando su suscripción; intentar anularlo directamente devuelve renewal_invoice.
Eventos
invoice.created: se emitió el cobro.invoice.paid: el cobro quedó pagado.invoice.voided: se anuló.invoice.uncollectible: una renovación terminó su plazo sin pagar.
Configura tu receptor de webhooks para mantener tu aplicación al día.