APIs da Lerian
Esta seção responde a perguntas comuns sobre as APIs da Lerian.
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 deploy. A API aceita páginas maiores depois que você reinicia a aplicação.Importante: uma página maior pode deixar o tempo de resposta mais lento, principalmente com bases de dados grandes. Teste em staging antes de mudar a produção.Multi-tenancy e SaaS
Estas perguntas cobrem isolamento de dados, escopo de tenant e como funciona a multi-tenancy nos deploys da Lerian.
Meus dados ficam isolados dos de outros clientes no SaaS?
Meus dados ficam isolados dos de outros clientes no SaaS?
Preciso enviar um ID de tenant nas minhas requisições de API?
Preciso enviar um ID de tenant nas minhas requisições de API?
Posso ter múltiplas Organizações em um único tenant?
Posso ter múltiplas Organizações em um único tenant?
A API é diferente entre os deploys SaaS e self-hosted?
A API é diferente entre os deploys SaaS e self-hosted?
Midaz
Estas perguntas cobrem Organizações, Ledgers, Contas, Transações e outros temas do Midaz.
Organizações
Organizações diferentes se comunicam entre si?
Organizações diferentes se comunicam entre si?
Posso usar uma única licença em várias Organizações?
Posso usar uma única licença em várias Organizações?
Uma Organização pode ter vários Plugins?
Uma Organização pode ter vários Plugins?
Uma Organização pode ter vários Ledgers?
Uma Organização pode ter vários Ledgers?
Posso criar transações entre uma Organização Pai e uma Organização Filha?
Posso criar transações entre uma Organização Pai e uma Organização Filha?
Ledgers
Ledgers diferentes se comunicam entre si?
Ledgers diferentes 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?
Ativos
Um Ativo pode ser vinculado a várias Contas?
Um Ativo pode ser vinculado a várias Contas?
Quais tipos de Ativos posso usar?
Quais tipos de Ativos posso usar?
- currency: moedas fiduciárias tradicionais, como BRL, USD e EUR.
- fiat: um tipo alternativo para moedas fiduciárias; assim como
currency, o código do Ativo deve seguir a ISO 4217. - crypto: ativos digitais, como BTC, ETH e outras criptomoedas.
- commodities: bens tangíveis, como ouro, soja e petróleo.
- others: Ativos personalizados, incluindo pontos de fidelidade e títulos tokenizados.
Portfólios
Como funciona um Portfólio?
Como funciona um Portfólio?
segment_id tem dois valores correspondentes de account_id. Você cria um Portfólio para esse CPF para vincular as duas contas em uma única estrutura.Contas
Uma Conta pode ser associada a vários Ativos?
Uma Conta pode ser associada a vários Ativos?
O que é uma Conta Externa?
O que é uma Conta Externa?
Como posso criar uma Conta Externa?
Como posso criar uma Conta Externa?
Uma Conta pode ser vinculada a vários Segmentos?
Uma Conta pode ser vinculada a vários Segmentos?
account_id) vincula a apenas um Segmento (segment_id).Existe um limite para quantas Contas posso criar no Midaz?
Existe um limite para quantas Contas posso criar no Midaz?
Qual é o processo para adicionar fundos a uma conta ou fazer um cash-in usando dinheiro vindo de fora do ambiente do Ledger (Midaz)?
Qual é o processo para adicionar fundos a uma conta ou fazer um cash-in usando dinheiro vindo de fora do ambiente do Ledger (Midaz)?
- Quando você cria um Ativo (por exemplo, BRL) no Ledger do Midaz, o Midaz também cria uma Conta Externa para esse Ativo.
- Essa Conta Externa 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 Reservas Bancárias ou uma conta bancária ou de pagamento tradicional.
- Para depositar fundos de fora do Ledger do Midaz em uma conta de usuário, siga estes passos:
- Crie uma transação com a Conta Externa como origem e as contas de destino como destino.
- O Midaz debita a Conta Externa pelo valor (que fica negativo) e credita as contas de destino pelos valores informados no payload da transação.
Transações
Qual é a estrutura mínima de uma Transação?
Qual é a estrutura mínima de uma Transação?
- Operação 1: debitar R$ 100 da Conta A.
- Operação 2: creditar R$ 100 na Conta B.
É possível gerar um comprovante de transferência em PDF com os detalhes de uma transação concluída?
É possível gerar um comprovante de transferência em PDF com os detalhes de uma transação concluída?
- Pelas APIs: recupere os dados da transação pelas APIs e gere um comprovante visual no formato que preferir.
- Com o Reporter: extraia os dados da transação e crie comprovantes visuais personalizados.
- Pelo Console: acesse os dados da transação diretamente no Console da Lerian.
Entidades
Como posso criar uma Entidade?
Como posso criar uma Entidade?
entity_id) aceita IDs externos. O Midaz não aplica nenhuma validação sobre esse 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 entre endpoints diferentes?
Posso reutilizar uma chave de idempotência entre endpoints diferentes?
O que acontece se eu mudar o TTL em uma nova tentativa?
O que acontece se eu mudar o TTL em uma nova tentativa?
A resposta reenviada sempre será idêntica?
A resposta reenviada sempre será 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?
- Tipos de Conta: crie as categorias lógicas do seu plano de contas, como Ativos, Passivos, Receitas e Despesas. Atribua-as às contas do seu ledger. Quando você habilita o recurso Tipos de Conta, o campo
typena API de Contas se torna obrigatório e deve corresponder a um valor registrado. - Rotas Contábeis: use Rotas de Operação 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 alinhados à sua lógica contábil.
Plugins
Os Plugins estendem o Midaz com integração e orquestração de processos. Eles fornecem abstrações para que você possa focar no seu modelo de negócio, e não na lógica de sistemas fora do seu domínio. As perguntas abaixo cobrem como os plugins funcionam, como você faz o deploy deles e quais opções estão disponíveis.
O que são os Plugins?
O que são os 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 plugin a Lerian oferece?
Quais opções de plugin a Lerian oferece?
- Plugins Nativos: a Lerian desenvolve e integra esses plugins ao ledger do Midaz. A Lerian oferece suporte completo a eles.
- Plugins de Marketplace: os parceiros da Lerian criam esses plugins para nichos de mercado específicos. A Lerian ajuda a integrá-los ao Midaz. Os parceiros os fornecem e dão suporte diretamente.
Fees Engine
Estas perguntas cobrem o Fees Engine. O Fees Engine é um recurso licenciado do Midaz que roda dentro do processo unificado do ledger.
Conceitos Gerais
O que é o Fees Engine?
O que é o Fees Engine?
- Fee Packages (
/v2/organizations/{organization_id}/ledgers/{ledger_id}/packages): define regras de cobrança por transação (tarifa fixa, percentual ou o que for maior). - Billing Packages (
/v2/organizations/{organization_id}/ledgers/{ledger_id}/billing-packages): define cobranças periódicas com base no volume de transações ou na manutenção de contas. - Cálculo e estimativa: o Ledger avalia as tarifas 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 cobrança periódica. O Midaz v4 não tem um endpoint de nível superior/v2/feesou/v2/estimates.
Como o Fees Engine se encaixa no ecossistema da Lerian?
Como o Fees Engine se encaixa no ecossistema da 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 a partir da requisição autenticada; envie o material de autorização exigido pela configuração do seu Access Manager.Qual banco de dados o Fees Engine usa para armazenamento?
Qual banco de dados o Fees Engine usa para armazenamento?
deletedAt. Um registro excluído não aparece nas listagens, mas você ainda pode auditá-lo.Qual versão do Midaz oferece o módulo Fees integrado?
Qual versão do Midaz oferece o módulo Fees integrado?
/v2. As versões standalone anteriores do plugin-fees seguem sua própria matriz de compatibilidade legada e não fazem parte do modelo de deploy do v4.Fee Packages
O que é um Fee Package?
O que é um Fee Package?
Package) é um conjunto de regras de cobrança sob um mesmo feeGroupLabel. Cada package vincula a uma Organização + Ledger e, opcionalmente, a um Segmento. Um package pode conter várias tarifas (objetos Fee), cada uma com sua própria lógica de cálculo. Saiba mais sobre Fee Packages.Como crio um Fee Package?
Como crio um Fee Package?
POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/packages com o corpo a seguir. Veja a referência da API Create Package para todos os detalhes.Um package pode ser desativado temporariamente?
Um package pode ser desativado temporariamente?
enable como false ao criar ou atualizar o package. O Fees Engine ignora um package desativado durante o cálculo de tarifas, mesmo quando o contexto da transação corresponde ao seu escopo.Como funciona o escopo do package (minimumAmount / maximumAmount)?
Como funciona o escopo do package (minimumAmount / maximumAmount)?
[minimumAmount, maximumAmount]. Se o valor da transação estiver fora desse intervalo, o Fees Engine ignora o package.Exemplo: um package com minimumAmount: 100 e maximumAmount: 5000 cobra tarifas apenas em transações entre 100 e 5.000.maximumAmount, o package pode se aplicar sem limite superior. Confira as regras de validação da sua versão.Posso filtrar um package por rota de transação?
Posso filtrar um package por rota de transação?
transactionRoute no package. O Fees Engine passa a considerar o package apenas para transações com essa rota, como "PIX", "TED" ou "BOLETO".O que são waivedAccounts?
O que são waivedAccounts?
waivedAccounts, o Fees Engine não aplica as tarifas do package 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) aceitam os parâmetros de consulta limit e page para paginação.Modelos de Cálculo
Quais modelos de cálculo estão disponíveis?
Quais modelos de cálculo estão disponíveis?
applicationRule dentro de calculationModel define como o Fees Engine calcula a tarifa. Veja Modelos de Cálculo para todos os detalhes. Há três opções:Como configuro uma tarifa fixa (flatFee)?
Como configuro uma tarifa fixa (flatFee)?
flat:Como configuro uma tarifa percentual (percentual)?
Como configuro uma tarifa percentual (percentual)?
percentage:Como funciona o maxBetweenTypes?
Como funciona o maxBetweenTypes?
maxBetweenTypes exige 2 ou mais cálculos que combinem flat e percentage. O Fees Engine calcula os dois e aplica o maior resultado.Exemplo: tarifa mínima de 3,00 ou 1% do valor, o que for maior:Posso combinar vários percentuais no maxBetweenTypes?
Posso combinar vários percentuais no maxBetweenTypes?
flat e percentage. O Fees Engine avalia todos e aplica o maior. Observe que flatFee e 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 tarifa:originalAmount: o valor original da transação, antes de qualquer tarifa.afterFeesAmount: o valor da transação depois que as tarifas de prioridade mais alta se aplicam.
priority: 1 roda primeiro, então ela deve usar originalAmount. Não existem tarifas 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 tarifa do valor que o remetente envia. O destinatário recebe o valor com desconto, e o remetente paga a mais para cobrir a cobrança.Quando false, o Fees Engine cobra a tarifa separadamente. O remetente envia o valor total, e o Fees Engine debita a tarifa à parte.Restrições:isDeductibleFrom: trueexigereferenceAmount: originalAmount- Se o tipo for
percentage: o valor não pode passar de 100 - Se o tipo for
flat: o valor não pode passar dominimumAmountdo package
Como funciona o campo priority?
Como funciona o campo priority?
priority define a ordem de execução das tarifas dentro de um package. O Fees Engine executa os valores menores primeiro.priority: 1→ executada primeiro (deve usaroriginalAmount)priority: 2→ executada depois, pode usarafterFeesAmount
O que é creditAccount?
O que é creditAccount?
creditAccount diferente. Isso ajuda quando tarifas diferentes pertencem a centros de custo diferentes.O que são routeFrom e routeTo dentro de uma tarifa?
O que são routeFrom e routeTo dentro de uma tarifa?
Billing Packages
O que são Billing Packages?
O que são Billing Packages?
volume: cobra com base no número de transações em um período, com preços em camadas.maintenance: cobra uma tarifa fixa por conta em um escopo definido.
Quando devo usar o billing por volume?
Quando devo usar o billing por volume?
maxQuantity). Não pode haver lacunas nem sobreposições entre as faixas.Quando devo usar o billing de manutenção?
Quando devo usar o billing de manutenção?
segmentId, portfolioId ou aliases) e o valor da tarifa.accountTarget deve ter exatamente um dos três campos: segmentId, portfolioId ou aliases (máximo de 100 aliases).Como funcionam as faixas (tiers) no billing por volume?
Como funcionam as faixas (tiers) no billing por volume?
- Devem ser contíguas: sem lacunas entre as faixas (
minQuantityda próxima =maxQuantityda anterior + 1). - Não podem se sobrepor.
- A última faixa deve ser sem limite (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 por volume?
O que é countMode no billing por volume?
perRoute: conta as transações por rota (por exemplo, total de Pix aprovados).perAccount: conta as transações por conta individual.
Cálculo e cobrança de tarifas
Como as tarifas de transação são calculadas no Midaz v4?
Como as tarifas de transação são calculadas no Midaz v4?
/v2/fees ou /v2/estimates. O endpoint POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/estimates, escopado ao ledger, continua disponível para uma prévia específica de um package.Quais endpoints do v4 configuram tarifas?
Quais endpoints do v4 configuram tarifas?
/v2/organizations/{organization_id}/ledgers/{ledger_id}/packages e os Billing Packages 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 Billing Packages. Isso processa as regras configuradas para esse Ledger.Erros Comuns
O que significa "Priority 1 must use originalAmount"?
O que significa "Priority 1 must use originalAmount"?
priority: 1 deve ter referenceAmount: "originalAmount". Ela é a primeira tarifa a rodar, então não existem tarifas anteriores para basear o cálculo.Correção:Como corrijo "isDeductibleFrom requires originalAmount"?
Como corrijo "isDeductibleFrom requires originalAmount"?
isDeductibleFrom: true apenas podem usar referenceAmount: "originalAmount". Atualize o campo:Por que recebo "Flat fee value cannot exceed minimumAmount"?
Por que recebo "Flat fee value cannot exceed minimumAmount"?
isDeductibleFrom: true e o tipo é flat, o valor da tarifa não pode passar do minimumAmount do package. Isso evita uma tarifa maior do que o valor mínimo da transação.Exemplo: se minimumAmount: 100, a tarifa fixa não pode passar de 100.Quando ocorre "Percentage value cannot exceed 100"?
Quando ocorre "Percentage value cannot exceed 100"?
isDeductibleFrom: true, o tipo é percentage e o valor é maior que 100. Uma tarifa percentual dedutível de 100% zeraria a transação. Valores acima de 100 são inválidos.Como corrijo "Tiers must be contiguous"?
Como corrijo "Tiers must be contiguous"?
minQuantity de cada faixa é exatamente maxQuantity + 1 da faixa anterior.O que significa "Last tier must be unbounded"?
O que significa "Last tier must be unbounded"?
maxQuantity). Isso mantém um preço para transações acima da faixa mais alta definida."accountTarget must have exactly one of: segmentId, portfolioId, aliases"
"accountTarget must have exactly one of: segmentId, portfolioId, aliases"
accountTarget aceita apenas um dos três valores. Não combine campos:Existe um limite de aliases em accountTarget?
Existe um limite de aliases em accountTarget?
aliases aceita no máximo 100 aliases por Billing Package de manutenção."flatFee requires exactly 1 calculation of type flat"
"flatFee requires exactly 1 calculation of type flat"
applicationRule: "flatFee" aceita exatamente 1 cálculo, e ele 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, porque precisa de valores para comparar. Informe pelo menos um flat e um percentage.O que devo verificar quando o package não é aplicado à transação?
O que devo verificar quando o package não é aplicado à transação?
enable: o package está ativo (enable: true)?ledgerId: o package está vinculado ao ledger correto?minimumAmount/maximumAmount: o valor da transação está dentro do intervalo?transactionRoute: se o package temtransactionRoute, a transação usa a mesma rota?segmentId: se o package é escopado a um segmento, a conta pertence a ele?waivedAccounts: a conta está listada como isenta?
Um registro excluído pode ser recuperado?
Um registro excluído pode ser recuperado?
deletedAt e não os remove do banco de dados. A API não expõe endpoints de restauração por padrão. Entre em contato com a equipe da Lerian se precisar recuperar um registro excluído. Para a lista completa de códigos de erro, veja a referência de Códigos de Erro.
