Saltar al contenido principal

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.

Un Saldo representa el valor poseído por una cuenta específica en Midaz. Refleja el resultado de todas las operaciones (débitos y créditos) ejecutadas a lo largo del tiempo, y siempre está vinculado a un Activo específico, como BRL, USD o BTC.

Múltiples saldos


Una única cuenta puede poseer varios saldos, cada uno identificado por una clave única. Esto permite a las instituciones segmentar fondos sin crear múltiples cuentas para el mismo cliente.
Las cuentas externas no pueden tener múltiples saldos. Cada cuenta externa está limitada a un único saldo.
Los casos de uso típicos incluyen:
  • Reservas de inversión
  • Límites de crédito
  • Fondos de garantía (collateral) (bloqueados)
  • Fondos operativos del día a día
Este enfoque (Figura 1) aumenta la flexibilidad mientras mantiene intacto el modelo de doble entrada (débito y crédito), asegurando la consistencia contable, la trazabilidad y la transparencia.
Account Multiple Balances Jp
Si no se proporciona ninguna balanceKey en una transacción, Midaz utiliza automáticamente el saldo por defecto de la cuenta.

Balance key

Cada saldo está identificado por un campo key que lo identifica de forma única dentro de la cuenta.
  • Longitud máxima: 100 caracteres — no se permiten espacios en blanco.
  • Clave por defecto: "default" — asignada automáticamente cuando una cuenta se utiliza por primera vez en una transacción.
  • Unicidad: Las claves deben ser únicas por cuenta. Intentar crear un saldo con una clave que ya existe en la misma cuenta devuelve un error.
  • En transacciones: Si no se especifica ningún balanceKey en una transacción, Midaz utiliza automáticamente el saldo con clave "default".
El campo key se define en el momento de la creación y no puede modificarse. Elige claves descriptivas como "credit", "collateral" o "savings" para que tu modelo de saldos sea autodocumentado.

Permission flags

Cada saldo tiene dos permission flags independientes que controlan si puede participar en transacciones:
FlagTipoDescripción
allowSendingbooleanSi se pueden enviar fondos desde este saldo
allowReceivingbooleanSi se pueden recibir fondos en este saldo
Estos son flags por saldo — se aplican a un saldo específico, no a la cuenta en su conjunto. Ambos tienen valor por defecto true cuando no se especifican. Casos de uso comunes:
  • Congelar un saldo: Establece allowSending y allowReceiving en false para bloquear cualquier movimiento.
  • Saldo solo para recepción: Establece allowSending en false para bloquear transferencias salientes mientras sigue aceptando entradas.
  • Saldo solo para envío: Establece allowReceiving en false para impedir que nuevos fondos entren en este saldo.
Ambos flags pueden establecerse al crear un saldo y actualizarse de forma independiente mediante el endpoint Actualizar un Saldo. Omitir un flag en una solicitud de actualización deja su valor actual sin cambios.
Los permission flags se evalúan en el momento de la transacción. Cambiar un flag afecta solo a las transacciones futuras — no tiene efecto sobre las operaciones ya procesadas.

Ejemplos de uso


  • Billetera de Usuario (BRL): Una billetera digital que muestra un saldo disponible de R$500.
    • Caso de uso: Mostrar saldo en una aplicación de banca móvil y validar fondos antes de autorizar un pago.
  • Cuenta de Liquidación (USD): Una cuenta de proveedor de liquidez con un saldo en USD de $120,000.
    • Caso de uso: Asegurar que las operaciones diarias de tesorería mantengan suficiente margen para las liquidaciones FX.
  • Saldo Bloqueado (BRL): Un saldo de cuenta reservado como garantía (collateral).
    • Caso de uso: Prevenir el uso de fondos hasta que se cierre un préstamo o se cumplan las condiciones.

Estructura del Saldo


  • Saldo > Cuenta: Cada Saldo pertenece a una Cuenta, que posee y mueve valor.
  • Saldo > Activo: Cada Saldo está asociado a un Activo específico, como BRL o BTC.
  • Saldo > Ledger: Los Saldos existen dentro de un Ledger, permitiendo entornos de múltiples libros.
  • Saldo > Clave: Cada Saldo tiene una clave única dentro de la cuenta (p. ej., default, credit, collateral).
En la Figura 2, puedes encontrar un ejemplo de la estructura.
Balance Structure Relationships Jp
Un saldo es más que solo un número. Incluye metadatos sobre el estado de los fondos, como operaciones pendientes y disponibilidad efectiva.

Características clave


  • Seguimiento en tiempo real: Los saldos se actualizan con cada operación confirmada.
  • Múltiples saldos por cuenta: Las cuentas pueden poseer varios saldos, cada uno con sus propias reglas.
  • Fuente única de verdad: Los saldos reflejan la suma neta de todas las operaciones en la cuenta.
  • Consulta por contexto: Los saldos se pueden listar por organización, Ledger, activo, cuenta o clave de saldo.
  • Compatible con cuentas externas: Los saldos se pueden recuperar para cuentas internas o externas, incluyendo liquidity pools o socios.

