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

# Choosing the right product

> Learn which Lerian product, plugin, or API to use for each job across ledger, reporting, and orchestration flows, and how the pieces fit together.

Each Lerian product and plugin owns one job, and most real flows touch more than one. The rule that prevents most mistakes:

> **Plugins perform actions; Midaz is the source of truth for state.**

Tell a plugin to *do* something — move money, apply a fee. Ask **Midaz** what the money actually *is* — balances, history, who owns what.

## Which product for which job

***

| You want to…                                | Call                                                                              | Why                                                                                          |
| ------------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Authenticate before any call                | [**Access Manager**](/en/reference/access-manager/am-api-introduction)            | Issues the tokens every product API trusts                                                   |
| Move money in or out                        | [**Bank Transfer**](/en/reference/midaz/plugins/ted/initiate-transfer) or **Pix** | Executes the transfer and records it in Midaz for you                                        |
| Read a balance, statement, or transaction   | [**Midaz**](/en/reference/quick-start-guide)                                      | The Ledger is the source of truth for state — don't infer a balance from a payment plugin    |
| Identify who owns an account                | [**Midaz (CRM)**](/en/reference/midaz/crm/create-holder)                          | Account owners are Holders in Midaz — there's no separate identity service to register first |
| Apply a fee                                 | [**Fees**](/en/reference/midaz/plugins/fees-engine/create-package)                | It calculates the fee and returns it; your app submits the transaction to Midaz              |
| Validate a transaction before it happens    | [**Tracer**](/en/reference/tracer/tracer-api-quick-start)                         | Returns `ALLOW` / `DENY` / `REVIEW` before you submit anything                               |
| Generate a report (including regulatory)    | [**Reporter**](/en/reference/reporter/reporter-developer-quick-start)             | Reads Midaz data read-only, on its own period and format                                     |
| Reconcile transactions across sources       | [**Matcher**](/en/reference/matcher/matcher-developer-quick-start)                | Automates multi-source matching with configurable rules and immutable audit trails           |
| Orchestrate a multi-step financial workflow | [**Flowker**](/en/reference/flowker/flowker-api-quick-start)                      | Manages validation pipelines and sequences of financial operations                           |

<Note>
  **Access Manager** handles authentication and authorization — it controls who can use the products. Account owners are **Holders** stored in Midaz; there's no separate identity service to register before opening an account.
</Note>

## Flows that span products

***

Most real financial operations chain more than one product together. These are the common sequences.

### Payment with validation

> Use **Tracer** → **Bank Transfer** or **Pix** → Midaz

<Steps>
  <Step>
    Call **Tracer** first. It returns `ALLOW`, `DENY`, or `REVIEW`. Stop here if the decision is `DENY` — no payment call needed.
  </Step>

  <Step>
    Call one of the plugins used for payment:

    * **Bank Transfer** for wire transfers
    * **Pix** (Direct or Indirect) for instant payments
  </Step>

  <Step>
    Read the result from **Midaz**. **Bank Transfer** or **Pix** confirms the transfer event; Midaz confirms the new balance. These are two different facts.
  </Step>
</Steps>

### Apply fees

> Use **Fees** → **Midaz**

<Steps>
  <Step>
    Call **Fees** to calculate the applicable fee. It returns the amount — it does not post anything to the ledger.
  </Step>

  <Step>
    Submit the fee transaction to **Midaz**. Fees tells you what to charge; Midaz records it.
  </Step>
</Steps>

### Regulatory or period report

> Use **Midaz** → **Reporter**

<Steps>
  <Step>
    The source data lives in **Midaz** — transactions, balances, holders.
  </Step>

  <Step>
    Call **Reporter** with the period and output format. It reads Midaz read-only and produces the BACEN or fiscal file.
  </Step>
</Steps>

### Transaction reconciliation

> Use **Midaz** + external sources → **Matcher**

<Steps>
  <Step>
    **Matcher** reads from Midaz and one or more external sources.
  </Step>

  <Step>
    It applies configurable matching rules and produces match results, exceptions, and an immutable audit trail. It does not write to Midaz.
  </Step>
</Steps>

## See also

***

* The conceptual map of how the pieces connect: [Building a complete core banking](/en/building-a-complete-core-banking)
* Midaz-specific scenarios: [Midaz use cases](/en/midaz/use-cases)
