Kobana

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
Configuración de dunning y cuentas morosas
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

Reintentar un pago vía API

bash
curl -X POST https://api.billing.kobana.com.br/v1/payments/4b5c6d7e-8f90-4a1b-b2c3-d4e5f6a7b8c9/retry \
  -H "Authorization: Bearer $KOBANA_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{
    "payment_method_id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d"
  }'
response
{
  "data": {
    "id": "4b5c6d7e-8f90-4a1b-b2c3-d4e5f6a7b8c9",
    "invoice_id": "2d3e4f5a-6b7c-4d8e-9f0a-1b2c3d4e5f6a",
    "payment_method_type": "card",
    "amount": 299.9,
    "currency": "BRL",
    "status": "processing"
  }
}

Perguntas frequentes

Deja de operar billing manualmente