APIs Lerian
Esta seção responde perguntas comuns sobre as APIs da Lerian. Ela aborda 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. A API aceita tamanhos de página maiores depois que você reinicia a aplicação.Importante: Um tamanho de página maior pode deixar os tempos de resposta mais lentos, especialmente com grandes volumes de dados. Teste em staging antes de alterar produção.Multi-tenancy e SaaS
Estas perguntas abordam o isolamento de dados, o escopo de tenant e como o 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
Estas perguntas abordam 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.
- fiat: Um tipo alternativo para moedas fiduciárias; como
currency, o código do Asset deve seguir a norma ISO 4217. - 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 tem dois valores de account_id correspondentes. Você cria um Portfolio para esse CPF para vincular ambas as contas em uma única estrutura. Isso facilita encontrar e gerenciar as 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) se vincula 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)?
- Quando você cria um Asset (por exemplo, BRL) no Ledger do Midaz, o Midaz também cria uma External Account para esse Asset.
- Essa External Account espelha os saldos que a instituição mantém fora do Midaz. Esses saldos podem estar em uma conta PI, uma conta de liquidação, uma conta de reserva, ou uma conta bancária tradicional ou de pagamento.
- Para depositar fundos de fora do Ledger do Midaz em uma conta de usuário, siga estes passos:
- Crie uma transação com a External Account como origem e as contas alvo como destino.
- O Midaz debita a External Account pelo valor (por isso ela fica negativa) e credita as contas de destino com base nos valores 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 os dados da transação através das APIs e depois gere um comprovante visual no formato que você escolher.
- Com o Reporter — Extraia os dados da transação e crie comprovantes visuais personalizados.
- Através do Console — Acesse os dados da transação diretamente no Console da Lerian.
Entities
Como posso criar uma Entity?
Como posso criar uma Entity?
entity_id) aceita IDs externos. O Midaz não impõe nenhuma validação nesse campo. Você pode usar os IDs que já existem no seu banco de dados e integrá-los 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?
X-Idempotency-Replayed como true.Qual é o TTL padrão se eu não enviar X-TTL?
Qual é o TTL padrão se eu não enviar X-TTL?
X-TTL para definir um valor personalizado em segundos.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, como Ativos, Passivos, Receitas e Despesas. Atribua-as às contas no seu ledger. Quando você habilita a funcionalidade Account Types, o campo
typena API de Accounts se torna obrigatório e deve corresponder a um valor registrado. - Rotas Contábeis — Use Operation Routes para validar cada perna de uma transação. Por exemplo, um débito deve vir de uma conta do tipo
user_wallet. Use Rotas Contábeis (o recursotransactionRoutena API) para definir padrões completos de transação que correspondam à sua lógica contábil.
Plugins
Plugins estendem o Midaz com integração e orquestração de processos. Eles fornecem abstrações para que você possa se concentrar no seu modelo de negócios em vez de lógica do sistema fora do seu domínio. As perguntas a seguir abordam como os plugins funcionam, como você faz o deployment deles e as opções disponíveis.
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: A Lerian desenvolve e integra esses plugins ao ledger do Midaz. A Lerian dá suporte completo a eles.
- Plugins do Marketplace: Os parceiros da Lerian criam esses plugins para nichos específicos de mercado. A Lerian ajuda a integrá-los ao Midaz. Os parceiros os oferecem e dão suporte diretamente.
Fees Engine
Estas perguntas abordam o Fees Engine. O Fees Engine é uma capacidade licenciada do Midaz executada dentro do processo unificado do ledger.
Conceitos Gerais
O que é o Fees Engine?
O que é o Fees Engine?
- Pacotes de Taxas (
/v2/organizations/{organization_id}/ledgers/{ledger_id}/packages): define as regras de cobrança por transação (taxa fixa, percentual, ou o maior entre os dois). - Billing Packages (
/v2/organizations/{organization_id}/ledgers/{ledger_id}/billing-packages): define cobranças periódicas por volume de transações ou por manutenção de contas. - Cálculo e estimativa: o Ledger avalia as taxas durante o fluxo da transação. Use
POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/estimatespara uma prévia específica de um pacote ePOST /v2/organizations/{organization_id}/ledgers/{ledger_id}/billing/calculatepara o faturamento periódico. O Midaz v4 não tem endpoints de nível superior/v2/feesnem/v2/estimates.
Como o Fees Engine se encaixa no ecossistema Lerian?
Como o Fees Engine se encaixa no ecossistema Lerian?
O que preciso enviar em toda requisição ao Fees Engine?
O que preciso enviar em toda requisição ao Fees Engine?
/v2. A plataforma resolve o contexto do tenant pela solicitação autenticada; envie o material de autorização exigido pela sua configuração do Access Manager.O Fees Engine armazena dados em qual banco?
O Fees Engine armazena dados em qual banco?
deletedAt. Um registro deletado não aparece nas listagens, mas você ainda pode auditá-lo.Qual versão do Midaz fornece o módulo integrado de Fees?
Qual versão do Midaz fornece o módulo integrado de Fees?
/v2. Releases standalone anteriores do plugin-fees seguem sua própria matriz de compatibilidade legada e não representam o modelo de implantação da v4.Pacotes de Taxas
O que é um Pacote de Taxas?
O que é um Pacote de Taxas?
Package) é um conjunto de regras de cobrança sob um feeGroupLabel. Cada pacote se vincula a uma Organização + Ledger e, opcionalmente, a um Segment. Um pacote pode conter várias taxas (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 /v2/organizations/{organization_id}/ledgers/{ledger_id}/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 como false quando você cria ou atualiza o pacote. O Fees Engine ignora um pacote desativado durante o cálculo de taxas, mesmo quando o contexto da transação corresponde ao seu escopo.Como funciona o escopo de um pacote (minimumAmount / maximumAmount)?
Como funciona o escopo de um pacote (minimumAmount / maximumAmount)?
[minimumAmount, maximumAmount]. Se o valor da transação ficar fora desse intervalo, o Fees Engine ignora o pacote.Exemplo: Um pacote com minimumAmount: 100 e maximumAmount: 5000 cobra taxas apenas em transações entre R 5.000.maximumAmount, 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. O Fees Engine então considera o pacote apenas para transações com aquela rota, como "PIX", "TED" ou "BOLETO".O que são waivedAccounts?
O que são waivedAccounts?
waivedAccounts, o Fees Engine não aplica as taxas do pacote a ela.Os endpoints de listagem têm paginação?
Os endpoints de listagem têm paginação?
GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/packages, GET /v2/organizations/{organization_id}/ledgers/{ledger_id}/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 o Fees Engine calcula a taxa. Veja Modelos de Cálculo para detalhes completos. Há três opções: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 que combinam flat e percentage. O Fees Engine calcula ambos e aplica o maior resultado.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 Fees Engine avalia todos e aplica o maior. Observe que 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 o Fees Engine calcula a taxa:originalAmount: o valor original da transação, antes de qualquer taxa.afterFeesAmount: o valor da transação após a aplicação das taxas de maior prioridade.
priority: 1 é executada primeiro, por isso 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, o Fees Engine deduz a taxa do valor que o remetente envia. O destinatário recebe o valor descontado, e o remetente paga a mais para cobrir a cobrança.Quando false, o Fees Engine cobra a taxa separadamente. O remetente envia o valor cheio, e o Fees Engine debita a taxa à 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. O Fees Engine executa primeiro os valores menores.priority: 1→ executada primeiro (obrigatoriamente usaoriginalAmount)priority: 2→ executada depois, podendo usarafterFeesAmount
O que é creditAccount?
O que é creditAccount?
creditAccount diferente. Isso ajuda quando diferentes taxas pertencem a 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 o Fees Engine não cobra as primeiras 100 transações do período.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 de taxas e billing
Como as taxas de transação são calculadas no Midaz v4?
Como as taxas de transação são calculadas no Midaz v4?
/v2/fees nem /v2/estimates; o endpoint com escopo de ledger POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/estimates continua disponível para a prévia específica de um pacote.Quais endpoints v4 configuram o Fees?
Quais endpoints v4 configuram o Fees?
/v2/organizations/{organization_id}/ledgers/{ledger_id}/packages e pacotes de billing periódicos em /v2/organizations/{organization_id}/ledgers/{ledger_id}/billing-packages.Como calculo o billing periódico?
Como calculo o billing periódico?
POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/billing/calculate depois de configurar os pacotes de billing. Ele processa as regras configuradas para esse Ledger.Erros Comuns
"Priority 1 must use originalAmount" — o que significa?
"Priority 1 must use originalAmount" — o que significa?
priority: 1 deve ter referenceAmount: "originalAmount". Ela é a primeira taxa a ser executada, por isso 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 exceder o minimumAmount do pacote. Isso evita uma taxa maior que o valor mínimo da 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, o tipo é percentage e o valor está acima de 100. Uma taxa percentual dedutível de 100% zeraria o valor da transação. Valores acima de 100 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 mantém um preço nas transações acima da maior faixa definida."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 os remove do banco. A API não expõe endpoints de restauração por padrão. Consulte a equipe Lerian caso precise recuperar um registro deletado. Para a lista completa de códigos de erro, veja a referência de Códigos de Erro.
