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

> Which Lerian product or plugin to use for each job — and how they fit together across a flow.

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)
