Skip to content

Módulo de Pagamentos ​

Objetivo ​

Emitir cobranças de aluguel, disponibilizar Cobrança PIX ao locatário, registrar o pagamento (automático ou manual), atualizar o status da fatura e disparar eventos para os demais domínios (financeiro, contratos, relatórios).

Escopo funcional ​

  1. Geração de faturas;
  2. Integração com provedor PIX (“Gateway”);
  3. Atualização automática via webhook/pull API;
  4. Baixa manual & estorno;
  5. Lembretes de cobrança;
  6. Logs e auditoria.

Domínios vizinhos ​

  • Contratos: (origem dos valores + vencimentos);
  • Notificações: (e-mail/push);
  • Relatórios: (dashboards financeiros).

Tecnologias de referência ​

  • Provedor PIX: API PSP (banco) ou gateway terceirizado (e.g. Gerencianet, Asaas, Iugu).
  • Assinador de webhook: HMAC-SHA256 ou similar.
  • Filas/eventos: RabbitMQ ou Kafka para desacoplar confirmação.

Atores & Papéis ​

AtorPapel no fluxo
LocatárioVisualiza fatura, copia/escaneia QR Code, paga via app bancário.
Administrador de ImobiliáriaEmite faturas, visualiza status, executa baixa manual, consulta relatórios.
Gateway PIXGera QR Code, recebe pagamento, notifica Rentake.
Serviço Pagamentos (Rentake)Orquestra geração → disponibilização → conciliação.

User Stories ​

Épico EP-PAG-01 – Pagamento de Aluguel via PIX

US-PAG-01 – Emissão de fatura ​

Como administrador da imobiliária
Quero gerar a fatura mensal de um contrato
Para que o locatário possa pagá-la via PIX.

Critérios de aceite

  1. Ao clicar em “Gerar faturas do mês”, o sistema consulta todos os contratos ativos cuja próxima mensalidade ≥ data atual.
  2. Para cada contrato, cria registro uma cobrança em transactions.
  3. Chama endpointpara geração da cobrança → resposta contém qrCodeData, qrCodeImageURL.
  4. Persiste qrCodeData & txid na transação; retorna sucesso agregado e lista de cobranças geradas.

US-PAG-02 – Geração automática de faturas via Cronjob configurável ​

Como administrador da imobiliária
Quero configurar o dia e horário para que o sistema gere automaticamente as faturas mensais dos contratos ativos
Para que as cobranças sejam emitidas no momento mais adequado à operação da minha imobiliária.

Critérios de aceite

  1. O sistema deverá permitir que o administrador configure, via interface administrativa, o dia do mês (1 a 28) e o horário (hora:minuto) para a execução da rotina de geração automática de faturas.
  2. O sistema deverá executar a rotina agendada, conforme essa configuração personalizada, que:
    • Consulta todos os contratos ativos cuja próxima mensalidade seja referente ao mês corrente.
    • Gera as faturas com status=PENDING e chama o Gateway PIX para criação dos QR Codes.
  3. Caso a configuração não seja definida, o sistema utilizará o valor padrão: dia 1º do mês às 00:00.
  4. A rotina deve continuar a registrar logs detalhados da execução, incluindo quantidade de faturas geradas e erros.
  5. A opção de disparo manual da rotina pela interface administrativa permanece disponível, independente da configuração agendada.
  6. O sistema deve validar a configuração para garantir que valores inválidos (ex.: dia 31 em meses com menos dias) não sejam salvos, ou ajustar automaticamente para o último dia válido do mês.
  7. Tratamento de falhas com tentativas automáticas e alertas para equipe.
  8. Disparo de eventos internos para atualização dos sistemas dependentes (notificações, financeiro).

US-PAG-03 – Visualização & pagamento pelo locatário ​

Como locatário
Quero acessar minhas faturas pendentes
Para copiar o código PIX e efetuar o pagamento.

Critérios de aceite

  1. Endpoint GET /me/faturas?status=pendente devolve lista paginada.
  2. Cada item inclui qrCodeData (texto copia-e-cola) e link da imagem (exibido inline).
  3. UX mobile: botão “Copiar código” + “Abrir app do banco (intent)”.
  4. Se vencimento < hoje, mostrar badge “Vencida” em vermelho.

US-PAG-04 – Recebimento da confirmação automática ​

Como sistema de pagamentos
Quero receber notificação do gateway
Para atualizar a fatura como paga sem intervenção humana.

Critérios de aceite

  1. Endpoint POST /webhooks/pix-paid recebe JSON {txid, valor, pagador, timestamp}.
  2. Cabeçalho X-Signature contém HMAC; backend valida assinatura -> 401 se inválida.
  3. Busca fatura por txid & status=PENDENTE.
  4. Em transação ACID: 4.1. Atualiza status=PAGA, dataPagamento=timestamp, pagadorInfo.
    4.2. Emite evento InvoicePaid {contratoId, faturaId, valor}.
  5. Retorna 200 em ≤ 500 ms; loga resultado em tabela WebhookLog.

