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

# Valor da transação

> Use o novo campo numeric para registrar valores de Transação com precisão arbitrária — sem desalinhamentos de escala ou erros de arredondamento.

O Midaz agora utiliza um modelo preciso e simplificado para armazenar valores financeiros ao adotar o tipo `numeric` do PostgreSQL. Essa mudança substitui a estrutura anterior de `amount` e `scale` e marca um passo importante para melhorar a precisão, escalabilidade e experiência do desenvolvedor em todas as operações financeiras.

## O que há de novo?

***

Anteriormente, o Midaz armazenava valores monetários usando:

* `amount`: um inteiro bruto
* `scale`: o número de casas decimais

Por exemplo:

R\$1,00 → `amount = 100`, `scale = 2`

Este modelo foi substituído por um único campo mais preciso e simplificado:

* `value`: uma string representando um número decimal (ex.: `"12.50"` é armazenado exatamente como `"12.50"`)

<Danger>
  O `value` deve ser enviado como uma **string** nas requisições da API — não como float ou inteiro — para garantir precisão arbitrária e evitar erros de arredondamento que frequentemente ocorrem com representações de ponto flutuante em operações financeiras.
</Danger>

Essa nova estrutura elimina incompatibilidades de escala, simplifica a lógica de integração e garante precisão consistente em todos os tipos de ativos — de moedas fiduciárias a tokens crypto de alta precisão.

## Por que isso importa

***

A migração para `numeric` elimina diversas limitações do modelo anterior:

* **Sem necessidade de normalização de escala**: Não é preciso alinhar casas decimais manualmente antes de realizar operações.
* **Lógica pré-transação mais simples**: Verificações de saldo e reservas se tornam diretas — sem ajustes de escala necessários.
* **Experiência de API mais limpa**: Envie e receba valores em sua forma decimal exata, sem se preocupar com conversões de inteiros.
* **Precisão dinâmica**: O banco de dados armazena apenas os dígitos decimais necessários — sem padding ou truncamento.

Exemplo:

* `value = "12.50"` é armazenado e retornado exatamente como `"12.50"`, sem transformações ou perda de precisão.

## O que devo fazer?

***

<Danger>
  O formato `amount + scale` agora está descontinuado.
</Danger>

Todas as novas integrações e chamadas de API devem usar o novo campo `value`. Se você está atualmente usando `amount` e `scale`, é importante **iniciar seu processo de migração imediatamente**.

O Midaz continuará suportando o formato antigo **temporariamente**, mas **o suporte será descontinuado em uma versão futura**.

Recomendamos:

1. Atualizar suas requisições de API para enviar o campo `value` como decimal.
2. Revisar qualquer lógica de normalização interna e remover referências a `amount` e `scale`.
3. Testar fluxos principais — como transferências, pré-transações e cálculos de taxas — usando o novo formato.

### Precisa de ajuda na migração?

Nossa equipe está aqui para ajudar. Se você precisa de ajuda para atualizar sua integração ou validar a consistência dos dados, estamos prontos para apoiar você durante a transição.

<Note>
  O formato anterior de `amount` e `scale` continuará sendo suportado durante uma janela de descontinuação. Um cronograma formal para a descontinuação será anunciado. Enquanto isso, clientes são fortemente encorajados a adotar a nova estrutura o mais rápido possível.
</Note>
