Workers que cuidam do seu billing 24/7.
Dunning com 5 retentativas, geração de faturas diária, NFe automática, alerta de cartão expirando, expiração de proposta. Tudo rodando sem você precisar lembrar.
Funcionalidade

35
workers ativos
18
jobs agendados
5
retentativas padrão
24/7
sem intervenção manual
O que está automatizado
Dunning (Recuperação de Pagamentos)
DunningConfig por organização: maxRetries (default 5), retryIntervalDays ([1,2,3,5,7]), suspendAfterRetries, gracePeriodDays (30).
- Worker payment-retry a cada 6h
- Múltiplos métodos no retry (cartão → boleto → PIX)
- DelinquentAccount + RecoveryRecord para auditoria
- Webhook em cada tentativa
Régua de Comunicação Multi-Canal
NotificationChannel: email, in_app, webhook. EmailTemplate por evento + organização. Cliente pode opt-out granular.
- 11 NotificationTypes (invoice_created, payment_failed, trial_ending)
- Templates HTML + texto editáveis
- NotificationPreference por billing account
Geração Automática de Faturas
Worker invoice-generation diário às 01:00 UTC. Varre subscriptions, gera fatura idempotente, aplica cupons/créditos, emite NFe (se policy).
- Idempotência por (subscription, period_start)
- Skip de trial sem cartão
- Webhook invoice.created + email
Renovação de Assinaturas
Worker subscription-renewal diário às 00:00 UTC. Avança current_period_* no ciclo. Commitment respeitado (12 meses, etc).
- Suporta auto-renew e prompt
- Cancel scheduled processado antes
- Webhook subscription.renewed
Alerta de Cartão Expirando
Worker card-expiring semanal (segunda 10:00 UTC). Detecta cartões com expirationYear/Month em ≤ 30 dias. Notifica via régua.
- Reduz churn por expiração
- Email + in-app com link direto
- Lembrete configurável
Suspensão Automática
Worker suspension-check diário às 02:00 UTC. Suspende BillingAccount após grace period esgotado.
- suspendedAt + razão registrados
- Webhook billing_account.suspended
- Reativação automática em pagamento
Expiração de Propostas
Worker proposal-expiration diário às 00:30 UTC. Marca proposals como expired após expires_at. Worker proposal-reminder (09:00) envia lembrete antes.
- Aumenta taxa de fechamento
- Email com link da proposta
- Métricas de tempo médio
Snapshots de Uso (Analytics)
UsageDailySnapshot + UsageMonthlySnapshot calculados via worker. Base para analytics, MRR e cohorts.
- Daily snapshot em background
- Monthly snapshot consolidado
- Reduz custo de queries em dashboard
Callbacks de Gateway
Worker callback processa payloads recebidos de gateways. Handlers dedicados por provider (Pagar.me, Kobana, NFe.io).
- Idempotência por idempotencyKey
- Retry automático em falha
- Logs completos em Callback model
Worker Custom Domain (DNS + SSL)
Workers custom-domain-dns + custom-domain-ssl validam DNS, emitem cert Let's Encrypt, renovam automaticamente.
- ACME protocol (acme-client)
- Renovação 30 dias antes de expirar
- Status: pending → verified → active
Configurar dunning via 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
}