> ## 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 de Lender

> Consulta los eventos de dominio que emite y consume Lerian Lender — ciclo de vida del préstamo, cobranza, jurisdicción BR y comandos de consignado — con payloads y semántica de entrega.

Lender emite eventos de dominio como mensajes **CloudEvents 1.0** en modo de contenido binario sobre Kafka, publicados vía `lib-streaming`. Cada evento viaja en el [sobre compartido](/es/reference/events/overview): `ce-type` nombra el evento como `studio.lerian.<resource>.<event>`, `ce-subject` lleva el id del agregado, `ce-tenantid` el tenant propietario y `ce-schemaversion` la versión del payload — `1.0.0` para todos los eventos de abajo.

El `ce-source` viene de `STREAMING_CLOUDEVENTS_SOURCE`, y Lender **exige el valor exacto `lender`** cuando el streaming está habilitado — arrancar con cualquier otro valor falla. Los tópicos derivan de la fuente (consulta [Nombres de tópicos](/es/reference/events/overview#nombres-de-tópicos)), así que cada evento emitido llega a `lender.<resource>.<event>`.

Cada evento del catálogo de Lender está **respaldado por outbox**: la fila del evento se escribe en la misma transacción de base de datos que el cambio de estado que reporta, y un relay publica las filas confirmadas en Kafka, reintentando durante las caídas del broker. El catálogo no permite debilitar esa política por despliegue. Los importes de dinero y las tasas viajan por la red como **cadenas** decimales, nunca como floats. Lender sirve su catálogo completo de eventos en `GET /api/v1/streaming/manifest`.

## Eventos del ciclo de vida del préstamo

| Evento (`ce-type`)                            | Tópico                                 | Se dispara cuando                                                                                                      | Payload principal                                                                                                                                                                                                                                                                                               |
| --------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.loan_application.submitted`    | `lender.loan_application.submitted`    | Una solicitud se valida y persiste, pendiente de aprobación.                                                           | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `requestedPrincipalAmount`, `requestedInterestRate`, `requestedInstallments`, `expectedDisbursementDate`, `previewProfileVersion`, `previewJurisdictionCode`, `previewScheduleSnapshotId`, `createdAt`, `updatedAt`   |
| `studio.lerian.loan_application.approved`     | `lender.loan_application.approved`     | Una solicitud pendiente se aprueba.                                                                                    | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `approvedAmount`, `approvalDecisionId`, `approvalDecisionAt`, `approvedBy`, `requestedPrincipalAmount`, `previewProfileVersion`, `previewJurisdictionCode`, `updatedAt`                                               |
| `studio.lerian.loan_application.rejected`     | `lender.loan_application.rejected`     | Una solicitud pendiente se rechaza.                                                                                    | Como `approved`, con `rejectionDecisionId`, `rejectionDecisionAt`, `rejectedBy`                                                                                                                                                                                                                                 |
| `studio.lerian.loan_application.withdrawn`    | `lender.loan_application.withdrawn`    | Una solicitud pendiente se retira.                                                                                     | Como `approved`, con `withdrawalDecisionId`, `withdrawalDecisionAt`, `withdrawnBy`                                                                                                                                                                                                                              |
| `studio.lerian.loan_application.disbursed`    | `lender.loan_application.disbursed`    | Una solicitud aprobada se desembolsa y se crea el préstamo activo.                                                     | `loanApplicationId`, `loanProductVersionId`, `borrowerId`, `assignedOfficerId`, `status`, `loanAccountId`, `disbursementEventId`, `disbursementTransactionId`, `grossRequestedAmount`, `netDeliveredAmount`, `disbursedAt`, `profileVersion`, `jurisdictionExtensions`?, `previewJurisdictionCode`, `updatedAt` |
| `studio.lerian.loan_product.created`          | `lender.loan_product.created`          | Un producto de crédito se persiste como borrador.                                                                      | `loan_product_id`, `name`, `loan_type`, `status`, `jurisdiction_code`, `current_version_id`?, `created_at`                                                                                                                                                                                                      |
| `studio.lerian.loan_product.activated`        | `lender.loan_product.activated`        | Un producto pasa a activo, fijado a un snapshot de versión.                                                            | `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`  | Se añaden términos inmutables de versión de producto.                                                                  | `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`           | Una plantilla de cargo de la versión del producto se persiste como cargo aplicado inmutable en una cuenta de préstamo. | `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` | El perfil contable y las reglas de asiento de una versión de producto del tenant se configuran de forma durable.       | `profile_id`, `loan_product_version_id`, `accounting_mode`, `posting_rules` (cada entrada: `event_type` y `legs` con `account`, `role`?, `side`, `component`?, `optional`), `created_at`                                                                                                                        |

## Eventos de servicing

| Evento (`ce-type`)                               | Tópico                                    | Se dispara cuando                                                            | Payload principal                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------ | ----------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `studio.lerian.repayment.recorded`               | `lender.repayment.recorded`               | Un pago se registra de forma durable con su asignación de caja.              | `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`      | Una reversión de pago se registra como transacción compensatoria con linaje. | Como `repayment.recorded`, más `original_transaction_id`, `profile_version`, `jurisdiction_code`                                                                                                                                                                                                                   |
| `studio.lerian.loan_schedule.prepayment_applied` | `lender.loan_schedule.prepayment_applied` | Un prepago produce una versión sucesora del 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`        | Una reprogramación produce una versión sucesora del cronograma.              | Como `prepayment_applied` menos `prepayment_amount`, más `first_rescheduled_due_date`                                                                                                                                                                                                                              |

## Eventos de cobranza

Los cuatro eventos de pago de cobranza comparten un único esquema de payload; los campos opcionales se completan por flujo.

| Evento (`ce-type`)                           | Tópico                                | Se dispara cuando                                                                           | Payload principal                                                                                                                                                                                                                                                                                    |
| -------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.collection_payment.applied`   | `lender.collection_payment.applied`   | Un pago de cobranza verificado se conserva y se aplica a un camino financiero del préstamo. | `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` | Un pago se conserva como caja sin aplicar, con un motivo de reparación acotado.             | Mismo esquema                                                                                                                                                                                                                                                                                        |
| `studio.lerian.collection_payment.reapplied` | `lender.collection_payment.reapplied` | Caja sin aplicar se libera hacia las cuentas por cobrar.                                    | Mismo esquema                                                                                                                                                                                                                                                                                        |
| `studio.lerian.collection_payment.refunded`  | `lender.collection_payment.refunded`  | Caja sin aplicar se devuelve mediante una solicitud al proveedor.                           | Mismo esquema                                                                                                                                                                                                                                                                                        |

## Eventos de jurisdicción BR

| Evento (`ce-type`)                                  | Tópico                                       | Se dispara cuando                                                                                                                                                                                        | Payload principal                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.loan_account.pdd_stage_transitioned` | `lender.loan_account.pdd_stage_transitioned` | Se persiste una transición o cura de etapa de PDD (BR), con elegibilidad de devengo.                                                                                                                     | `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`            | Se crea una cotización inmutable de prepago BR, con hechos de rebaja y conciliación 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`      | Una cotización de prepago aceptada se liquida; se persiste el desglose final. `final_interest_amount` es un valor de intereses condonados solo para divulgación — nunca lo sumes en movimientos de caja. | `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`   | Caja de nómina confirmada tras la liquidación total se registra como que exige devolución al 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`   | Un recibo confirmado de recuperación de garantía se asigna con conservación de caja.                                                                                                                     | `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 Lender envía al riel de Consignado. Conservan el espacio de nombres de Lender — Consignado se suscribe a esos tópicos `lender.*` (consulta [Eventos de Consignado](/es/reference/events/consignado)).

| Comando (`ce-type`)                                   | Tópico                                         | Se dispara cuando                                                                                          | Payload principal                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.consignado_averbacao.requested`        | `lender.consignado_averbacao.requested`        | La contratación activa pide al riel que realice la averbação de un contrato firmado.                       | `contract_id`, `numero_contrato`, `cpf`, `matricula`, identificación del trabajador y del empleador, los términos financieros aceptados completos (`principal_amount`, `liberated_amount`, `installment_amount`, `installment_count`, tasas, `iof_amount`, `first_deduction_competencia`), el bloque de garantía FGTS, la CCB firmada y las evidencias de firma |
| `studio.lerian.consignado_exclusao.requested`         | `lender.consignado_exclusao.requested`         | Una liquidación total dispara la exclusión de la averbação.                                                | `request_ref`, `settlement_id`, `loan_account_id`, `contract_id`, `numero_contrato`, `settled_at`                                                                                                                                                                                                                                                               |
| `studio.lerian.consignado_redirecionamento.requested` | `lender.consignado_redirecionamento.requested` | La resolución de disrupción laboral solicita una redirección de cobro en nómina hacia un vínculo elegible. | `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 en el catálogo y en el manifiesto, pero ningún flujo de Lender lo emite aún — trátalo como una reserva de contrato, no como tráfico real. Los eventos de hecho de Consignado (`studio.lerian.consignado_proposal.accepted`, `studio.lerian.consignado_averbacao.confirmed` y el resto) también aparecen en el manifiesto de Lender como documentación de contrato, pero su productor es el riel de Consignado — consulta la página [Eventos de Consignado](/es/reference/events/consignado) para esos payloads.

## Eventos consumidos

Los consumidores son opt-in por despliegue: cada uno tiene una bandera de habilitación (apagada por defecto) y falla al arrancar cuando está habilitado sin un broker alcanzable.

| Tópico (productor)                                                               | Qué hace Lender con él                                                                                                                                            |
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `consignado-gw.consignado_averbacao.confirmed` (Consignado)                      | Confirma la averbação en la solicitud y converge el desembolso.                                                                                                   |
| `consignado-gw.consignado_averbacao.rejected` (Consignado)                       | Aplica el rechazo de la averbação a la solicitud y al contrato.                                                                                                   |
| `consignado-gw.consignado_employment_status.reported` (Consignado)               | Alimenta el procesamiento de disrupción laboral.                                                                                                                  |
| `consignado-gw.consignado_exclusao.confirmed` y `.rejected` (Consignado)         | Aplica el desenlace terminal de la exclusión al flujo de exclusión; un comando de reparación puede reemitir `studio.lerian.consignado_exclusao.requested`.        |
| `consignado-gw.consignado_redirecionamento.confirmed` y `.rejected` (Consignado) | Aplica el desenlace de la redirección al estado de disrupción laboral.                                                                                            |
| `consignado-gw.consignado_reconciliation.received` (Consignado)                  | Alimenta el orquestador de conciliación de una competencia (ingesta de escrituración y repasse).                                                                  |
| `matcher.match_run.completed` (Matcher)                                          | Traduce una corrida de conciliación completada en transiciones de etapa de PDD, emisión de mora y cobranza, e intenciones de asiento de liquidación o devolución. |

El hecho `consignado-gw.consignado_proposal.accepted` — el traspaso de victoria en la subasta — tiene un handler implementado pero **aún no cableado en ningún despliegue**: el traspaso de la subasta no está activo de extremo a extremo. Se lista aquí para que los suscriptores sepan que el contrato existe; verifica el manifiesto de streaming de tu despliegue antes de depender de él.
