Skip to main content
O ciclo de crédito usa dois conceitos:
  • CreditGrant guarda o estado consolidado do crédito.
  • CreditLedgerEntry guarda cada movimento de forma append-only.

Fluxo

Movimentos

MovimentoEfeito
GRANTRegistra a entrada inicial do valor concedido.
RESERVEReduz o disponível e aumenta o reservado durante checkout.
CAPTUREConfirma uso do valor reservado em compra paga.
RELEASELibera uma reserva não capturada.
REFUNDDevolve valor capturado para o mesmo CreditGrant.
EXPIREBaixa o valor disponível remanescente quando a validade termina.
ADJUSTMENTAjuste administrativo rastreado.

Regras

  • customerId é obrigatório.
  • O crédito só pode ser usado em Orders da mesma Company.
  • O valor nunca pode ficar negativo.
  • availableAmount + reservedAmount + usedAmount não pode ultrapassar amount.
  • Retry de movimentos críticos deve usar idempotência.
  • Ledger não é editado nem removido.
  • Estorno retorna para o mesmo CreditGrant, Customer e Company.

Compra com crédito

  1. Customer inicia checkout.
  2. System encontra créditos ativos do Customer para a Company do Order.
  3. System reserva o valor escolhido.
  4. Se o pagamento confirma, System captura a reserva.
  5. Se o checkout falha, System libera a reserva.
  6. Se a compra é cancelada depois, System registra estorno.
Veja a modelagem em CreditGrant.