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

# Primeros pasos con Midaz

> Ejecuta Midaz localmente, crea tu primera Organización, Ledger y Cuentas y procesa tu primera Transacción en menos de 10 minutos con esta guía práctica.

En esta guía, configuras un entorno Midaz funcional. Luego recorres el flujo de trabajo principal detrás de cualquier aplicación financiera en la plataforma. Creas una organización, un ledger y cuentas, y luego procesas tu primera transacción.

Al final, tienes un ledger en funcionamiento listo para tu caso de uso. Puede ser pagos, préstamos, liquidación de marketplace o tesorería interna.

## Prerrequisitos

***

Antes de comenzar, instala estas herramientas:

| Herramienta                                                | Versión mínima | Comando de verificación  |
| ---------------------------------------------------------- | -------------- | ------------------------ |
| [Go](https://go.dev/dl/)                                   | 1.26+          | `go version`             |
| [Docker](https://docs.docker.com/get-docker/)              | 24+            | `docker --version`       |
| [Docker Compose](https://docs.docker.com/compose/install/) | 2.20+          | `docker compose version` |
| [Make](https://www.gnu.org/software/make/)                 | 3.81+          | `make --version`         |
| [Git](https://git-scm.com/)                                | 2.30+          | `git --version`          |

<Note>
  Midaz se ejecuta en **macOS** (Apple Silicon e Intel) y **Linux** (amd64). En Windows, ejecútalo a través de **WSL2**.
</Note>

## Paso 1 — Clonar el repositorio

***

Clona el repositorio de Midaz y accede al directorio del proyecto.

<CodeGroup>
  ```bash Terminal theme={null}
  git clone https://github.com/LerianStudio/midaz.git
  cd midaz
  ```
</CodeGroup>

## Paso 2 — Configurar los archivos de entorno

***

Midaz usa archivos `.env` para configurar cada componente. Genéralos a partir de los ejemplos proporcionados:

<CodeGroup>
  ```bash Terminal theme={null}
  make set-env
  ```
</CodeGroup>

Este comando copia `.env.example` a `.env` en el directorio de cada componente. Los valores predeterminados funcionan para desarrollo local. No necesitas cambiarlos.

## Paso 3 — Iniciar la infraestructura

***

Inicia los servicios de soporte que Midaz necesita: PostgreSQL, MongoDB, Valkey, RabbitMQ, Redpanda y OpenTelemetry.

<CodeGroup>
  ```bash Terminal theme={null}
  make infra COMMAND=up
  ```
</CodeGroup>

Espera hasta que todos los contenedores reporten un estado saludable. Verifica su estado con:

<CodeGroup>
  ```bash Terminal theme={null}
  docker compose -f components/infra/docker-compose.yml ps
  ```
</CodeGroup>

<Tip>
  Los servicios de infraestructura usan los siguientes puertos predeterminados:

  | Servicio             | Puerto |
  | -------------------- | ------ |
  | PostgreSQL Primary   | 5701   |
  | PostgreSQL Replica   | 5702   |
  | MongoDB              | 5703   |
  | Valkey (Redis)       | 5704   |
  | Grafana (OTEL)       | 3100   |
  | RabbitMQ Management  | 3003   |
  | RabbitMQ AMQP        | 3004   |
  | Redpanda (Kafka API) | 19092  |
</Tip>

## Paso 4 — Iniciar Midaz

***

Midaz se ejecuta como un único servicio **Ledger** que incluye los dominios de onboarding y de transacciones. Inícialo con:

<CodeGroup>
  ```bash Terminal theme={null}
  make up
  ```
</CodeGroup>

Este comando inicia la infraestructura, si es necesario, y los servicios de Midaz. Todas las APIs están disponibles en el **puerto 3002**.

Verifica que Midaz responda:

<CodeGroup>
  ```bash Terminal theme={null}
  curl http://localhost:3002/health
  ```
</CodeGroup>

Deberías recibir una respuesta `200 OK`.

## Paso 5 — Crear una organización

***

Una organización representa la entidad comercial detrás de la operación financiera: tu empresa, un cliente o una institución regulada. En producción, se corresponde con la entidad legal que contiene tus ledgers, cuentas y transacciones.

<Tip>
  Para la especificación completa del endpoint, consulta [Crear una Organización](/es/reference/midaz/create-an-organization).
</Tip>

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations \
    -H "Content-Type: application/json" \
    -d '{
      "legalName": "Acme Corp",
      "legalDocument": "12345678000100",
      "status": {
        "code": "ACTIVE"
      },
      "address": {
        "country": "BR"
      }
    }'
  ```
</CodeGroup>

<Note>
  Guarda el `id` devuelto en la respuesta. Lo usas en los próximos pasos como `{organization_id}`.
</Note>

## Paso 6 — Crear un ledger

***

Un ledger es un libro de registros aislado dentro de una organización. Puedes crear ledgers separados para diferentes dominios financieros, como pagos, cobro de tarifas o liquidación. Cada ledger tiene sus propias cuentas e historial de transacciones.

<Tip>
  Para la especificación completa del endpoint, consulta [Crear un Ledger](/es/reference/midaz/create-a-ledger).
</Tip>

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations/{organization_id}/ledgers \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Primary Ledger",
      "status": {
        "code": "ACTIVE"
      }
    }'
  ```
</CodeGroup>

Guarda el `id` devuelto como `{ledger_id}`.

## Paso 7 — Crear un activo

***

Un activo define la unidad de valor rastreada en el ledger. Puede ser una moneda fiduciaria como BRL o USD. También puede ser puntos de fidelidad, tokens cripto, valores o cualquier unidad personalizada que tu negocio rastree.

Debes crear al menos un activo antes de crear cuentas.

<Tip>
  Para la especificación completa del endpoint, consulta [Crear un Activo](/es/reference/midaz/create-an-asset).
</Tip>

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations/{organization_id}/ledgers/{ledger_id}/assets \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Brazilian Real",
      "type": "currency",
      "code": "BRL",
      "status": {
        "code": "ACTIVE"
      }
    }'
  ```
</CodeGroup>

## Paso 8 — Crear cuentas

***

Las cuentas representan a los participantes o compartimentos en tu flujo financiero: una billetera de cliente, un pool de ingresos, una cuenta de comerciante o una reserva interna. Cada cuenta se vincula a un único activo y sigue las reglas de contabilidad de partida doble.

Necesitas al menos dos cuentas para procesar una transacción: una para debitar (origen) y otra para acreditar (destino).

<Tip>
  Para la especificación completa del endpoint, consulta [Crear una Cuenta](/es/reference/midaz/create-an-account).
</Tip>

Crea una cuenta de origen:

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations/{organization_id}/ledgers/{ledger_id}/accounts \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Revenue Account",
      "assetCode": "BRL",
      "type": "deposit",
      "status": {
        "code": "ACTIVE"
      },
      "alias": "@revenue"
    }'
  ```
</CodeGroup>

Crea una cuenta de destino:

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations/{organization_id}/ledgers/{ledger_id}/accounts \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Customer Account",
      "assetCode": "BRL",
      "type": "deposit",
      "status": {
        "code": "ACTIVE"
      },
      "alias": "@customer-001"
    }'
  ```
</CodeGroup>

## Paso 9 — Procesar tu primera transacción

***

Esta es la acción principal: mueve valor entre cuentas con trazabilidad completa. Midaz registra cada transacción como una operación balanceada. Debita el origen y acredita el destino, para que tus libros se mantengan consistentes por diseño.

<Tip>
  Para la especificación completa del endpoint, consulta [Crear una Transacción usando JSON](/es/reference/midaz/create-a-transaction-using-json).
</Tip>

<CodeGroup>
  ```bash Terminal theme={null}
  curl -X POST http://localhost:3002/v1/organizations/{organization_id}/ledgers/{ledger_id}/transactions/json \
    -H "Content-Type: application/json" \
    -d '{
      "description": "First transaction",
      "send": {
        "asset": "BRL",
        "value": "1000",
        "source": {
          "from": [
            {
              "accountAlias": "@revenue",
              "amount": {
                "asset": "BRL",
                "value": "1000"
              }
            }
          ]
        },
        "distribute": {
          "to": [
            {
              "accountAlias": "@customer-001",
              "amount": {
                "asset": "BRL",
                "value": "1000"
              }
            }
          ]
        }
      }
    }'
  ```
</CodeGroup>

<Info>
  Esta transacción envía **R\$ 10,00** de `@revenue` a `@customer-001`. El valor `"1000"` representa 10,00 en la unidad más pequeña del BRL, centavos.

  Midaz usa valores enteros para evitar errores de punto flotante. Esta es una práctica estándar en sistemas financieros.
</Info>

## Paso 10 — Verificar el saldo

***

Verifica el saldo de la cuenta de destino para confirmar la transacción.

<Tip>
  Para la especificación completa del endpoint, consulta [Consultar un Saldo por Alias de Cuenta](/es/reference/midaz/retrieve-a-balance-by-account-alias).
</Tip>

<CodeGroup>
  ```bash Terminal theme={null}
  curl http://localhost:3002/v1/organizations/{organization_id}/ledgers/{ledger_id}/accounts/alias/@customer-001/balances
  ```
</CodeGroup>

El saldo devuelto debería reflejar el monto acreditado. En este punto, tienes un ledger funcional que procesa transacciones reales.

## Explora la API

***

Midaz puede servir su especificación OpenAPI 3.1 y documentación interactiva de la API. Esta superficie de documentación está desactivada de forma predeterminada. Para activarla, define `LEDGER_HUMA_DOCS_ENABLED=true` en `components/ledger/.env` y reinicia Midaz. Luego accede a:

* **Documentación de la API**: `http://localhost:3002/v1/docs`
* **Especificación OpenAPI**: `http://localhost:3002/v1/openapi.json` (o `/v1/openapi.yaml`)

## Observabilidad

***

Midaz incluye una instancia preconfigurada de Grafana integrada con OpenTelemetry.

* **Panel de Grafana**: `http://localhost:3100`
* **Credenciales predeterminadas**: `midaz` / `lerian`

Desde Grafana, puedes explorar logs, trazas y métricas de todos los servicios de Midaz.

## Detener Midaz

***

Para detener todos los servicios:

<CodeGroup>
  ```bash Terminal theme={null}
  make down
  ```
</CodeGroup>

Para eliminar contenedores y volúmenes y comenzar desde un entorno limpio:

<CodeGroup>
  ```bash Terminal theme={null}
  make clean-docker
  ```
</CodeGroup>

## Próximos pasos

***

<Tip>
  ¿Nuevo en Midaz? Comienza con [Entidades de Midaz](/es/midaz/core-entities) para comprender organizaciones, ledgers, cuentas y transacciones.
</Tip>

<CardGroup cols={2}>
  <Card title="Creando transacciones" icon="arrow-right-arrow-left" href="/es/midaz/transactions-overview">
    Aprende las diferentes formas de crear transacciones, incluyendo JSON, inflow y outflow, y cuándo usar cada una.
  </Card>

  <Card title="Desplegar en producción" icon="cloud" href="/es/platform/helm/midaz/midaz-installation">
    Despliega Midaz en Kubernetes usando el chart oficial de Helm.
  </Card>

  <Card title="Configuración de CRM" icon="users" href="/es/midaz/crm/crm-getting-started">
    Gestiona titulares y cuentas alias para conectar identidades del mundo real a tus cuentas de Midaz.
  </Card>

  <Card title="Extender con plugins" icon="puzzle-piece" href="/es/platform/plugins/what-are-plugins">
    Agrega Fees Engine, Pix y otras capacidades a tu despliegue de Midaz.
  </Card>
</CardGroup>
