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

# Criando um Pacote de Taxa

> Crie um novo Pacote de Taxa no Módulo Midaz para definir como as tarifas são calculadas e aplicadas às Transações.

Um Pacote de Taxa agrupa Regras de Taxa e define quando elas se aplicam às Transações.

## Antes de começar

***

* O plugin **Fees Engine** precisa estar habilitado nas [configurações do Módulo Midaz](/pt/lerian-console/midaz-console/plugin-settings).
* Você precisa de um Ledger existente e ao menos uma Conta que possa receber valores de tarifa.
* Se o Pacote deve se aplicar apenas a uma Rota ou Segmento específico, crie esses registros primeiro.

## Criar o Pacote de Taxa

***

<Steps>
  <Step>
    Acesse a página **Pacotes de Taxa** e clique no botão **Novo Pacote**.
  </Step>

  <Step>
    O formulário **Novo Pacote de Taxa** será aberto com várias seções para configurar.

    <Tip>
      Consulte o guia de campos para mais informações sobre os campos do formulário.
    </Tip>

    <Steps>
      <Step>
        Preencha a seção **Basic Information**.
      </Step>

      <Step>
        Configure a seção **Amount Range**.

        <Note>
          Transações fora dessa faixa não terão tarifas aplicadas por este Pacote.
        </Note>
      </Step>

      <Step>
        Clique no botão **Avançar**.
      </Step>

      <Step>
        Selecione uma das opções na seção **Add Fee**:

        * `Flat Fee` - Valor fixo independente do valor da transação.
        * `Percentage` - Percentual sobre o valor da transação.
        * `Max Between Types` - O maior valor entre a tarifa fixa e a percentual.
      </Step>

      <Step>
        Adicione as informações da tarifa.
      </Step>

      <Step>
        (Opcional) Você pode adicionar outra Regra de Taxa se necessário. Para isso, selecione um novo tipo de tarifa e preencha as informações.
      </Step>

      <Step>
        Clique no botão **Avançar**.
      </Step>

      <Step>
        (Opcional) Configure a seção **Account Waivers**:

        * Adicione os aliases das contas que devem ficar isentas das tarifas deste Pacote.
        * Clique em **Adicionar** para incluir cada conta isenta.
      </Step>

      <Step>
        Clique no botão **Avançar**.
      </Step>

      <Step>
        Revise as informações e confirme se está tudo correto.
      </Step>

      <Step>
        Clique no botão **Criar Pacote**.
      </Step>
    </Steps>
  </Step>
</Steps>

Se tudo der certo, você verá uma mensagem de confirmação e será redirecionado para a lista de Pacotes de Taxa.

## Guia de campos

***

### Basic Information

| Campo             | Descrição                                                                  | Exemplo                            |
| ----------------- | -------------------------------------------------------------------------- | ---------------------------------- |
| Nome              | Nome obrigatório do Pacote. Use um nome que descreva o modelo de cobrança. | `Standard Transfer Fee`            |
| Descrição         | Uma explicação de quando e por que o Pacote se aplica.                     | `Fixed fee for standard transfers` |
| Rota da Transação | Filtro opcional por Rota para o Pacote.                                    | `Pix Transfer Route`               |
| ID do Segmento    | Filtro opcional por Segmento para tarifas direcionadas.                    | `Retail Customers`                 |
| Valor Mínimo      | Menor valor de transação elegível para o Pacote.                           | `10.00`                            |
| Valor Máximo      | Maior valor de transação elegível para o Pacote.                           | `500.00`                           |

### Regras de Taxa

Cada tarifa dentro de um Pacote tem uma **Prioridade** (1 = aplicada primeiro). A tarifa com prioridade `1` deve usar `Original Amount` como Valor de Referência.

#### Taxa Fixa

Um valor fixo aplicado à Transação independentemente do seu valor.

| Campo                   | Descrição                                                                                                                                              | Exemplo           |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- |
| Valor                   | O valor fixo cobrado por esta tarifa. Precisa ser um número positivo.                                                                                  | `5.00`            |
| Nome da Taxa            | Identificador único desta tarifa, usado como chave do objeto JSON. **Precisa começar com letra ou underscore** e conter apenas letras, números ou `_`. | `taxaAdm`         |
| Valor de Referência     | Base usada no cálculo: `Original Amount` (valor da transação como enviado) ou `After Fees Amount` (valor após as tarifas anteriores do Pacote).        | `Original Amount` |
| Conta de Crédito        | Alias da conta que recebe o valor da tarifa.                                                                                                           | `@fees_transfers` |
| Rota de Origem          | Opcional. Nome ou UUID da Rota de origem desta operação de tarifa.                                                                                     | `payments_in`     |
| Rota de Destino         | Opcional. Nome ou UUID da Rota de destino desta operação de tarifa.                                                                                    | `fees_revenue`    |
| Dedutível da transação? | Quando ativado, a tarifa é deduzida do valor da transação (paga pelo recebedor); quando desativado, a tarifa é somada por cima (paga pelo remetente).  | Off               |

