> ## 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.

# Eventos do Lender

> Consulte os eventos de domínio que o Lerian Lender emite e consome — ciclo de vida do empréstimo, cobrança, jurisdição BR e comandos de consignado — com payloads e semântica de entrega.

O Lender emite eventos de domínio como mensagens **CloudEvents 1.0** em modo de conteúdo binário sobre Kafka, publicadas via `lib-streaming`. Todo evento trafega no [envelope compartilhado](/pt/reference/events/overview): `ce-type` nomeia o evento como `studio.lerian.<resource>.<event>`, `ce-subject` carrega o id do agregado, `ce-tenantid` o tenant proprietário e `ce-schemaversion` a versão do payload — `1.0.0` para todos os eventos abaixo.

O `ce-source` vem de `STREAMING_CLOUDEVENTS_SOURCE`, e o Lender **exige o valor exato `lender`** quando o streaming está habilitado — subir com qualquer outro valor falha. Os tópicos derivam da fonte (consulte [Nomes de tópicos](/pt/reference/events/overview#nomes-de-tópicos)), então todo evento emitido chega em `lender.<resource>.<event>`.

Todo evento do catálogo do Lender é **respaldado por outbox**: a linha do evento é gravada na mesma transação de banco de dados que a mudança de estado que ele reporta, e um relay publica as linhas confirmadas no Kafka, com retentativas durante quedas do broker. O catálogo não permite enfraquecer essa política por deployment. Valores monetários e taxas trafegam pelo fio como **strings** decimais, nunca como floats. O Lender serve seu catálogo completo de eventos em `GET /api/v1/streaming/manifest`.

## Eventos do ciclo de vida do empréstimo

| Evento (`ce-type`)                            | Tópico                                 | Dispara quando                                                                                                      | Payload principal                                                                                                                                                                                                                                                                                               |
| --------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.loan_application.submitted`    | `lender.loan_application.submitted`    | Uma proposta é validada e persistida, aguardando aprovação.                                                         | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `requestedPrincipalAmount`, `requestedInterestRate`, `requestedInstallments`, `expectedDisbursementDate`, `previewProfileVersion`, `previewJurisdictionCode`, `previewScheduleSnapshotId`, `createdAt`, `updatedAt`   |
| `studio.lerian.loan_application.approved`     | `lender.loan_application.approved`     | Uma proposta pendente é aprovada.                                                                                   | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `approvedAmount`, `approvalDecisionId`, `approvalDecisionAt`, `approvedBy`, `requestedPrincipalAmount`, `previewProfileVersion`, `previewJurisdictionCode`, `updatedAt`                                               |
| `studio.lerian.loan_application.rejected`     | `lender.loan_application.rejected`     | Uma proposta pendente é rejeitada.                                                                                  | Como `approved`, com `rejectionDecisionId`, `rejectionDecisionAt`, `rejectedBy`                                                                                                                                                                                                                                 |
| `studio.lerian.loan_application.withdrawn`    | `lender.loan_application.withdrawn`    | Uma proposta pendente é retirada.                                                                                   | Como `approved`, com `withdrawalDecisionId`, `withdrawalDecisionAt`, `withdrawnBy`                                                                                                                                                                                                                              |
| `studio.lerian.loan_application.disbursed`    | `lender.loan_application.disbursed`    | Uma proposta aprovada é desembolsada e o empréstimo ativo é criado.                                                 | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `loanAccountId`, `disbursementEventId`, `disbursementTransactionId`, `grossRequestedAmount`, `netDeliveredAmount`, `disbursedAt`, `profileVersion`, `jurisdictionExtensions`?, `previewJurisdictionCode`, `updatedAt` |
| `studio.lerian.loan_product.created`          | `lender.loan_product.created`          | Um produto de crédito é persistido como rascunho.                                                                   | `loan_product_id`, `name`, `loan_type`, `status`, `jurisdiction_code`, `current_version_id`?, `created_at`                                                                                                                                                                                                      |
| `studio.lerian.loan_product.activated`        | `lender.loan_product.activated`        | Um produto transiciona para ativo, fixado a um snapshot de versão.                                                  | `loan_product_id`, `current_version_id`, `status`, `name`, `loan_type`, `jurisdiction_code`, `created_at`                                                                                                                                                                                                       |
| `studio.lerian.loan_product_version.created`  | `lender.loan_product_version.created`  | Termos imutáveis de versão de produto são adicionados.                                                              | `loan_product_version_id`, `loan_product_id`, `jurisdiction_code`, `jurisdictionExtensions`?, `rate_mode`, `floating_rate_table_id`?, `floating_spread_bps`, `fixed_annual_rate_bps`, `requires_floating_rate`, `created_at`                                                                                    |
| `studio.lerian.loan_charge.applied`           | `lender.loan_charge.applied`           | Um template de encargo da versão do produto é persistido como encargo aplicado imutável em uma conta de empréstimo. | `request_id`, `loan_account_id`, `source_product_version_id`, `charge_template_id`, `charge_code`, `charge_type`, `amount`, `rate`, `currency`, `account_created_at`, `assessed_at`                                                                                                                             |
| `studio.lerian.accounting_profile.configured` | `lender.accounting_profile.configured` | O perfil contábil e as regras de lançamento de uma versão de produto do tenant são configurados de forma durável.   | `profile_id`, `loan_product_version_id`, `accounting_mode`, `posting_rules` (cada entrada: `event_type` e `legs` com `account`, `role`?, `side`, `component`?, `optional`), `created_at`                                                                                                                        |

## Eventos de servicing

| Evento (`ce-type`)                               | Tópico                                    | Dispara quando                                                                  | Payload principal                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `studio.lerian.repayment.recorded`               | `lender.repayment.recorded`               | Um pagamento é registrado de forma durável com sua alocação de caixa.           | `transaction_id`, `loan_account_id`, `request_id`, `paid_amount`, `overpayment_amount`, `effective_date`, `created_at`, `allocation_count`, `allocations` (cada entrada: `installment_number`, `due_date`, `principal_amount`, `interest_amount`, `fees_amount`, `penalties_amount`, `total_amount`, `fully_paid`) |
| `studio.lerian.repayment_reversal.recorded`      | `lender.repayment_reversal.recorded`      | Um estorno de pagamento é registrado como transação compensatória com linhagem. | Como `repayment.recorded`, mais `original_transaction_id`, `profile_version`, `jurisdiction_code`                                                                                                                                                                                                                  |
| `studio.lerian.loan_schedule.prepayment_applied` | `lender.loan_schedule.prepayment_applied` | Um pré-pagamento produz uma versão sucessora do cronograma.                     | `loan_account_id`, `schedule_version_id`, `previous_schedule_version_id`, `version_number`, `reason`, `trigger_transaction_id`, `request_id`, `payload_hash`, `prepayment_amount`, `effective_date`, `business_date`, `profile_version`, `jurisdiction_code`, `created_at`, `installment_count`                    |
| `studio.lerian.loan_schedule.rescheduled`        | `lender.loan_schedule.rescheduled`        | Um reagendamento produz uma versão sucessora do cronograma.                     | Como `prepayment_applied` menos `prepayment_amount`, mais `first_rescheduled_due_date`                                                                                                                                                                                                                             |

## Eventos de cobrança

Os quatro eventos de pagamento de cobrança compartilham um único esquema de payload; os campos opcionais são preenchidos por fluxo.

| Evento (`ce-type`)                           | Tópico                                | Dispara quando                                                                                     | Payload principal                                                                                                                                                                                                                                                                                    |
| -------------------------------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.collection_payment.applied`   | `lender.collection_payment.applied`   | Um pagamento de cobrança verificado é conservado e aplicado a um caminho financeiro do empréstimo. | `application_id`, `notification_id`, `instrument_id`, `provider`, `provider_account_id`, `provider_payment_id`, `received_amount`, `applied_amount`, `unapplied_amount`, `refunded_amount`?, `currency`, `applied_transaction_id`?, `repair_reason`?, `refund_request_id`?, `refund_transaction_id`? |
| `studio.lerian.collection_payment.unapplied` | `lender.collection_payment.unapplied` | Um pagamento é conservado como caixa não aplicado com um motivo de reparo delimitado.              | Mesmo esquema                                                                                                                                                                                                                                                                                        |
| `studio.lerian.collection_payment.reapplied` | `lender.collection_payment.reapplied` | Caixa não aplicado é liberado para recebíveis.                                                     | Mesmo esquema                                                                                                                                                                                                                                                                                        |
| `studio.lerian.collection_payment.refunded`  | `lender.collection_payment.refunded`  | Caixa não aplicado é devolvido por uma requisição ao provedor.                                     | Mesmo esquema                                                                                                                                                                                                                                                                                        |

## Eventos de jurisdição BR

| Evento (`ce-type`)                                  | Tópico                                       | Dispara quando                                                                                                                                                                                             | Payload principal                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.loan_account.pdd_stage_transitioned` | `lender.loan_account.pdd_stage_transitioned` | Uma transição ou cura de estágio de PDD (BR) é persistida, com elegibilidade de accrual.                                                                                                                   | `loan_account_id`, `transition_id`, `from_stage`, `to_stage`, `accrual_state`, `reason`?, `effective_at`, `business_date`, `triggered_by`?, `profile_version`?, `jurisdiction_code`?, `created_at`                                                                                                                                                                                                                                          |
| `studio.lerian.prepayment_quote.created`            | `lender.prepayment_quote.created`            | Uma cotação imutável de pré-pagamento BR é criada, com fatos de abatimento e reconciliação de IOF.                                                                                                         | `quote_id`, `loan_account_id`, `quote_type`, `principal_outstanding`, `interest_rebate`, `charge_rebate`, `iof_reconciliation`, `gross_amount`, `net_settlement_amount`, `rebate_mandatory`, `expires_at`, `currency`, `sla_due_at`, `statement_available_at`, `instrument_id`, `instrument_type`, `instrument_requested_at`, `profile_version`?, `jurisdiction_code`?, `consumer_protection_regime`?, `created_at`                         |
| `studio.lerian.prepayment_settlement.recorded`      | `lender.prepayment_settlement.recorded`      | Uma cotação aceita de pré-pagamento é liquidada; o detalhamento final é persistido. `final_interest_amount` é um valor de juros perdoados apenas para divulgação — nunca o some em movimentações de caixa. | `settlement_id`, `quote_id`, `loan_account_id`, `transaction_id`, `schedule_version_id`?, `settlement_type`, `principal_outstanding`, `interest_rebate`, `charge_rebate`, `iof_reconciliation`, `gross_amount`, `net_settlement_amount`, `final_principal_amount`, `final_interest_amount`, `final_charge_amount`, `final_iof_amount`, `profile_version`?, `jurisdiction_code`?, `consumer_protection_regime`?, `accepted_at`, `created_at` |
| `studio.lerian.payroll_deduction.refund_required`   | `lender.payroll_deduction.refund_required`   | Caixa de folha confirmado após a quitação é registrado como exigindo devolução ao tomador.                                                                                                                 | `receipt_id`, `account_id`, `product_version_id`, `payoff_effective_at`, `receipt_settled_at`, `amount`, `currency`, `required_at`                                                                                                                                                                                                                                                                                                          |
| `studio.lerian.guarantee_recovery.cash_allocated`   | `lender.guarantee_recovery.cash_allocated`   | Um recebimento confirmado de recuperação de garantia é alocado com conservação de caixa.                                                                                                                   | `receipt_id`, `loan_account_id`, `disruption_ref`, `source_sequence`, `cash_source`, `amount`, `repayment_applied`, `prepayment_applied`, `unapplied`, `currency`, `settled_at`                                                                                                                                                                                                                                                             |

## Comandos de consignado emitidos

Comandos que o Lender envia ao trilho de Consignado. Eles mantêm o namespace do Lender — o Consignado assina esses tópicos `lender.*` (consulte [Eventos do Consignado](/pt/reference/events/consignado)).

| Comando (`ce-type`)                                   | Tópico                                         | Dispara quando                                                                                                  | Payload principal                                                                                                                                                                                                                                                                                                                                           |
| ----------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.consignado_averbacao.requested`        | `lender.consignado_averbacao.requested`        | A contratação ativa pede ao trilho que averbe um contrato assinado.                                             | `contract_id`, `numero_contrato`, `cpf`, `matricula`, identificação do trabalhador e do empregador, os termos financeiros aceitos completos (`principal_amount`, `liberated_amount`, `installment_amount`, `installment_count`, taxas, `iof_amount`, `first_deduction_competencia`), o bloco de garantia FGTS, a CCB assinada e as evidências de assinatura |
| `studio.lerian.consignado_exclusao.requested`         | `lender.consignado_exclusao.requested`         | Uma quitação total dispara a exclusão da averbação.                                                             | `request_ref`, `settlement_id`, `loan_account_id`, `contract_id`, `numero_contrato`, `settled_at`                                                                                                                                                                                                                                                           |
| `studio.lerian.consignado_redirecionamento.requested` | `lender.consignado_redirecionamento.requested` | A resolução de disrupção de emprego solicita um redirecionamento de cobrança em folha para um vínculo elegível. | `request_ref`, `numero_contrato`, `source_vinculo_ref`, `target_vinculo_ref`, `target_matricula`, `target_cnpj`, `target_esocial_category`, `disruption_status`, `effective_at`                                                                                                                                                                             |

`studio.lerian.consignado_margin.requested` (tópico `lender.consignado_margin.requested`) está declarado no catálogo e no manifesto, mas nenhum fluxo do Lender o emite ainda — trate-o como uma reserva de contrato, não como tráfego real. Os eventos de fato do Consignado (`studio.lerian.consignado_proposal.accepted`, `studio.lerian.consignado_averbacao.confirmed` e os demais) também aparecem no manifesto do Lender como documentação de contrato, mas o produtor deles é o trilho de Consignado — consulte a página [Eventos do Consignado](/pt/reference/events/consignado) para esses payloads.

## Eventos consumidos

Os consumidores são opt-in por deployment: cada um tem uma flag de habilitação (desligada por padrão) e falha na inicialização quando habilitado sem um broker alcançável.

| Tópico (produtor)                                                                | O que o Lender faz com ele                                                                                                                                      |
| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `consignado-gw.consignado_averbacao.confirmed` (Consignado)                      | Confirma a averbação na proposta e converge o desembolso.                                                                                                       |
| `consignado-gw.consignado_averbacao.rejected` (Consignado)                       | Aplica a rejeição da averbação à proposta e ao contrato.                                                                                                        |
| `consignado-gw.consignado_employment_status.reported` (Consignado)               | Alimenta o processamento de disrupção de emprego.                                                                                                               |
| `consignado-gw.consignado_exclusao.confirmed` e `.rejected` (Consignado)         | Aplica o desfecho terminal da exclusão ao fluxo de exclusão; um comando de reparo pode reemitir `studio.lerian.consignado_exclusao.requested`.                  |
| `consignado-gw.consignado_redirecionamento.confirmed` e `.rejected` (Consignado) | Aplica o desfecho do redirecionamento ao estado de disrupção de emprego.                                                                                        |
| `consignado-gw.consignado_reconciliation.received` (Consignado)                  | Alimenta o orquestrador de conciliação de uma competência (ingestão de escrituração e repasse).                                                                 |
| `matcher.match_run.completed` (Matcher)                                          | Traduz uma rodada de conciliação concluída em transições de estágio de PDD, emissão de atraso e cobrança, e intenções de lançamento de liquidação ou devolução. |

O fato `consignado-gw.consignado_proposal.accepted` — o handoff de vitória no leilão — tem um handler implementado mas **ainda não conectado a nenhum deployment**: o handoff do leilão não está ativo de ponta a ponta. Ele é listado aqui para que os assinantes saibam que o contrato existe; verifique o manifesto de streaming do seu deployment antes de depender dele.