US-PAG-05 – Listagem de inadimplentes ​

Como administrador da imobiliária
Quero visualizar quem está atrasado
Para acionar lembretes ou medidas de cobrança.

Critérios de aceite

  1. Endpoint GET /imobiliarias/:id/inadimplentes?mes=YYYY-MM retorna locatários com faturas onde vencimento < hoje && status!=PAGA.
  2. Resposta paginada inclui total de dias em atraso e valor total devido.
  3. Exportação CSV disponível (botão “Exportar”).

US-PAG-06 – Envio de lembretes automáticos ​

Como sistema
Quero disparar lembretes para faturas vencidas há X dias
Para diminuir inadimplência sem ação manual.

Critérios de aceite

  1. Cron diário às 08:00 local busca faturas status=PENDENTE cujo vencimento = hoje-3.
  2. Publica evento SendReminder {locatarioId, faturaId}.
  3. Serviço de Notificações envia e-mail/push com template:
    “Sua fatura de R${valor} venceu em {dias} dias. Pague usando este QR Code.”
  4. Loga tentativa; evita duplicar envio (marca reminderSent=TRUE).

US-PAG-07 – Baixa manual de fatura ​

Como administrador da imobiliária
Quero registrar pagamento recebido em dinheiro
Para manter os registros financeiros corretos.

Critérios de aceite

  1. Tela “Detalhes da fatura” tem botão “Baixar manualmente” (visível apenas a papéis c/ permissão).

  2. Modal exige: dataPagamento, valor, método (Dinheiro, TED, etc.), campo opcional observação.

  3. Ao confirmar, backend:

    • Verifica status=PENDENTE; se já PAGA, retorna erro 409.
    • Altera status=PAGA_MANUAL, grava auditoria (userId, timestamp, observação).
    • Emite InvoicePaid com flag manual=true.

US-PAG-08 – Estorno / cancelamento (edge case) ​

Como administrador da imobiliária
Quero cancelar uma fatura emitida erroneamente
Para corrigir falhas operacionais sem afetar relatórios.

Critérios de aceite

  1. Cancelamento permitido apenas se status=PENDENTE.
  2. Endpoint POST /faturas/:id/cancel registra status=CANCELADA, cancelReason, userId, timestamp.
  3. Se QR Code gerado, faz chamada DELETE /charges/{txid} no gateway.
  4. Evento InvoiceCancelled publicado.
  5. Faturas canceladas não entram nos relatórios de receita.

Sequência de Integração (Simplificada) ​

API Design (REST) – Endpoints-chave ​

VerboRotaDescriçãoAuth & RBAC
POST/contracts/:id/invoicesGera fatura(s) futuras conforme contratoPapel: corretor, administrador
GET/imobiliarias/:id/invoicesLista faturas com filtros status, residencial, datacorretor, administrador
GET/me/invoicesLocatário obtém suas faturaslocatário
POST/invoices/:id/reminderDispara lembrete individualcorretor, administrador
POST/invoices/:id/pay-manualBaixa manualcorretor, administrador
POST/invoices/:id/cancelCancela fatura pendenteadministrador
GET/imobiliarias/:id/reports/revenueExportação CSV mensaladministrador
POST/webhooks/pix-paidRecebe notificação do PSPsem auth; valida assinatura

Modelo de Estados da Fatura ​

Detalhes de Integração com o Gateway PIX ​

EtapaChamadaCampos principaisObservações
Criar cobrançaPOST /chargestxid, calendar.expiration, amount.original, payer.name opcional, payer.cpf opcionalRetorna location, qrCodeData, emv, txid.
Consultar statusGET /pix/:txid–Usado como fallback caso webhook falhe.
Remover cobrançaDELETE /charges/:txid–Necessário em US-PAG-07.
WebhookEnvio PSP → Rentaketxid, endToEndId, valor, horario, payer (JSON), chaveAssinado via HMAC SHA-256 + secret.

Segurança: armazenar pixSecret e webhookSecret em vault (env/secret-manager); logs de webhook devem mascarar dados sensíveis.

Considerações de Implementação Independente ​

  1. Serviço isolado: Pagamentos pode ser micro-serviço (REST) com DB próprio (transactions, webhook_logs) e publicar eventos em broker → restante do monolito escuta.
  2. Idempotência: Use txid (chave PIX única) como chave natural; garantir update idempotente em caso de webhook duplicado.
  3. Circuit-breaker / retry: Ao chamar gateway, implementar retry exponencial (máx 3) e fallback para job assíncrono de reconciliação.
  4. Compliance: Registrar todos os endToEndId retornados pelo PSP para fins de auditoria e contestação.
  5. Testes: Mock de API PIX em ambiente de QA; fixture de QR Code; simular webhook com POST local.
  6. KPIs: percentual de inadimplência, tempo médio de pagamento, falhas de webhook.
  7. Failover manual: UI para re-consultar status no PSP em caso de discrepância (botão “Reconciliar”).