<Note>
  Quando **Dedutível da transação?** está ativado, **Valor de Referência** é forçado para `Valor Original` (a opção `Valor Após Taxas` fica desabilitada no formulário).
</Note>

#### Percentual

Um percentual do valor da Transação.

| Campo                   | Descrição                                                                                                                                            | Exemplo           |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| Porcentagem             | Alíquota percentual aplicada ao valor de referência. Precisa ser maior que `0` e menor ou igual a `100`.                                             | `2.5`             |
| Nome da Taxa            | Identificador único desta tarifa, usado como chave do objeto JSON. Precisa começar com letra ou underscore e conter apenas letras, números ou `_`.   | `processingFee`   |
| Valor de Referência     | `Original Amount` para cobrar sobre o valor enviado da transação ou `After Fees Amount` para cobrar sobre o valor após tarifas anteriores no Pacote. | `Original Amount` |
| Conta de Crédito        | Alias da conta que recebe o valor da tarifa.                                                                                                         | `@fees_revenue`   |
| Rota de Origem          | Opcional. Nome ou UUID da Rota de origem desta operação de tarifa.                                                                                   | `payments_in`     |
| Rota de Destino         | Opcional. Nome ou UUID da Rota de destino desta operação de tarifa.                                                                                  | `fees_revenue`    |
| Dedutível da transação? | Ative para que a tarifa seja deduzida do valor da transação; desative para somar a tarifa por cima.                                                  | `Disabled`        |

#### Máximo Entre Tipos

Calcula um valor fixo **e** um percentual e aplica o maior resultado. Ambos os cálculos são obrigatórios.

| Campo                      | Descrição                                                                                                                                          | Exemplo           |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| Taxa Fixa (Cálculos)       | Primeira linha de cálculo. Candidato de valor fixo. Precisa ser um número positivo.                                                                | `1.00`            |
| Taxa Percentual (Cálculos) | Segunda linha de cálculo. Candidato percentual; precisa ser maior que `0` e menor ou igual a `100`.                                                | `2.0`             |
| Nome da Taxa               | Identificador único desta tarifa, usado como chave do objeto JSON. Precisa começar com letra ou underscore e conter apenas letras, números ou `_`. | `guaranteeFee`    |
| Valor de Referência        | Base usada para calcular o candidato percentual antes da comparação.                                                                               | `Original Amount` |
| Conta de Crédito           | Alias da conta que recebe o valor resultante (o maior) da tarifa.                                                                                  | `@fees_guarantee` |
| Rota de Origem             | Opcional. Nome ou UUID da Rota de origem desta operação de tarifa.                                                                                 | `payments_in`     |
| Rota de Destino            | Opcional. Nome ou UUID da Rota de destino desta operação de tarifa.                                                                                | `fees_revenue`    |
| Dedutível da transação?    | Quando ativado, o maior dos dois resultados é deduzido do valor da transação; quando desativado, é somado por cima.                                | `Disabled`        |

<Note>
  O formulário **Máximo Entre Tipos** sempre exige exatamente dois cálculos: um do tipo `Taxa Fixa` e outro do tipo `Percentual`. O Console calcula os dois e aplica o maior.
</Note>

### Contas Isentas

| Campo          | Descrição                         | Exemplo                   |
| -------------- | --------------------------------- | ------------------------- |
| Alias da conta | O alias da conta que será isenta. | `@customer_john_checking` |

## Observações importantes

***

### Ordem de prioridade das tarifas

Quando um Pacote contém várias tarifas, elas são aplicadas em ordem de prioridade (menor número primeiro). Isso importa ao usar `After Fees Amount` como referência, já que tarifas anteriores afetam a base de cálculo das seguintes.

**Exemplo**:

* Tarifa A (Prioridade 1): 1% sobre o valor original
* Tarifa B (Prioridade 2): 0.5% sobre o valor após tarifas

Em uma transação de \$100:

* Tarifa A = \$1.00 (1% de \$100)
* Tarifa B = \$0.495 (0.5% de \$99)

### Considerações sobre a faixa de valor

* As faixas não devem se sobrepor entre Pacotes para a mesma Rota de Transação.
* Use `0.01` como mínimo para Pacotes que devam se aplicar a todas as transações.
* Use um máximo alto (por exemplo, `999999999.99`) para não ter limite superior.
* Transações exatamente nos valores mínimo ou máximo estão incluídas na faixa.

### Comportamento das contas isentas

* Contas isentas pulam todas as tarifas do Pacote, não apenas tarifas específicas.
* Use aliases de conta (não IDs) ao adicionar contas isentas.
* As isenções valem quando a conta isenta é a **origem** da transação.

## O que fazer em seguida

***

Após criar o Pacote de Taxa, rode um cálculo de teste em [Executando uma Estimativa de Tarifas](/pt/lerian-console/midaz-console/fe-fee-simulation) antes de usá-lo com Transações reais.

<Card title="Equivalente na API" type="info" horizontal>
  [Endpoint Criar Pacote](/pt/reference/midaz/plugins/fees-engine/create-package)
</Card>
