Prerequisites
Before you begin, install these tools:
Midaz runs on macOS (Apple Silicon and Intel) and Linux (amd64). On Windows, run it through WSL2.
Step 1 — Clone the repository
Clone the Midaz repository and move into the project directory.
Step 2 — Set up environment files
Midaz uses
.env files to configure each component. Generate them from the provided examples:
.env.example to .env in each component directory. The default values work for local development. You do not need to change them.
Step 3 — Start the infrastructure
Start the supporting services that Midaz needs: PostgreSQL, MongoDB, Valkey, RabbitMQ, Redpanda, and OpenTelemetry.
Step 4 — Start Midaz
Midaz runs as a single Ledger service that includes the onboarding and transaction domains. Start it with:
200 OK response.
Step 5 — Create an organization
An organization represents the business entity behind the financial operation: your company, a client, or a regulated institution. In production, it maps to the legal entity that holds your ledgers, accounts, and transactions.
Save the
id returned in the response. You use it in the next steps as {organization_id}.Step 6 — Create a ledger
A ledger is an isolated book of records within an organization. You can create separate ledgers for different financial domains, such as payments, fee collection, or settlement. Each ledger has its own accounts and transaction history.
id as {ledger_id}.
Step 7 — Create an asset
An asset defines the unit of value tracked in the ledger. This can be a fiat currency like BRL or USD. It can also be loyalty points, crypto tokens, securities, or any custom unit your business tracks. You must create at least one asset before you create accounts.
Step 8 — Create accounts
Accounts represent the participants or buckets in your financial flow: a customer wallet, a revenue pool, a merchant account, or an internal reserve. Each account links to a single asset and follows double-entry accounting rules. You need at least two accounts to process a transaction: one to debit (source) and one to credit (destination). Create a source account:
Step 9 — Process your first transaction
This is the core action: it moves value between accounts with full traceability. Midaz records every transaction as a balanced operation. It debits the source and credits the destination, so your books stay consistent by design.
This transaction sends R$ 10.00 from
@revenue to @customer-001. The value "1000" represents 10.00 in BRL’s smallest unit, cents.Midaz uses integer values to avoid floating-point errors. This is standard practice in financial systems.Step 10 — Verify the balance
Check the destination account balance to confirm the transaction.
Explore the API
Midaz can serve its OpenAPI 3.1 spec and interactive API documentation. The docs surface is off by default. To enable it, set
OPENAPI_DOCS_ENABLED=true in components/ledger/.env and restart Midaz. Then access:
- API docs:
http://localhost:3002/v1/docs - OpenAPI spec:
http://localhost:3002/v1/openapi.json(or/v1/openapi.yaml)
Observability
Midaz ships with a preconfigured Grafana instance integrated with OpenTelemetry.
- Grafana dashboard:
http://localhost:3100 - Default credentials:
midaz/lerian
Stopping Midaz
To stop all services:
Next steps
Creating transactions
Learn the different ways to create transactions, including JSON, inflow, and outflow, and when to use each.
Deploy to production
Deploy Midaz to Kubernetes using the official Helm chart.
Setting up CRM
Manage holders and alias accounts to connect real-world identities to your Midaz accounts.
Extend with plugins
Add Fees Engine, Pix, and other capabilities to your Midaz deployment.

