Saltar al contenido principal
Los Asientos Contables (también conocidos como Rúbricas) definen el mapeo entre una acción de transacción y los asientos del ledger que genera. Son lo que el motor utiliza para resolver qué cuentas se debitan y se acreditan para cada acción, anotando automáticamente las operaciones con los códigos contables de partida doble correctos para cada etapa del ciclo de vida de la transacción.

Qué son los Asientos Contables


Una rúbrica es un mapeo que le indica al motor qué cuentas del ledger debitar y acreditar para una acción de transacción dada. En lugar de calcular las clasificaciones contables a mano para cada movimiento, registras las rúbricas una vez y dejas que Midaz las resuelva automáticamente a medida que se procesan las transacciones. Cada rúbrica lleva:
  • code — un identificador único (el código del plan de cuentas, ej., 1.1.1.001).
  • description — una etiqueta legible para el asiento (ej., Customer checking — outbound).
  • Un conjunto de mapeos de acción — un asiento por tipo de acción, cada uno con su propia rúbrica de débito y/o crédito.
Cuando se procesa una transacción, el motor resuelve la rúbrica para cada operación y registra el routeCode (y el routeDescription) resultante en la operación. Esto te da una pista de auditoría completa desde la transacción → operación → rúbrica, permitiendo que los equipos rastreen exactamente qué regla contable se aplicó a cada movimiento.
Las rúbricas se configuran por acción en cada Ruta de Operación. Las rutas Source requieren la rúbrica de débito, las rutas destination requieren la rúbrica de crédito, y las rutas bidirectional requieren ambas.

Los 5 tipos de acción


Cada acción representa un evento transaccional distinto. Una sola rúbrica puede mapear diferentes cuentas de débito/crédito para cada acción, de modo que cada etapa de una operación llegue al asiento correcto del ledger.
AcciónIdentificadorDescripción
DirectdirectDébito/crédito inmediato, de un solo paso, entre dos cuentas, sin etapas intermedias (ej., una comisión o un ajuste).
HoldholdReserva fondos creando un movimiento pendiente (mueve valor de available a on_hold en la cuenta de origen).
CommitcommitConfirma un monto previamente retenido, liberando el valor on_hold a la cuenta de destino.
CancelcancelCancela/revierte una retención, devolviendo el valor on_hold al saldo available en la cuenta de origen.
RevertrevertRevierte una transacción direct completada creando una contra-transacción que deshace la original.
Cada acción puede apuntar a diferentes mapeos de cuentas de débito/crédito dentro de la misma rúbrica. Mapea solo las acciones que una ruta realmente usará — pero si habilitas la validación estricta (más abajo), asegúrate de que cada acción que emitan tus transacciones esté cubierta.

Configurar Asientos Contables


Las rúbricas se registran a través de la API como parte de tus Rutas de Operación — el bloque accountingEntries de una ruta define un asiento por acción, cada uno con su rúbrica de debit y/o credit:
{
    "accountingEntries": {
        "direct": {
            "debit": {
                "code": "1.1.1.001",
                "description": "Customer checking — outbound"
            },
            "credit": {
                "code": "1.1.1.002",
                "description": "Customer checking — inbound"
            }
        },
        "hold": {
            "debit": {
                "code": "1.1.1.001",
                "description": "Customer checking — reserve"
            },
            "credit": {
                "code": "2.1.1.001",
                "description": "Pending settlement — hold"
            }
        }
    }
}
Gestionas estos asientos a través de los endpoints de Ruta de Operación — consulta Crear una Ruta de Operación y Actualizar una Ruta de Operación. Para el flujo completo de configuración, consulta Enrutamiento de Transacciones.

Modos de validación


Cómo reacciona Midaz cuando no se encuentra una rúbrica coincidente depende de la configuración contable del Ledger. Hay dos compuertas distintas:

Por defecto (tolerante)

Por defecto, si no hay una rúbrica registrada para una acción, la transacción procede normalmente. Los campos routeCode y routeDescription simplemente se dejan vacíos (nil) para esa operación — no se genera ningún error.

Estricto (opcional)

Establece accounting.validateRoutes en true en la Configuración del Ledger para exigir que todas las acciones tengan una rúbrica registrada. Cualquier operación cuya acción y dirección no tenga un mapeo registrado se rechaza con el error 0117 ErrAccountingRouteNotFound.
{
  "accounting": {
    "validateRoutes": true
  }
}
Con validateRoutes habilitado, si una ruta tiene asientos contables configurados pero la transacción enviada usa una acción que no está registrada (por ejemplo, una Transacción en Dos Fases cuando solo direct está mapeado), la transacción se deniega con 0117 ErrAccountingRouteNotFound. Esto previene discrepancias en tus reportes contables al asegurar que todas las etapas de una operación estén mapeadas antes de la ejecución.
Usa el modo estricto en ledgers de producción donde cada tipo de transacción debe estar contabilizado. El valor predeterminado tolerante es conveniente mientras aún estás configurando las rutas, pero en producción puede dejar movimientos sin clasificación contable de forma silenciosa.
En ambos modos, cuando se encuentra una rúbrica coincidente, la operación se anota con:
  • routeCode — el code de la AccountingRubric resuelta para esa acción y dirección.
  • routeDescription — la descripción de la rúbrica contable resuelta, poblada junto con routeCode.