APIs Lerian
Esta seção responde perguntas frequentes sobre as APIs da Lerian, abordando comportamento geral, configuração e boas práticas em todos os serviços.
Existe um número máximo de registros por página nas listagens da API? Posso aumentar esse limite?
Existe um número máximo de registros por página nas listagens da API? Posso aumentar esse limite?
MAX_PAGINATION_LIMIT na configuração do seu deployment. Após a atualização e reinicialização da aplicação, a API aceitará tamanhos de página maiores.Importante: Aumentar o tamanho da página pode afetar os tempos de resposta, especialmente em ambientes que lidam com grandes volumes de dados. Sempre teste exaustivamente em staging antes de aplicar mudanças em produção.Multi-tenancy e SaaS
Perguntas frequentes sobre isolamento de dados, escopo de tenant e como multi-tenancy funciona nos deployments da Lerian.
Meus dados ficam isolados dos de outros clientes no SaaS?
Meus dados ficam isolados dos de outros clientes no SaaS?
Preciso passar um ID de tenant nas minhas requisições de API?
Preciso passar um ID de tenant nas minhas requisições de API?
Posso ter múltiplas Organizations sob um único tenant?
Posso ter múltiplas Organizations sob um único tenant?
A API é diferente entre SaaS e deployments self-hosted?
A API é diferente entre SaaS e deployments self-hosted?
Midaz
Aqui, você encontrará as respostas para perguntas comuns sobre Organizations, Ledgers, Accounts, Transactions e mais no Midaz.
Organizations
Diferentes Organizations se comunicam entre si?
Diferentes Organizations se comunicam entre si?
Posso usar uma única licença em múltiplas Organizations?
Posso usar uma única licença em múltiplas Organizations?
Uma Organization pode ter múltiplos Plugins?
Uma Organization pode ter múltiplos Plugins?
Uma Organization pode ter múltiplos Ledgers?
Uma Organization pode ter múltiplos Ledgers?
Posso criar transações entre uma Parent Organization e uma Child Organization?
Posso criar transações entre uma Parent Organization e uma Child Organization?
Ledgers
Diferentes Ledgers se comunicam entre si?
Diferentes Ledgers se comunicam entre si?
Como posso fazer transações entre Ledgers?
Como posso fazer transações entre Ledgers?
Preciso de um Ledger separado para cada Plugin?
Preciso de um Ledger separado para cada Plugin?
Assets
Um Asset pode ser vinculado a múltiplas Accounts?
Um Asset pode ser vinculado a múltiplas Accounts?
Que tipos de Assets posso usar?
Que tipos de Assets posso usar?
- currency: Moedas fiduciárias tradicionais como BRL, USD e EUR.
- crypto: Ativos digitais como BTC, ETH e outras criptomoedas.
- commodities: Bens tangíveis como ouro, soja e petróleo.
- others: Assets personalizados, incluindo pontos de fidelidade e títulos tokenizados.
Portfólios
Como funciona um Portfolio?
Como funciona um Portfolio?
segment_id diferentes, ele também terá dois valores de account_id correspondentes. Para simplificar a recuperação, um Portfolio é criado para esse CPF, vinculando ambas as contas em uma única estrutura. Isso garante acesso e gerenciamento mais fáceis das contas relacionadas.Accounts
Uma Account pode ser associada a múltiplos Assets?
Uma Account pode ser associada a múltiplos Assets?
O que é uma External Account?
O que é uma External Account?
Como posso criar uma External Account?
Como posso criar uma External Account?
Uma Account pode ser vinculada a vários Segments?
Uma Account pode ser vinculada a vários Segments?
account_id) pode ser vinculada a apenas um Segment (segment_id).Existe um limite de quantas Accounts posso criar no Midaz?
Existe um limite de quantas Accounts posso criar no Midaz?
Qual é o processo para adicionar fundos a uma conta ou realizar um cash-in usando dinheiro vindo de fora do ambiente do Ledger (Midaz)?
Qual é o processo para adicionar fundos a uma conta ou realizar um cash-in usando dinheiro vindo de fora do ambiente do Ledger (Midaz)?
- No Ledger do Midaz, quando um Asset (por exemplo, BRL) é criado, uma External Account associada a esse asset também é gerada.
- Essa External Account atua como um gateway entre o ecossistema Lerian e o mundo externo. Em outras palavras, ela serve como um espelho dos saldos mantidos pela instituição em sua conta PI, conta de liquidação, conta de reserva, ou até mesmo uma conta bancária tradicional ou conta de pagamento que detém os fundos reais.
- Para depositar fundos em uma conta de usuário com um Asset específico vindo de fora do Ledger do Midaz, o processo é o seguinte:
- Inicie uma transação onde a origem é a External Account e o destino é a(s) conta(s) alvo.
- Como resultado, a External Account será debitada pelo valor transferido (ficando negativa), enquanto a(s) conta(s) de destino serão creditadas de acordo, com base nos valores fornecidos no payload da transação.
Transactions
Qual é a estrutura mínima de uma Transaction?
Qual é a estrutura mínima de uma Transaction?
- Operation 1: Debitar R$ 100 da Account A.
- Operation 2: Creditar R$ 100 na Account B.
É possível gerar um comprovante de transferência em PDF contendo os detalhes de uma transação concluída?
É possível gerar um comprovante de transferência em PDF contendo os detalhes de uma transação concluída?
- Via APIs – Recupere dados de transações através das nossas APIs, permitindo que você gere um comprovante visual no formato de sua escolha.
- Usando o Reporter – Extraia dados de transações e crie comprovantes visuais personalizados.
- Através do Console – Acesse informações de transações diretamente pelo Console da Lerian.
Entities
Como posso criar uma Entity?
Como posso criar uma Entity?
entity_id) está aberta para IDs externos, sem validação imposta pelo Midaz. Isso significa que você pode usar os IDs que já existem no seu banco de dados, integrando-os de forma transparente ao seu sistema.Idempotência
O que acontece se eu não enviar uma chave de idempotência?
O que acontece se eu não enviar uma chave de idempotência?
Posso reutilizar uma chave de idempotência em diferentes endpoints?
Posso reutilizar uma chave de idempotência em diferentes endpoints?
O que acontece se eu alterar o TTL em uma retentativa?
O que acontece se eu alterar o TTL em uma retentativa?
A resposta reproduzida será sempre idêntica?
A resposta reproduzida será sempre idêntica?
Qual é o TTL padrão se eu não enviar X-TTL?
Qual é o TTL padrão se eu não enviar X-TTL?
Contabilidade no Midaz
Como posso refletir meu próprio Plano de Contas no Midaz?
Como posso refletir meu próprio Plano de Contas no Midaz?
- Account Types – Crie as categorias lógicas do seu plano (por exemplo, Ativos, Passivos, Receitas, Despesas) e atribua-as às contas no seu ledger. Quando a funcionalidade Account Types está habilitada, o campo type na API de Accounts se torna obrigatório e deve corresponder a um dos valores que você registrou.
- Transaction Routing – Use Operation Routes para validar cada “perna” de uma transação (por exemplo, o débito deve vir de uma conta do tipo
user_wallet) e Transaction Routes para definir padrões completos de transação que se alinham com sua lógica contábil.
Plugins
Plugins estendem as capacidades do Midaz, permitindo integração e orquestração de processos de forma fluida. Projetados para remover complexidade, eles fornecem abstrações poderosas que permitem que você se concentre no seu modelo de negócios, garantindo eficiência e escalabilidade. Explore as perguntas mais comuns sobre como os plugins funcionam, seu deployment e as opções disponíveis para aprimorar suas operações.
O que são Plugins?
O que são Plugins?
Os plugins podem ser usados sem o Midaz?
Os plugins podem ser usados sem o Midaz?
Como os plugins são distribuídos?
Como os plugins são distribuídos?
Quais opções de plugins a Lerian oferece?
Quais opções de plugins a Lerian oferece?
- Plugins Nativos: Desenvolvidos e totalmente integrados ao ledger do Midaz pela Lerian, esses plugins garantem suporte completo e integração fluida com a plataforma.
- Plugins do Marketplace: Criados por parceiros da Lerian para atender nichos específicos de mercado, esses plugins estão disponíveis no marketplace. A Lerian facilita sua integração ao Midaz, mas sua oferta e suporte são gerenciados diretamente pelos respectivos parceiros.
Plugin Fees
Perguntas frequentes sobre o Plugin Fees — o serviço da Lerian responsável por calcular e cobrar taxas sobre transações financeiras.
Conceitos Gerais
O que é o Plugin Fees?
O que é o Plugin Fees?
- Pacotes de Taxas (
/v1/packages): define as regras de cobrança por transação (taxa fixa, percentual, ou o maior entre os dois). - Billing Packages (
/v1/billing-packages): define cobranças periódicas por volume de transações ou por manutenção de contas. - Cálculo e Estimativa (
/v1/feese/v1/estimates): endpoints para calcular taxas em tempo real ou simular antes de confirmar.
Como o Plugin Fees se encaixa no ecossistema Lerian?
Como o Plugin Fees se encaixa no ecossistema Lerian?
O que preciso enviar em toda requisição ao Plugin Fees?
O que preciso enviar em toda requisição ao Plugin Fees?
X-Organization-Id com o ID da sua organização no Midaz. Este é um header de escopo de organização específico do Plugin Fees, não um identificador de tenant — o contexto do seu tenant continua sendo resolvido automaticamente pelo JWT. Quando o plugin de autenticação estiver ativo, também é necessário um Bearer token no header Authorization.O Plugin Fees armazena dados em qual banco?
O Plugin Fees armazena dados em qual banco?
deletedAt. Isso significa que registros “deletados” não aparecem nas listagens, mas podem ser auditados.Qual a versão mínima do Midaz necessária para usar o Plugin Fees?
Qual a versão mínima do Midaz necessária para usar o Plugin Fees?
Pacotes de Taxas
O que é um Pacote de Taxas?
O que é um Pacote de Taxas?
Package) é um conjunto de regras de cobrança agrupadas sob um feeGroupLabel. Cada pacote é vinculado a uma Organização + Ledger e, opcionalmente, a um Segment. Um pacote pode conter múltiplas taxas individuais (objetos Fee), cada uma com sua própria lógica de cálculo. Saiba mais sobre Pacotes de Taxas.Como criar um Pacote de Taxas?
Como criar um Pacote de Taxas?
POST /v1/packages com o seguinte corpo. Veja a referência da API Create Package para detalhes completos.Um pacote pode ser desativado temporariamente?
Um pacote pode ser desativado temporariamente?
enable: false ao criar ou atualizar o pacote. Um pacote desativado não é considerado no cálculo de taxas, mesmo que o contexto da transação corresponda ao seu escopo.Como funciona o escopo de um pacote (minimumAmount / maximumAmount)?
Como funciona o escopo de um pacote (minimumAmount / maximumAmount)?
[minimumAmount, maximumAmount]. Se a transação não se encaixar nesse intervalo, o pacote é ignorado.Exemplo: Um pacote com minimumAmount: 100 e maximumAmount: 5000 só cobrará taxas em transações entre R 5.000.maximumAmount não for definido, o pacote pode ser aplicado sem limite superior — verifique as regras de validação da sua versão.Posso filtrar um pacote por rota de transação?
Posso filtrar um pacote por rota de transação?
transactionRoute no pacote. Quando definido, o pacote só será considerado em transações com aquela rota específica (ex: "PIX", "TED", "BOLETO").O que são waivedAccounts?
O que são waivedAccounts?
waivedAccounts, as taxas do pacote não são aplicadas para ela.Os endpoints de listagem têm paginação?
Os endpoints de listagem têm paginação?
GET /v1/packages, GET /v1/billing-packages) suportam os parâmetros de query limit e page para paginação.Modelos de Cálculo
Quais são os modelos de cálculo disponíveis?
Quais são os modelos de cálculo disponíveis?
applicationRule dentro de calculationModel define como a taxa é calculada. Veja Modelos de Cálculo para detalhes completos. Há três opções:| Regra | Descrição |
|---|---|
flatFee | Taxa fixa em valor absoluto |
percentual | Taxa percentual sobre o valor de referência |
maxBetweenTypes | Calcula flat e percentual; aplica o maior resultado |
Como configurar uma taxa fixa (flatFee)?
Como configurar uma taxa fixa (flatFee)?
flat:Como configurar uma taxa percentual (percentual)?
Como configurar uma taxa percentual (percentual)?
percentage:Como funciona o maxBetweenTypes?
Como funciona o maxBetweenTypes?
maxBetweenTypes exige 2 ou mais cálculos (combinando flat e percentage). O sistema calcula ambos e aplica o maior valor resultante.Exemplo: Taxa mínima de R$ 3,00 ou 1% do valor — o que for maior:Posso misturar múltiplos percentuais no maxBetweenTypes?
Posso misturar múltiplos percentuais no maxBetweenTypes?
flat e percentage — o sistema avalia todos e aplica o maior. Porém, o flatFee e o percentual exigem exatamente 1 cálculo; apenas o maxBetweenTypes aceita 2 ou mais.Campos Importantes
O que é referenceAmount e como ele afeta o cálculo?
O que é referenceAmount e como ele afeta o cálculo?
referenceAmount define sobre qual valor a taxa é calculada:originalAmount: valor original da transação, antes de qualquer taxa ser aplicada.afterFeesAmount: valor da transação após as taxas de maior prioridade já terem sido aplicadas.
priority: 1 (a primeira a ser executada) deve usar originalAmount. Não há taxas anteriores para considerar.O que é isDeductibleFrom e quando devo usá-lo?
O que é isDeductibleFrom e quando devo usá-lo?
isDeductibleFrom: true, a taxa é deduzida do valor enviado pelo remetente. O destinatário recebe o valor já descontado da taxa, e o remetente paga a mais para cobrir a cobrança.Quando false, a taxa é cobrada separadamente (o remetente envia o valor cheio e a taxa é debitada à parte).Restrições:isDeductibleFrom: trueexigereferenceAmount: originalAmount- Se o tipo for
percentage: o valor não pode ultrapassar 100 - Se o tipo for
flat: o valor não pode ultrapassar ominimumAmountdo pacote
Como funciona o campo priority?
Como funciona o campo priority?
priority define a ordem de execução das taxas dentro de um pacote. Taxas com valor menor são executadas primeiro.priority: 1→ executada primeiro (obrigatoriamente usaoriginalAmount)priority: 2→ executada depois, podendo usarafterFeesAmount
O que é creditAccount?
O que é creditAccount?
creditAccount diferente — útil quando diferentes taxas precisam ser contabilizadas em centros de custo distintos.Para que servem routeFrom e routeTo dentro de uma taxa?
Para que servem routeFrom e routeTo dentro de uma taxa?
Billing Packages
O que são Billing Packages?
O que são Billing Packages?
volume: cobra com base na quantidade de transações em um período, com precificação em faixas (tiers).maintenance: cobra uma taxa fixa por conta em um determinado escopo.
Quando usar billing do tipo volume?
Quando usar billing do tipo volume?
maxQuantity). Não pode haver lacunas ou sobreposições entre tiers.Quando usar billing do tipo maintenance?
Quando usar billing do tipo maintenance?
segmentId, portfolioId ou aliases) e o valor da taxa.accountTarget deve ter exatamente um dos três campos: segmentId, portfolioId ou aliases (máximo de 100 aliases).Como funcionam os tiers no billing de volume?
Como funcionam os tiers no billing de volume?
- Devem ser contíguos — sem lacunas entre faixas (
minQuantitydo próximo =maxQuantitydo anterior + 1). - Não podem ter sobreposição.
- O último tier deve ser ilimitado (sem
maxQuantity).
O que é freeQuota?
O que é freeQuota?
freeQuota: 100 significa que as primeiras 100 transações do período não são tarifadas.O que são discountTiers?
O que são discountTiers?
tiers principais.O que é countMode no billing de volume?
O que é countMode no billing de volume?
perRoute: conta transações por rota (ex: total de PIX aprovados).perAccount: conta transações por conta individualmente.
Cálculo e Estimativa de Taxas
Qual a diferença entre /v1/fees e /v1/estimates?
Qual a diferença entre /v1/fees e /v1/estimates?
| Endpoint | Quando usar |
|---|---|
POST /v1/fees | Calcular a taxa real de uma transação em curso. O sistema busca automaticamente os pacotes aplicáveis com base no ledger, segment, rota e valor. Veja a referência da API Calculate Fees. |
POST /v1/estimates | Simular a taxa de um pacote específico antes de confirmar a transação. Útil para mostrar ao usuário final o custo antes de executar. Veja a referência da API Simulate Fees. |
Como funciona o /v1/fees?
Como funciona o /v1/fees?
ledgerId— obrigatóriosegmentId— opcionaltransactionRoute— opcional- Valor da transação — comparado com
minimumAmount/maximumAmountdo pacote
E o /v1/estimates?
E o /v1/estimates?
/v1/estimates permite simular a taxa de um pacote específico (packageId), sem precisar de uma transação real. Ideal para:- Exibir o custo estimado para o usuário antes de confirmar.
- Testar configurações de pacotes recém-criados.
- Construir simuladores de tarifas no seu produto.
Posso usar /v1/estimates em produção para mostrar tarifas ao usuário final?
Posso usar /v1/estimates em produção para mostrar tarifas ao usuário final?
/v1/estimates é um endpoint de leitura — não altera estado, não registra transações. É seguro usar em fluxos de UX para mostrar o custo antes da confirmação.Como calcular o billing?
Como calcular o billing?
Erros Comuns
"Priority 1 must use originalAmount" — o que significa?
"Priority 1 must use originalAmount" — o que significa?
priority: 1 deve obrigatoriamente ter referenceAmount: "originalAmount". Isso ocorre porque ela é a primeira a ser calculada — não há taxas anteriores sobre as quais basear o cálculo.Correção:"isDeductibleFrom requires originalAmount" — como resolver?
"isDeductibleFrom requires originalAmount" — como resolver?
isDeductibleFrom: true só podem usar referenceAmount: "originalAmount". Altere o campo:"Flat fee value cannot exceed minimumAmount" — por quê?
"Flat fee value cannot exceed minimumAmount" — por quê?
isDeductibleFrom: true e o tipo é flat, o valor da taxa não pode ser maior que o minimumAmount do pacote. Isso evita cenários onde a taxa supera o valor mínimo da própria transação.Exemplo: Se minimumAmount: 100, a taxa flat não pode ser maior que R$ 100."Percentage value cannot exceed 100" — quando ocorre?
"Percentage value cannot exceed 100" — quando ocorre?
isDeductibleFrom: true e o tipo é percentage com valor acima de 100. Uma taxa percentual dedutível de 100% zeraria o valor da transação — valores acima disso são inválidos."Tiers must be contiguous" — como corrigir?
"Tiers must be contiguous" — como corrigir?
minQuantity de cada tier é exatamente maxQuantity + 1 do tier anterior."Last tier must be unbounded" — o que isso significa?
"Last tier must be unbounded" — o que isso significa?
maxQuantity). Isso garante que transações acima da maior faixa definida ainda sejam precificadas."accountTarget must have exactly one of: segmentId, portfolioId, aliases"
"accountTarget must have exactly one of: segmentId, portfolioId, aliases"
maintenance, o campo accountTarget aceita apenas uma das três opções. Não combine campos:"aliases" no accountTarget tem algum limite?
"aliases" no accountTarget tem algum limite?
aliases aceita no máximo 100 aliases por Billing Package do tipo maintenance."flatFee requires exactly 1 calculation of type flat"
"flatFee requires exactly 1 calculation of type flat"
applicationRule: "flatFee" aceita exatamente 1 cálculo, e esse cálculo deve ser do tipo flat. Não use percentage com flatFee."percentual requires exactly 1 calculation of type percentage"
"percentual requires exactly 1 calculation of type percentage"
flatFee, o applicationRule: "percentual" aceita exatamente 1 cálculo do tipo percentage."maxBetweenTypes requires 2 or more calculations"
"maxBetweenTypes requires 2 or more calculations"
maxBetweenTypes exige pelo menos 2 cálculos para funcionar — ele precisa de valores para comparar. Forneça ao menos um flat e um percentage.O pacote não está sendo aplicado à transação — o que verificar?
O pacote não está sendo aplicado à transação — o que verificar?
enable: o pacote está ativo (enable: true)?ledgerId: o pacote está vinculado ao ledger correto?minimumAmount/maximumAmount: o valor da transação está dentro do intervalo?transactionRoute: se o pacote temtransactionRoute, a transação usa a mesma rota?segmentId: se o pacote está vinculado a um segmento específico, a conta pertence a ele?waivedAccounts: a conta não está listada como isenta?
Um registro deletado pode ser recuperado?
Um registro deletado pode ser recuperado?
deletedAt) e não são removidos do banco. No entanto, a API não expõe endpoints de restauração por padrão. Consulte a equipe Lerian caso precise recuperar um registro deletado acidentalmente. Para a lista completa de códigos de erro, veja a referência de Códigos de Erro.
