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

# Verificar transacciones de Midaz con Tracer (API)

> Midaz consulta a Tracer sobre una transacción antes de que se mueva cualquier saldo. Tracer reserva capacidad de límite, y Midaz la confirma o la libera.

Deja que Midaz consulte a Tracer sobre una transacción antes de que se mueva cualquier saldo.

## Participantes

***

* **Tu institución.** Tu sistema crea, confirma y cancela las transacciones en Midaz.
* **Midaz.** El ledger. Consulta a Tracer antes de mover cualquier saldo y confirma o libera la capacidad que Tracer reserva.
* **Tracer.** Evalúa tus reglas activas, reserva capacidad en tus límites de gasto y devuelve la decisión a Midaz.

## Antes de empezar

***

* Midaz está conectado a Tracer en tu entorno.
* El modo de Tracer en la configuración de tu ledger es `advisory` o `enforce`. El valor predeterminado es `off`. Cámbialo con [`PATCH /v2/organizations/{organization_id}/ledgers/{ledger_id}/settings`](https://docs.lerian.studio/es/reference/products/midaz/v2/update-ledger-settings). Consulta la [configuración del ledger](https://docs.lerian.studio/es/products/midaz/ledgers.md#ledger-settings).
* Tus reglas y tus límites de gasto están en ACTIVE en Tracer. Consulta [Configurar reglas y límites de gasto](https://docs.lerian.studio/es/diagrams/lerian-products/tracer-set-up-rules-and-limits.md).

## Diagrama

***

### Transacción

![Verificar transacciones de Midaz con Tracer: Transacción](https://mintcdn.com/lerian-49cb71fc/MbifquGny5fsdtVy/images/es/d2/id-tracer-check-ledger-transactions-1.svg?fit=max\&auto=format\&n=MbifquGny5fsdtVy\&q=85\&s=a39a14a7a2620114f97e25516ef470d8)

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | Tu institución | Midaz | API de Lerian | [`POST /v2/transactions/direct`](https://docs.lerian.studio/es/reference/products/midaz/v2/create-transaction-direct) | Crea la transacción. |
| 2 | Midaz | Tracer | Llamada interna | | Antes de que se mueva cualquier saldo, Midaz le pide a Tracer que verifique la transacción y reserve capacidad en tus límites de gasto. |
| 3 | Tracer | Tracer | Paso interno | | Tracer evalúa tus reglas activas. Si las reglas no deciden `DENY` o `REVIEW`, Tracer verifica tus límites de gasto y reserva el monto en los límites que cuentan uso. |
| 4 | Tracer | Midaz | Llamada interna | | Tracer responde `ALLOW`, `DENY` o `REVIEW`. |
| 5 | Midaz | Midaz | Paso interno | | En el modo `enforce`, Midaz rechaza un `DENY` o un `REVIEW`, y ningún saldo se mueve. Si no, Midaz aplica los débitos y los créditos. |
| 6 | Midaz | Tracer | Llamada interna | | Después de que se mueven los saldos, Midaz confirma la capacidad reservada. |
| 7 | Midaz | Tu institución | API de Lerian | Respuesta al paso 1 | Midaz devuelve la transacción con `201`, o el rechazo. |

### Transacción pendiente

![Verificar transacciones de Midaz con Tracer: Transacción pendiente](https://mintcdn.com/lerian-49cb71fc/MbifquGny5fsdtVy/images/es/d2/id-tracer-check-ledger-transactions-2.svg?fit=max\&auto=format\&n=MbifquGny5fsdtVy\&q=85\&s=2c21d70a67c3deb701ae71fb30735660)

| # | Origen | Destino | Mensaje | API de Lerian | Qué ocurre |
| - | - | - | - | - | - |
| 1 | Tu institución | Midaz | API de Lerian | [`POST /v2/transactions/hold`](https://docs.lerian.studio/es/reference/products/midaz/v2/create-transaction-hold) | Crea una transacción pendiente. |
| 2 | Midaz | Tracer | Llamada interna | | Midaz le pide a Tracer que verifique la transacción y reserve capacidad para ella. |
| 3 | Tracer | Midaz | Llamada interna | | Tracer responde `ALLOW`, `DENY` o `REVIEW`. |
| 4 | Midaz | Tu institución | API de Lerian | Respuesta al paso 1 | Midaz devuelve la transacción pendiente con `201`, o el rechazo. |
| 5 | Tu institución | Midaz | API de Lerian | [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/commit`](https://docs.lerian.studio/es/reference/products/midaz/v2/commit-transaction) o [`POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/transactions/{transaction_id}/cancel`](https://docs.lerian.studio/es/reference/products/midaz/v2/cancel-transaction) | Confirma la transacción pendiente o cancélala. |
| 6 | Midaz | Tracer | Llamada interna | | En una confirmación, Midaz confirma la capacidad reservada. En una cancelación, Midaz la libera. |
| 7 | Midaz | Tu institución | API de Lerian | Respuesta al paso 5 | Midaz devuelve la transacción confirmada o cancelada. |

## Cómo saber que terminó

***

Midaz devolvió la transacción, o la transacción pendiente confirmada o cancelada.

## Reglas

***

* Las rutas de transacción v1 no llaman a Tracer.
* En el modo `advisory`, Midaz llama a Tracer y nunca bloquea la transacción.
* En el modo `enforce`, cuando Tracer no responde a tiempo, `tracer.failPosture` decide. Con `open`, el valor predeterminado, la transacción sigue sin la verificación. Con `closed`, Midaz la rechaza.
* Cuando ninguna regla coincide, Tracer no aplica la decisión predeterminada en este camino.
* Tracer verifica la cuenta del primer origen de la transacción, con su segmento y su portafolio. El monto incluye las comisiones.
* Tracer recibe solo valores de metadatos escalares, como texto. Compáralos como strings en las reglas de este camino.
* Una reversión cuenta en tus límites de gasto. Tracer no le aplica tus reglas.
* Si una confirmación o una liberación no llega a Tracer, el resultado de la transacción no cambia.
* Una solicitud puede omitir la verificación de Tracer con `skip.tracer` solo cuando la configuración del ledger `overrides.allowTracerSkip` es `true`.

## Qué puede salir mal

***

Los códigos `0177`, `0531`, `0532`, `0535` y `0178` vienen solo de un ledger en el modo `enforce`.

| Situación | Qué ves | Qué hacer |
| - | - | - |
| Se excede un límite. | `422`, código `0177`. | Nada se movió. Reduce el monto o espera a que se reinicie el periodo del límite. |
| Una regla deniega. | `422`, código `0535`. | Nada se movió. Revisa la regla que coincidió. |
| Una regla pide revisión, o Tracer no puede evaluar una regla. | `422`, código `0531`. | Nada se movió. Atiende el caso en tu proceso de revisión. |
| Tracer rechaza la solicitud. | `422`, código `0532`. | Nada se movió. Verifica el activo, el tipo de cuenta y la fecha de la transacción. |
| Tracer no responde, y la postura es `closed`. | `503`, código `0178`. | Nada se movió. Envía la transacción de nuevo más tarde. |
| El ledger no permite omitir la verificación. | `422`, código `0490`. | Quita `skip.tracer` o permite omitir la verificación en la configuración del ledger. |
| Midaz no responde a tiempo. | Ninguna respuesta. | El resultado no se conoce. Envía la misma solicitud con la misma clave `X-Idempotency` antes de que la clave expire. |

La [lista de errores de Midaz](https://docs.lerian.studio/es/reference/products/midaz/error-list.md) describe cada código.

## Relacionados

***

* [Validar una transacción antes del ledger](https://docs.lerian.studio/es/diagrams/lerian-products/tracer-validate-before-ledger.md)
* [Investigar una decisión en el registro de auditoría](https://docs.lerian.studio/es/diagrams/lerian-products/tracer-investigate-a-decision.md)
* [Guía de integración de Tracer](https://docs.lerian.studio/es/products/tracer/integration-guide.md#midaz-ledger-reservation-seam)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.