Workers que cuidan tu billing 24/7.
Dunning con 5 reintentos, generación de facturas diaria, NFe automática, alerta de tarjeta por vencer, expiración de propuesta. Todo ejecutándose sin que tengas que recordarlo.
Funcionalidad

35
workers activos
18
jobs programados
5
reintentos estándar
24/7
sin intervención manual
Qué está automatizado
Dunning (Recuperación de Pagos)
DunningConfig por organización: maxRetries (default 5), retryIntervalDays ([1,2,3,5,7]), suspendAfterRetries, gracePeriodDays (30).
- Worker payment-retry cada 6h
- Múltiples métodos en retry (tarjeta → boleto → PIX)
- DelinquentAccount + RecoveryRecord para auditoría
- Webhook en cada intento
Régua de Comunicación Multi-Canal
NotificationChannel: email, in_app, webhook. EmailTemplate por evento + organización. El cliente puede hacer opt-out granular.
- 11 NotificationTypes (invoice_created, payment_failed, trial_ending)
- Templates HTML + texto editables
- NotificationPreference por billing account
Generación Automática de Facturas
Worker invoice-generation diario a las 01:00 UTC. Recorre subscriptions, genera factura idempotente, aplica cupones/créditos, emite NFe (si policy).
- Idempotencia por (subscription, period_start)
- Skip de trial sin tarjeta
- Webhook invoice.created + email
Renovación de Suscripciones
Worker subscription-renewal diario a las 00:00 UTC. Avanza current_period_* en el ciclo. Commitment respetado (12 meses, etc).
- Soporta auto-renew y prompt
- Cancel scheduled procesado antes
- Webhook subscription.renewed
Alerta de Tarjeta por Vencer
Worker card-expiring semanal (lunes 10:00 UTC). Detecta tarjetas con expirationYear/Month en ≤ 30 días. Notifica vía régua.
- Reduce churn por expiración
- Email + in-app con link directo
- Recordatorio configurable
Suspensión Automática
Worker suspension-check diario a las 02:00 UTC. Suspende BillingAccount después de agotado el grace period.
- suspendedAt + razón registrados
- Webhook billing_account.suspended
- Reactivación automática en pago
Expiración de Propuestas
Worker proposal-expiration diario a las 00:30 UTC. Marca proposals como expired después de expires_at. Worker proposal-reminder (09:00) envía recordatorio antes.
- Aumenta tasa de cierre
- Email con link de la propuesta
- Métricas de tiempo promedio
Snapshots de Uso (Analytics)
UsageDailySnapshot + UsageMonthlySnapshot calculados vía worker. Base para analytics, MRR y cohorts.
- Daily snapshot en background
- Monthly snapshot consolidado
- Reduce costo de queries en dashboard
Callbacks de Gateway
Worker callback procesa payloads recibidos de gateways. Handlers dedicados por provider (Pagar.me, Kobana, NFe.io).
- Idempotencia por idempotencyKey
- Retry automático en fallo
- Logs completos en Callback model
Worker Custom Domain (DNS + SSL)
Workers custom-domain-dns + custom-domain-ssl validan DNS, emiten cert Let's Encrypt, renuevan automáticamente.
- ACME protocol (acme-client)
- Renovación 30 días antes de expirar
- Estado: pending → verified → active
Configurar dunning vía API
bash
curl -X PATCH https://api.billing.kobana.com.br/v1/organizations/settings/dunning \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"max_retries": 5,
"retry_interval_days": [1, 3, 5, 7, 14],
"suspend_after_retries": true,
"grace_period_days": 30,
"auto_retry_enabled": true,
"retry_payment_methods": ["pix", "bank_slip", "card"]
}'response
{
"id": "dc_xyz",
"max_retries": 5,
"retry_interval_days": [1, 3, 5, 7, 14],
"grace_period_days": 30
}