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

# Lender en la plataforma

> Cómo Lender se contabiliza en el ledger de Midaz, emite eventos del ciclo de vida en el backbone de streaming, aísla tenants y reporta telemetría.

export const GDoubleEntry = ({children}) => <Tooltip headline="Partida doble" tip="Cada movimiento financiero se registra como al menos dos operaciones: un débito de una cuenta y un crédito en otra, asegurando que el sistema siempre esté balanceado." cta="Ver glosario" href="/es/glossary">
    {children}
  </Tooltip>;

export const GLedger = ({children}) => <Tooltip headline="Ledger" tip="El libro financiero central que registra todas las transacciones, saldos y operaciones de una organización — la fuente única de verdad para las finanzas de una unidad de negocio." cta="Ver glosario" href="/es/glossary">
    {children}
  </Tooltip>;

Lender es un primitivo de Lerian: corre sobre la plataforma, no al lado de ella. Cuatro costuras con la plataforma importan cuando lo operas — la ruta de posting al ledger, el flujo de eventos, la multi-tenancy y la observabilidad.

## La ruta de posting a Midaz

***

Lender es la fuente de verdad de la jornada de crédito; [Midaz](/es/midaz/about-midaz) es la fuente de verdad de los saldos. Cada evento financiero que produce un préstamo se contabiliza en el <GLedger>ledger</GLedger> como una transacción de <GDoubleEntry>partida doble</GDoubleEntry> balanceada — y la ruta está construida para nunca perder una contabilización y nunca contabilizar en el lugar equivocado.

<Steps>
  <Step title="Un evento del dominio produce una intención de posting">
    Cuando un préstamo se desembolsa, se registra un repago, se devenga interés o se revierte una transacción, Lender persiste una **intención de posting** durable en la misma transacción de base de datos que cambia el estado del dominio. La intención se escribe en un **outbox** transaccional, de modo que sobrevive a una caída entre "el estado cambió" y "se contabilizó en el ledger".
  </Step>

  <Step title="El relay contabiliza una transacción balanceada en Midaz">
    Un dispatcher del outbox impulsa el relay del ledger, que contabiliza la transacción de partida doble balanceada en Midaz a través del SDK oficial. Los asientos vienen del **perfil contable** del producto.
  </Step>

  <Step title="La idempotencia es durable">
    Cada posting lleva una clave de idempotencia determinista calculada por Lender. Un posting reintentado colapsa a la misma transacción de Midaz; la propia ventana de idempotencia de Midaz es un respaldo, no la guarda principal.
  </Step>

  <Step title="El enrutamiento falla cerrado">
    La transacción se contabiliza en la organización de ledger y el ledger que resuelve el perfil contable. Si el enrutamiento no puede resolver un destino no vacío, el posting **falla cerrado** (fail-closed) — Lender se niega a contabilizar en lugar de escribir en un destino vacío o equivocado.
  </Step>
</Steps>

Lender llega a Midaz a través de [Access Manager](/es/platform/access-manager/access-manager): se autentica con credenciales máquina-a-máquina (M2M) y un JWT de vida corta, por tenant.

## Eventos del ciclo de vida

***

Lender publica un catálogo de **14 eventos de negocio** sobre el backbone de streaming de la plataforma (RedPanda, a través de la librería de streaming de Lerian). Cada evento está **respaldado por el outbox**, es **de alcance por tenant** y lleva un `source` de CloudEvents que define tu despliegue y que además sirve de namespace para los topics de streaming, para que los productos downstream y tus propios servicios puedan reaccionar a la jornada de crédito a medida que avanza. Suscríbete al source que configura tu despliegue en lugar de a un literal fijo.

| Dominio     | Eventos                                                                                                                                            |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Productos   | `loan_product.created`, `loan_product_version.created`, `loan_product.activated`, `accounting_profile.configured`, `loan_charge.applied`           |
| Originación | `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 los eventos viajan por el mismo outbox que el relay del ledger, la entrega de eventos y la contabilización en el ledger comparten una sola garantía de durabilidad: estado, postings y eventos se confirman juntos.

<Info>
  La jornada brasileña de **consignado privado** aporta sus propios eventos encima de este catálogo — señales de margem, averbação y reconciliación. Consulta [Consignado privado](/es/lender/consignado-privado).
</Info>

## Multi-tenancy

***

Como todo producto Lerian, Lender está construido para aislamiento total de tenants desde su base.

* Persistencia **schema-por-tenant** cuando la multi-tenancy está habilitada, de modo que los datos de un tenant nunca comparten tabla.
* Eventos y postings al ledger **de alcance por tenant** — cada evento emitido y cada transacción de Midaz lleva el tenant al que pertenece.
* En modo multi-tenant, el relay del ledger resuelve un cliente de Midaz **por tenant**, y el perfil contable aporta el destino de ledger por tenant (por eso el enrutamiento falla cerrado cuando falta un destino).

Consulta [Multi-tenancy](/es/multi-tenancy) para el modelo a nivel de plataforma.

## Observabilidad

***

Lender emite logs estructurados, trazas OpenTelemetry y métricas sobre el mismo stack de observabilidad que el resto de la plataforma, incluyendo métricas de base de datos, de aserciones y de recuperación de panics. Consulta [Observabilidad](/es/platform/observability).

## Próximos pasos

***

<Card title="Contabilidad y ejecuciones de devengo" icon="calculator" href="/es/lender/accounting-and-accrual-runs" horizontal>
  Profundiza en las reglas de posting, las ejecuciones de devengo y las referencias de asiento.
</Card>

<Card title="Configuración y despliegue" icon="gear" href="/es/lender/configuration-and-deploy" horizontal>
  Mira las dependencias y la configuración que requieren la ruta de posting y el flujo de eventos.
</Card>
