Kobana

Customer → BillingAccount → PortalUser. Multi-cuenta nativo.

Un cliente puede tener varias cuentas de facturación (filial, departamento, proyecto). Cada cuenta con método de pago, ciclo fiscal y usuarios del portal propios.

Funcionalidad
Lista de clientes con documento, estado y MRR
∞
clientes por organización
N
billing accounts por cliente
CNPJ/CPF
validados automáticamente
LGPD
export y delete nativos

Jerarquía en 3 capas

Customer
Entidad catastral. Persona física (CPF) o jurídica (CNPJ). Almacena nombre, razón social, documento, direcciones (JSON), emails (JSON), teléfonos (JSON).
  • DocumentType: cpf | cnpj
  • PersonKind: natural | juridical
  • Custom data + metadata libres
BillingAccount
Cuenta de facturación. Cada cliente puede tener varias (filial Matriz, filial RJ, departamento financiero). MRR consolidado en mrrAmountCents.
  • 3 estados: active, suspended, closed
  • paymentTermsDays (default 10 días)
  • autoCollection toggle por cuenta
  • Configuración fiscal propia
PortalUser
Usuario que accede al portal. Vinculado a un BillingAccount. SSO o contraseña. 2FA opcional.
  • Magic link, contraseña, SSO
  • 5 estados (active, pending_verification, pending_invitation, suspended)
  • Failed login attempts registrados
  • Múltiples usuarios por billing account

Qué puedes hacer

Registro Completo
Persona física o jurídica con dirección completa (CEP, IBGE), múltiples contactos (emails/teléfonos), etiquetas libres.
  • Validación de dígitos CPF/CNPJ
  • Consulta Receita opcional (MinhaReceita)
  • Tags + customData JSON para integración
Multi-Cuenta de Facturación
Un cliente corporativo puede tener cuentas independientes para filiales o departamentos. Facturas, métodos de pago y portal separados.
  • Facturas individuales por cuenta
  • Consolidación de informes en el Customer
  • Permisos diferentes en el portal
Importación en Masa (CSV)
ImportService procesa CSV con validación pre-import. Worker import ejecuta en background, generando informe de errores.
  • Template estándar disponible
  • Validación row-by-row
  • Migración de sistemas legacy
Régua de Comunicación
Notificaciones automáticas por evento (invoice_created, payment_failed, trial_ending). Templates personalizables por organización.
  • Email (AWS SES)
  • In-app (Notification)
  • Webhook para integración
Historial de Pagos
Toda movimentación financiera queda en StatementItem (credit/debit). Vista extracto en portal y dashboard.
  • Saldo balanceCents por billing account
  • Saldo negativo permitido con límite (allowedNegativeBalanceCents)
  • Export en CSV/Excel
Suspensión y Reactivación
BillingAccount con estado suspended bloquea nuevas facturas y acciones. suspendedAt + razón registrados. Reactivación vía API o dashboard.
  • Manual o automática (dunning)
  • Audit log completo
  • Webhook billing_account.suspended
LGPD: Exportación y Exclusión
DataPurgeService implementa derecho al olvido. Worker data-purge ejecuta exclusión programada con confirmación.
  • Export completo en ZIP (datos + facturas + pagos)
  • Soft delete en customers (deletedAt)
  • Anonimización opcional preservando historial contable
Etiquetas y Segmentación
Tags libres en Person + customMetadata. Filtros avanzados en el listado para segmentar (alto valor, venciendo, moroso, por región).
  • Tags como array JSON
  • Filtros combinados (AND/OR)
  • Guardado de vistas personalizadas

Crear cliente + cuenta de cobro vía API

bash
curl -X POST https://api.billing.kobana.com.br/v1/customers \
  -H "Authorization: Bearer $KOBANA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ACME Tecnologia Ltda",
    "kind": "juridical",
    "document_number": "12.345.678/0001-90",
    "emails": [{ "kind": "work", "value": "finanzas@acme.com.br" }],
    "addresses": [{
      "street": "Av. Paulista",
      "number": "1000",
      "neighborhood": "Bela Vista",
      "city": "São Paulo",
      "state": "SP",
      "postal_code": "01310100"
    }],
    "create_billing_account": true,
    "billing_email": "finanzas@acme.com.br",
    "payment_terms_days": 15
  }'
response
{
  "data": {
    "customer": { "id": "9e8d7c6b-5a49-4382-a1b0-c9d8e7f6a5b4", "name": "ACME Tecnologia Ltda", "kind": "juridical" },
    "billing_account": { "id": "8f3b2c1a-5d4e-4f6a-9b7c-2e1d0a9f8b7c", "status": "active" }
  }
}

Perguntas frequentes

Tu base de clientes, sin fricción