Appearance
Billing e Monetização
Visão Geral
O Decaelo monetiza por dois eixos:
- Assinatura SaaS — igrejas pagam mensalidade pelo uso da plataforma
- Doações/Dízimos Online — membros contribuem pela plataforma, Decaelo recebe split automático
Gateway: Asaas (brasileiro).
Escolha do Gateway
Análise Comparativa
| Critério | Asaas | Stripe | Mercado Pago |
|---|---|---|---|
| PIX nativo | Sim, R$0 taxa | Não nativo no Brasil | Sim, taxa 0.5% |
| Boleto | R$1.99/unidade | R$3.49/unidade | R$3.49/unidade |
| Cartão de crédito | 2.99% | 3.99% + R$0.39 | 4.99% |
| Sub-contas / Split | Nativo e simples | Stripe Connect (complexo, compliance) | Marketplace (burocrático) |
| Recorrência | Nativa via API | Nativa (Laravel Cashier) | Limitada |
| Sandbox gratuito | Sim | Sim | Sim |
| Documentação PT-BR | Excelente | Apenas inglês (qualidade boa) | Inconsistente |
| Laravel SDK oficial | Não (SDK PHP genérico) | Laravel Cashier oficial | Não |
| Prazo de saque | D+2 (PIX) | D+7+ (internacional) | D+14 |
| Regulação brasileira | Regulado pelo BACEN | Empresa estrangeira | Regulado pelo BACEN |
Prós e Contras — Asaas (escolhido)
Prós:
- PIX sem custo de taxa (essencial para igrejas brasileiras)
- Sub-contas nativas com split automático — ideal para marketplace
- Documentação em português, suporte brasileiro
- Saques rápidos (D+2 via PIX)
- API REST bem documentada e estável
- Sandbox completo para desenvolvimento
- Regulado pelo Banco Central do Brasil
Contras:
- Sem Laravel Cashier oficial (compensado pelo nosso domain Billing com Actions)
- SDK PHP genérico (sem tipagem forte — tratamos com wrapper AsaasService)
- Menos features avançadas que Stripe (analytics, fraud detection)
- Menos conhecido internacionalmente
Prós e Contras — Stripe (descartado)
Prós:
- Laravel Cashier oficial (integração madura)
- Melhor documentação técnica do mercado
- Stripe Connect para marketplaces
- Dashboard admin robusto
- Detecção de fraude nativa (Radar)
Contras:
- Taxa mais alta (3.99% + R$0.39 vs 2.99%)
- PIX não nativo no Brasil
- Stripe Connect é complexo para sub-contas brasileiras
- Empresa estrangeira — compliance e suporte mais distante
- Saques internacionais demoram (D+7+)
Prós e Contras — Mercado Pago (descartado)
Prós:
- Popular no Brasil, confiança do consumidor
- PIX disponível
- Marketplace para split
Contras:
- Taxa de cartão mais alta (4.99%)
- Documentação inconsistente e com versões desatualizadas
- Prazo de saque longo (D+14)
- API de marketplace burocrática
- Suporte limitado para B2B/SaaS
Decisão
Asaas — menor custo total para o público-alvo (igrejas brasileiras), PIX sem taxa, sub-contas nativas com split automático, documentação em PT-BR, saques rápidos via PIX. A ausência de Laravel Cashier oficial é compensada pelo domain Billing com Actions seguindo o padrão arquitetural do projeto.
Custos Estimados
Assinatura SaaS (Decaelo cobra a igreja)
| Forma de Pagamento | Taxa Asaas | Custo real (plano R$99) | Custo real (plano R$249) |
|---|---|---|---|
| PIX | R$0 | Decaelo recebe R$99,00 | Decaelo recebe R$249,00 |
| Cartão de crédito | 2.99% | Decaelo recebe R$96,04 | Decaelo recebe R$241,55 |
Recomendação: Incentivar PIX (sem taxa) como forma padrão.
Doações/Dízimos (membro paga a igreja)
| Forma | Taxa Asaas | Split Decaelo (3%) | Igreja recebe líquido (doação R$100) |
|---|---|---|---|
| PIX | R$0,00 | R$3,00 | R$97,00 |
| Cartão de crédito | R$2,99 | R$3,00 | R$94,01 |
| Boleto | R$1,99 | R$3,00 | R$95,01 |
| Cartão recorrente | R$2,99 | R$3,00 | R$94,01 |
Projeção de Receita
Igreja pequena (50 membros, dízimo médio R$100):
- Volume doações: ~R$5.000/mês
- Split Decaelo: R$150/mês
- Assinatura (Semente): R$0
- Total: R$150/mês
Igreja média (200 membros, dízimo médio R$200):
- Volume doações: ~R$40.000/mês
- Split Decaelo: R$1.200/mês
- Assinatura (Crescimento): R$99/mês
- Total: R$1.299/mês
Igreja grande (500+ membros, dízimo médio R$300):
- Volume doações: ~R$150.000/mês
- Split Decaelo: R$4.500/mês
- Assinatura (Expansão): R$249/mês
- Total: R$4.749/mês
Arquitetura
Modelo de Dados
| Model | Banco | Justificativa |
|---|---|---|
| Subscription | Central | Decaelo gerencia todas as assinaturas globalmente |
| Invoice | Central | Faturas da Decaelo — visão unificada para cobrança |
| AddonSubscription | Central | Add-ons contratados à parte (1 por add-on/igreja), espelha Subscription |
| DonationAccount | Central | Sub-contas Asaas precisam de referência cross-tenant |
| Donation | Tenant | Dados financeiros isolados por igreja (LGPD) |
| DonationCategory | Tenant | Categorias personalizáveis por igreja |
| Transaction (existente) | Tenant | Contabilidade integrada |
Fluxo de Dados
Assinatura SaaS:
Igreja → Asaas (payment) → Webhook → Invoice (central) → Subscription status
Doação/Dízimo:
Membro → Asaas (payment + split) → Webhook → Donation (tenant) + Transaction (tenant)
↓
Split → Wallet Decaelo (automático)Segurança
- Webhook: validado por token secreto (
ASAAS_WEBHOOK_TOKEN) - API keys: apenas em
.env, nunca no banco de dados - Dados bancários: enviados direto ao Asaas via API, não armazenados no Decaelo
- CPF do doador: armazenado com
encryptedcast (AES-256-CBC) - Página pública: rate limiting
throttle:30,1 - HTTPS: obrigatório em produção para todas as rotas de pagamento
Integrações
- Finance domain (existente): Doações confirmadas geram Transaction automaticamente para contabilidade da igreja
- Feature flags (existente):
online_donationscontrola acesso ao módulo de doações; liberada via add-on de ativação grátis (ver Adicionais) - Tenant lifecycle (existente): Pipeline de inadimplência usa
SuspendTenantActionjá implementado - Notifications (existente): Lembretes de pagamento via
SendNotificationAction
Formas de Pagamento
Assinatura SaaS
| Forma | Disponível | Motivo |
|---|---|---|
| PIX | Sim | Sem taxa, incentivado como padrão |
| Cartão de crédito | Sim | Conveniência, recorrência automática |
| Boleto | Não | Alta inadimplência + custo fixo por emissão |
Doações/Dízimos
| Forma | Disponível | Recorrência | Motivo |
|---|---|---|---|
| PIX | Sim | Não (manual) | Sem taxa, popular no Brasil |
| Cartão de crédito | Sim | Sim (automática) | Única forma com recorrência real |
| Boleto | Não | — | Não utilizado na plataforma (alta inadimplência + custo fixo por emissão) |
Decisão: A plataforma utiliza apenas PIX e cartão de crédito como formas de pagamento online (assinatura SaaS e doações/dízimos). Boleto não é utilizado em nenhum fluxo de cobrança via gateway.
Recorrência: Apenas cartão de crédito suporta cobrança automática. PIX requer ação manual do membro a cada mês.
Adicionais (Add-ons)
Recursos premium contratáveis à parte dos planos, num marketplace no painel da igreja: /settings/adicionais (AddonController, gated por permissão manage-billing). O catálogo vive em config/addons.php (AddonCatalog é o único ponto de leitura). Cada add-on contratado vira um AddonSubscription (base central) e — quando pago — 1 subscription Asaas própria (reusa PurchaseAddonAction / ActivateAddonAction, padrão do plano).
Ativação pay-first
A feature só é liberada quando o webhook Asaas confirma o pagamento. O externalReference carrega o scope addon (PaymentReference::make('addon', ulid, tenant_id)); o WebhookAsaasController roteia PAYMENT_CONFIRMED → HandleAddonPaymentConfirmedAction → ActivateAddonAction (status Active + GrantFeatureTrialAction por feature_keys, sem expiry). PAYMENT_OVERDUE → PastDue + revoga; cancelamento → cancela no Asaas + revoga. Tudo na base central (sem Tenant::run()), pois tenants.extra_features é central.
Cliente Asaas e coleta de CPF/CNPJ
PurchaseAddonAction reaproveita o cliente Asaas do tenant (de um plano ou de outro add-on) via resolveCustomerId. Quando não há cliente, cria um — e a Asaas exige CPF/CNPJ. Por isso AddonController@index expõe o prop has_billing_customer: havendo cliente, "Contratar" dispara o POST direto; caso contrário o front (Settings/Addons/Index.vue) abre um modal que coleta name/email/cpfCnpj antes de enviar. A página também exibe flash.success/ flash.error — sem isso a falha da Asaas (ex.: 400 por CPF ausente) passava despercebida.
Dev:
AddonSeeder(rodado só fora de produção) já entrega à igreja de testecharlieos add-onsmember_insightsebackupativos, sem ids Asaas — assim o cancelamento não chama a API e novas contratações ainda exigem CPF/CNPJ.
Tipos de add-on (MVP)
| Add-on | Modelo | Como ativa |
|---|---|---|
| Painel de Insights | Mensalidade fixa R$39 | Self-service: contrata → paga PIX → webhook libera member_insights_full/_export |
| Backup avançado | Por volume (3 tiers) | Self-service com seletor de tier (ver abaixo) |
| Doações Online | Sem mensalidade (3% por doação) | Ativação grátis self-service: botão "Ativar Doações" libera a feature na hora e leva ao onboarding da sub-conta (/donations/settings). Não cria cobrança Asaas |
| WhatsApp + IA | Por volume de mensagens | "Em breve" (roadmap, não contratável ainda) |
Doações é gratuita de ativar porque a monetização é o split de 3% por doação (não há mensalidade). Por isso não passa pelo fluxo de cobrança pay-first — só concede a feature e encaminha pro onboarding.
Backup avançado — tiers por volume
A config de backup deixa de ser só por-plano: um AddonSubscription de backup ativo sobrescreve as colunas do plano via ResolveTenantBackupConfig (DTO BackupConfig). Sem add-on, mantém o comportamento por-plano.
| Tier | Frequência | Restaurações/mês | Armazenamento | Preço |
|---|---|---|---|---|
| Básico | Trimestral | 1 | 5 GB | R$15 |
| Essencial | Mensal | 2 | 20 GB | R$29 |
| Pro | Semanal | 5 | 100 GB | R$79 |
Enforcement: restaurações contadas por mês calendário (exclui canceladas/falhas) — bloqueia ao exceder; armazenamento podado pros mais antigos pra caber no teto (sempre mantém o backup mais recente). O tier escolhido (tier_key) é a única config persistida; frequência/restores/GB/preço resolvem do config/addons.php.
Pipeline de Inadimplência
| Dias após vencimento | Ação | Impacto | Reversível |
|---|---|---|---|
| 1-3 | Email de lembrete ao admin | Nenhum no sistema | N/A |
| 4-7 | Banner de aviso no sistema | Visual, sem bloqueio | Sim |
| 8-15 | Modo somente leitura | Bloqueia criação/edição | Sim |
| 16+ | Suspensão total | Login bloqueado | Sim |
Pagamento a qualquer momento reverte automaticamente todas as restrições.
Dados nunca são excluídos — mesmo tenants suspensos mantêm seus dados intactos.