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

# O Lender na plataforma

> Como o Lender contabiliza no ledger do Midaz, emite eventos do ciclo de vida no backbone de streaming, isola tenants e reporta telemetria.

export const GDoubleEntry = ({children}) => <Tooltip headline="Partidas dobradas" tip="Cada movimentação financeira é registrada como pelo menos duas operações: um débito de uma conta e um crédito em outra, garantindo que o sistema esteja sempre balanceado." cta="Ver glossário" href="/pt/glossary">
    {children}
  </Tooltip>;

export const GLedger = ({children}) => <Tooltip headline="Ledger" tip="O livro financeiro central que registra todas as transações, saldos e operações de uma organização — a fonte única de verdade para as finanças de uma unidade de negócio." cta="Ver glossário" href="/pt/glossary">
    {children}
  </Tooltip>;

O Lender é um primitivo da Lerian: ele roda sobre a plataforma, não ao lado dela. Quatro costuras com a plataforma importam quando você o opera — a rota de posting no ledger, o fluxo de eventos, a multi-tenancy e a observabilidade.

## A rota de posting no Midaz

***

O Lender é a fonte de verdade da jornada de crédito; o [Midaz](/pt/midaz/about-midaz) é a fonte de verdade dos saldos. Cada evento financeiro que um empréstimo produz é contabilizado no <GLedger>ledger</GLedger> como uma transação de <GDoubleEntry>partidas dobradas</GDoubleEntry> balanceada — e a rota é construída para nunca perder uma contabilização e nunca contabilizar no lugar errado.

<Steps>
  <Step title="Um evento de domínio produz uma intenção de posting">
    Quando um empréstimo é desembolsado, um repagamento é registrado, juros são apropriados ou uma transação é estornada, o Lender persiste uma **intenção de posting** durável na mesma transação de banco de dados que muda o estado do domínio. A intenção é gravada num **outbox** transacional, de modo que sobrevive a uma queda entre "o estado mudou" e "foi contabilizado no ledger".
  </Step>

  <Step title="O relay contabiliza uma transação balanceada no Midaz">
    Um dispatcher do outbox impulsiona o relay do ledger, que contabiliza a transação de partidas dobradas balanceada no Midaz através do SDK oficial. Os lançamentos vêm do **perfil contábil** do produto.
  </Step>

  <Step title="A idempotência é durável">
    Cada posting carrega uma chave de idempotência determinística calculada pelo Lender. Um posting reexecutado colapsa para a mesma transação do Midaz; a própria janela de idempotência do Midaz é um backstop, não a guarda principal.
  </Step>

  <Step title="O roteamento falha fechado">
    A transação é contabilizada na organização de ledger e no ledger que o perfil contábil resolve. Se o roteamento não consegue resolver um destino não vazio, o posting **falha fechado** (fail-closed) — o Lender se recusa a contabilizar em vez de gravar num destino vazio ou errado.
  </Step>
</Steps>

O Lender chega ao Midaz através do [Access Manager](/pt/platform/access-manager/access-manager): ele se autentica com credenciais máquina-a-máquina (M2M) e um JWT de vida curta, por tenant.

## Eventos do ciclo de vida

***

O Lender publica um catálogo de **14 eventos de negócio** sobre o backbone de streaming da plataforma (RedPanda, através da biblioteca de streaming da Lerian). Cada evento é **respaldado pelo outbox**, tem **escopo por tenant** e carrega um `source` de CloudEvents definido pelo seu deployment, que também serve de namespace para os tópicos de streaming, para que produtos downstream e os seus próprios serviços possam reagir à jornada de crédito à medida que ela avança. Assine pelo source que o seu deployment configura, em vez de um literal fixo.

| Domínio    | Eventos                                                                                                                                            |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Produtos   | `loan_product.created`, `loan_product_version.created`, `loan_product.activated`, `accounting_profile.configured`, `loan_charge.applied`           |
| Originação | `loan_application.submitted`, `loan_application.approved`, `loan_application.rejected`, `loan_application.withdrawn`, `loan_application.disbursed` |
| Servicing  | `repayment.recorded`, `repayment_reversal.recorded`, `loan_schedule.prepayment_applied`, `loan_schedule.rescheduled`                               |

Como os eventos viajam pelo mesmo outbox que o relay do ledger, a entrega de eventos e a contabilização no ledger compartilham uma única garantia de durabilidade: estado, postings e eventos são confirmados juntos.

<Info>
  A jornada brasileira de **consignado privado** contribui com seus próprios eventos por cima desse catálogo — sinais de margem, averbação e reconciliação. Veja [Consignado privado](/pt/lender/consignado-privado).
</Info>

## Multi-tenancy

***

Como todo produto Lerian, o Lender é construído para isolamento total de tenants desde a base.

* Persistência **schema-por-tenant** quando a multi-tenancy está habilitada, de modo que os dados de um tenant nunca compartilham tabela.
* Eventos e postings no ledger **com escopo por tenant** — cada evento emitido e cada transação do Midaz carrega o tenant ao qual pertence.
* No modo multi-tenant, o relay do ledger resolve um cliente do Midaz **por tenant**, e o perfil contábil fornece o destino de ledger por tenant (por isso o roteamento falha fechado quando um destino está faltando).

Veja [Multi-tenancy](/pt/multi-tenancy) para o modelo em nível de plataforma.

## Observabilidade

***

O Lender emite logs estruturados, traces OpenTelemetry e métricas no mesmo stack de observabilidade do restante da plataforma, incluindo métricas de banco de dados, de asserções e de recuperação de panics. Veja [Observabilidade](/pt/platform/observability).

## Próximos passos

***

<Card title="Contabilidade e rotinas de apropriação" icon="calculator" href="/pt/lender/accounting-and-accrual-runs" horizontal>
  Aprofunde nas regras de posting, nas rotinas de apropriação e nas referências de lançamento.
</Card>

<Card title="Configuração e implantação" icon="gear" href="/pt/lender/configuration-and-deploy" horizontal>
  Veja as dependências e a configuração que a rota de posting e o fluxo de eventos exigem.
</Card>
