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

# Reglas contables

> Aprende cómo las Rutas contables deciden qué cuentas participan en una transacción y cómo se registran los asientos de débito y crédito para cada tipo de transacción en Midaz.

La sección **Accounting** es donde defines reglas opcionales para las transacciones.

Lo haces a través de las **Rutas contables**. Una Ruta contable es una regla reutilizable para un tipo de transacción, como una *transferencia Pix*, una *compra con tarjeta* o un *cobro de comisión*. Cada ruta responde tres preguntas:

* ¿Qué cuentas pueden actuar en el lado de origen?
* ¿Qué cuentas pueden actuar en el lado de destino?
* ¿Qué asientos de débito y crédito registra la ruta cuando se ejecuta la transacción?

**Ejemplo.** Una ruta `Pix transfer` puede exigir una cuenta `customer` en el lado de origen y una cuenta `merchant` en el lado de destino. Luego, la ruta define asientos directos de débito y crédito entre ellas. Cuando habilitas la validación de rutas, una transacción Pix que hace referencia a la ruta valida las cuentas y aplica las reglas configuradas.

Las Rutas contables ofrecen validación de rutas opcional. Midaz la aplica solo cuando habilitas la configuración de Ledger `accounting.validateRoutes` (el valor predeterminado es `false`). Cuando está habilitada, las transacciones deben hacer referencia a rutas válidas y las operaciones deben coincidir con las reglas configuradas. Las rutas son más fáciles de modelar cuando ya sabes qué cuentas representan a los clientes, la tesorería, las comisiones, la liquidación, los ingresos y los gastos.

## Cómo encajan las piezas

***

<Frame>
  <img src="https://mintcdn.com/lerian-49cb71fc/RAVxFNT8MNA4GWjO/images/es/d2/accounting-route-flow.svg?fit=max&auto=format&n=RAVxFNT8MNA4GWjO&q=85&s=636d0ba1d73dd6b1fdc6d690715d41b6" alt="Cómo encajan las cuentas, los tipos de cuenta y las rutas contables para que una solicitud de transacción se valide y se registre como asientos de débito y crédito" width="1906" height="345" data-path="images/es/d2/accounting-route-flow.svg" />
</Frame>

| Elemento            | Qué controla                                                                              | Ejemplo                                                   |
| ------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Ruta contable       | La ruta que agrupa las reglas de operación en el nivel de la transacción.                 | `Pix transfer route`                                      |
| Ruta de operación   | El lado de la cuenta y la regla de validación.                                            | `Source must be customer`, `Destination must be merchant` |
| Regla de validación | Cómo decide Midaz si una cuenta puede usarse.                                             | Account Type `customer` o alias `@treasury_main`          |
| Escenario contable  | Qué asientos de débito y crédito se registran durante el ciclo de vida de la transacción. | Direct, Two-Step, Reversal, Overdraft, Block/Unblock      |

## Elegir el tipo de operación

***

<AccordionGroup>
  <Accordion title="Usa Source cuando la regla se aplique solo al lado de envío">
    Usa **Source** para cuentas donde se origina el valor.

    Ejemplo: una cuenta de cliente puede enviar fondos en un flujo de pago.
  </Accordion>

  <Accordion title="Usa Destination cuando la regla se aplique solo al lado de recepción">
    Usa **Destination** para cuentas donde llega el valor.

    Ejemplo: una cuenta de comerciante puede recibir fondos en un flujo de pago.
  </Accordion>

  <Accordion title="Usa Bidirectional cuando la misma regla se aplique a ambos lados">
    Usa **Bidirectional** cuando la misma clase de cuenta pueda enviar y recibir.

    Ejemplo: las cuentas corrientes pueden transferir valor a otras cuentas corrientes.
  </Accordion>
</AccordionGroup>

<Note>
  Una ruta debe incluir una ruta de operación Source y una Destination, o al menos una ruta de operación Bidirectional.
</Note>

## Elegir la regla de validación

***

| Tipo de validación | Cuándo usarla                                  | Ejemplo                                   |
| ------------------ | ---------------------------------------------- | ----------------------------------------- |
| Account Type       | Cualquier cuenta de una clase debe ser válida. | Cualquier cuenta `customer` puede enviar. |
| Alias              | Solo una cuenta exacta debe ser válida.        | Solo `@treasury_main` puede enviar.       |

Una ruta de operación puede incluir opcionalmente una regla de cuenta (Account Types registrados o un `@Alias`). Midaz aplica una regla presente cuando habilitas la validación de rutas. Usa la validación por Account Type para flujos escalables. Usa la validación por alias para cuentas operativas fijas, como cuentas de tesorería, comisión, liquidación o suspensión.

## Patrones comunes de rutas

***

### De cliente a comerciante

Usa rutas Source y Destination separadas cuando cada lado tenga un rol distinto.

| Ruta de operación | Validación              |
| ----------------- | ----------------------- |
| Source            | Account Type `customer` |
| Destination       | Account Type `merchant` |

### Transferencia entre pares

Usa una ruta Bidirectional cuando el mismo tipo de cuenta pueda ser tanto origen como destino.

| Ruta de operación | Validación              |
| ----------------- | ----------------------- |
| Bidirectional     | Account Type `customer` |

### Cobro de comisiones

Usa una ruta Destination con validación por alias cuando las comisiones deban llegar siempre a una cuenta operativa fija.

| Ruta de operación | Validación              |
| ----------------- | ----------------------- |
| Source            | Account Type `customer` |
| Destination       | Alias `@fee_revenue`    |

## Escenarios contables

***

| Escenario            | Cuándo usarlo                                                                                                                               | Qué configura el usuario                                                         |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Direct Transaction   | El movimiento se ejecuta en un solo paso.                                                                                                   | Asientos de débito y crédito para el registro inmediato.                         |
| Two-Step Transaction | El movimiento tiene fases de hold, commit y cancel.                                                                                         | Asientos para la reserva, la confirmación y la cancelación.                      |
| Reversal             | Una transacción completada puede necesitar revertirse.                                                                                      | Asientos de débito y crédito para el evento de reversión.                        |
| Overdraft            | Un débito puede exceder los fondos disponibles de la cuenta y recurrir a una línea de sobregiro.                                            | Asientos de débito y crédito para el uso del sobregiro y su posterior reembolso. |
| Block/Unblock        | Los fondos deben retenerse y luego liberarse del saldo de la cuenta. Disponible para todos los tipos de ruta (la pestaña se llama "Block"). | Asientos para los eventos de bloqueo (hold) y desbloqueo (release).              |

<Warning>
  No habilites la validación de rutas en la configuración del Ledger hasta que existan las rutas necesarias. Si la habilitas sin rutas coincidentes, las transacciones fallan la validación.
</Warning>

## Páginas disponibles

***

<Card title="Configurar la contabilidad en la Console" icon="list-check" href="/es/products/midaz/console/accounting-setup-in-console">
  Una guía paso a paso, centrada en la Console, para construir tu modelo contable, desde el plan de cuentas hasta un pago Pix funcional. No requiere llamadas a la API.
</Card>

<Card title="Gestionar Rutas contables" icon="route" href="/es/products/midaz/console/managing-accounting-routes">
  Configura rutas contables con reglas de operación y escenarios contables en un asistente unificado.
</Card>
