> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Credit Grant Expiration Sweep

> Rotina que expira créditos concedidos fora da validade

Credit Grant Expiration Sweep é a rotina periódica que expira créditos concedidos quando `expiresAt` é alcançado.

## Objetivo

A rotina mantém [CreditGrant](/data-modelling/credit-grant/credit-grant) e [CreditLedgerEntry](/data-modelling/credit-grant/credit-ledger-entry) alinhados com a validade do crédito.

## Execução

Ao rodar, a rotina:

1. Busca créditos com `status = ACTIVE` e `expiresAt` vencido.
2. Calcula o saldo disponível remanescente.
3. Cria uma entrada `CreditLedgerEntry` do tipo `EXPIRE` quando houver valor disponível a baixar.
4. Atualiza o CreditGrant para `status = EXPIRED`.

## Regras

| Regra             | Comportamento                                                                |
| ----------------- | ---------------------------------------------------------------------------- |
| Validade          | `expiresAt` define o fim de validade do crédito.                             |
| Ledger            | Expiração que altera saldo deve gerar movimento `EXPIRE`.                    |
| Reservas          | Reservas pendentes precisam ser tratadas antes de baixar o saldo disponível. |
| Estados terminais | Créditos `EXPIRED`, `CONSUMED` ou `CANCELED` não são processados.            |
| Idempotência      | A chave de idempotência evita duplicar movimento de expiração.               |