Uso de saldos en transacciones


El campo balanceKey se ha añadido a los siguientes endpoints de transacción para especificar qué saldo usar: Si no se proporciona ninguna balanceKey, el sistema utiliza por defecto el saldo principal de la cuenta.

Nuevos campos en las respuestas

  • balanceKey - Se devuelve en Transacciones y Operaciones, indicando qué saldo se utilizó.
  • key - Se devuelve en Saldos, identificando de forma única cada saldo.
Utiliza siempre la balanceKey de forma coherente en las solicitudes y respuestas para evitar desajustes cuando las cuentas poseen múltiples saldos.

Cambios en la clave de caché (Valkey)


Los saldos almacenados en la caché (Valkey) incluyen la balanceKey.

Formato anterior

<org_id>:<ledger_id>:<account_alias>

Nuevo formato

<org_id>:<ledger_id>:<account_alias>:<balance_key>
Cualquier integración que lea saldos directamente desde Valkey debe actualizarse para incluir la balanceKey. De lo contrario, solo estará disponible el saldo por defecto.

Overdraft


Los saldos soportan overdraft — la capacidad de ser debitados más allá de los fondos disponibles. Cuando el overdraft está habilitado, el déficit se rastrea como OverdraftUsed y Midaz maneja automáticamente el split de la operación y el reembolso. Dos campos soportan esta funcionalidad:
  • direction — Define si un saldo se comporta como activo (credit, por defecto) o pasivo (debit). Se define en la creación, inmutable.
  • settings — Controla el comportamiento de overdraft: allowOverdraft, overdraftLimitEnabled y overdraftLimit.
La clave "overdraft" está reservada para el saldo companion gestionado por el sistema que registra el lado del pasivo. Intentar crear un saldo con esta clave devuelve un error.
Los saldos también se distinguen por alcance vía settings.balanceScope. Los saldos transactional (por defecto) son gestionados por el usuario y participan en transacciones regulares. Los saldos internal son operados exclusivamente por el sistema — como el companion de overdraft — y no pueden ser objetivo de transacciones de usuario, ni modificados o eliminados a través de la API pública. Para detalles completos sobre modos de configuración, splits de operación, reembolso automático, eventos y casos de uso, vea Overdraft de Saldo.

Historial de saldo


Midaz proporciona consultas point-in-time para saldos, lo que le permite recuperar el estado exacto de un saldo en cualquier momento del pasado. Esto es esencial para auditoría, conciliación e informes históricos.

Cómo funciona

Cuando consulta el historial de saldo, Midaz reconstruye el estado del saldo tal como existía en la fecha y hora especificadas. La respuesta incluye todos los mismos campos que un saldo regular — excepto allowSending y allowReceiving. Estos campos reflejan permisos operacionales actuales en lugar del estado histórico, por lo que no se incluyen en las instantáneas point-in-time.
¿Por qué se excluyen los permission flags del historial?allowSending y allowReceiving son configuraciones operacionales mutables — pueden modificarse en cualquier momento sin crear una entrada en el ledger. A diferencia de los importes del saldo (available, onHold), que cambian solo como resultado de transacciones registradas, los permission flags representan el estado operacional actual de un saldo, no un hecho sobre su pasado.Las auditorías y conciliaciones históricas se preocupan por los importes en un momento determinado. Si el envío o la recepción estaban habilitados en un instante dado no es relevante para fines de auditoría o conciliación, e incluir el estado mutable de permisos en instantáneas inmutables introduciría ambigüedad sin ningún valor.

Casos de uso

  • Auditoría regulatoria: Demuestre el saldo exacto de una cuenta en un punto de control de cumplimiento específico.
  • Conciliación: Compare instantáneas de saldos entre sistemas en marcas de tiempo coincidentes.
  • Resolución de disputas: Recupere el estado preciso de la cuenta en el momento de una transacción disputada.
  • Informes de fin de día: Capture posiciones de saldo al cierre del mercado para operaciones de tesorería.
El parámetro date es obligatorio y debe seguir el formato yyyy-mm-dd hh:mm:ss (p. ej., 2026-01-15 10:30:00). Si no existen datos de saldo para la marca de tiempo especificada, se devuelve un error 404.

Consultar historial de saldo

Puede consultar el historial de un saldo individual o de todos los saldos de una cuenta:

Gestión de Saldos


Puedes recuperar tus Saldos utilizando la API. Los saldos son de solo lectura y son gestionados automáticamente por el motor del Ledger de Midaz.
¿Quieres rastrear cómo se formó un saldo? Utiliza la API de Operaciones para inspeccionar el historial del Ledger que impactó a esa cuenta.

Próximos pasos