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 maioria das listagens 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.Tenants na Lerian Cloud
Estas perguntas cobrem isolamento de dados e escopo de tenant na Lerian Cloud.
Meus dados ficam isolados dos de outras instituições no SaaS?
Meus dados ficam isolados dos de outras instituições 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?
settings.crossLedger.enabled como true, e nenhum pode ter accounting.validateRoutes definido como true. Você também pode orquestrar a transferência com estes passos:Ledgers
Ledgers diferentes se comunicam entre si?
Ledgers diferentes se comunicam entre si?
settings.crossLedger.enabled como true.Como posso fazer transações entre Ledgers?
Como posso fazer transações entre Ledgers?
POST /v2/transactions/direct ou POST /v2/transactions/hold com pernas em cada Ledger. Todo Ledger participante deve definir settings.crossLedger.enabled como true. O Midaz cria uma transação balanceada por Ledger. Você também pode mover o valor por meio de uma Conta Externa em dois passos: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.
- commodity: 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?
segmentId tem duas contas correspondentes. 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?
type como external com um alias.Uma Conta pode ser vinculada a vários Segmentos?
Uma Conta pode ser vinculada a vários Segmentos?
segmentId).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 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?
entityId aceita IDs externos de até 256 caracteres. O Midaz não valida o formato deles. Você pode usar os IDs que já existem no seu banco de dados e integrá-los ao seu sistema.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 a validação de tipo de conta (
validateAccountType), o campotypena API de Contas 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.
validateRoutes). Você não grava as regras diretamente no código da sua lógica de negócio.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?
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. - Planos de tarifas (
/v2/organizations/{organization_id}/ledgers/{ledger_id}/account-plans): define tarifas que você atribui a contas, com uma cota gratuita por mês calendário. Veja Planos de tarifas. - 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.
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.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.Posso filtrar um package por rota de transação?
Posso filtrar um package por rota de transação?
transactionRoute com o ID de uma rota de transação. O Fees Engine passa a considerar o package apenas para transações que carregam esse routeId.O que são waivedAccounts?
O que são waivedAccounts?
waivedAccounts, o Fees Engine não aplica as tarifas do package. Uma conta isenta não paga tarifa do package.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. O Fees Engine calcula cada um 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. 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.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?
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.
- Quando há várias faixas, a última deve omitir
maxQuantity. Uma faixa única com limite superior é aceita. Uma contagem faturável positiva fora dessa faixa faz a chamada inteira de cálculo falhar.
O que é freeQuota?
O que é freeQuota?
freeQuota: 100 significa que o Fees Engine não cobra as primeiras 100 transações do período.Uma tarifa de plano de tarifas tem o próprio freeQuota, contado por conta e mês calendário. Veja Cota gratuita.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?
POST /v2/organizations/{organization_id}/ledgers/{ledger_id}/estimates 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. Configure os planos de tarifas em /v2/organizations/{organization_id}/ledgers/{ledger_id}/account-plans e atribua um a uma conta em /v2/organizations/{organization_id}/ledgers/{ledger_id}/accounts/{account_id}/account-plan.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 o erro 0188 "originalAmount is required when priority is one"?
O que significa o erro 0188 "originalAmount is required when priority is one"?
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 o erro 0205 "originalAmount is required when isDeductibleFrom is true"?
Como corrijo o erro 0205 "originalAmount is required when isDeductibleFrom is true"?
isDeductibleFrom: true apenas podem usar referenceAmount: "originalAmount". Atualize o campo:Por que recebo o erro 0208 "calculation value flat invalid"?
Por que recebo o erro 0208 "calculation value flat invalid"?
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 o erro 0207 "calculation value percentage invalid"?
Quando ocorre o erro 0207 "calculation value percentage invalid"?
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 o erro 0218 "tiers have a gap"?
Como corrijo o erro 0218 "tiers have a gap"?
minQuantity de cada faixa é exatamente maxQuantity + 1 da faixa anterior.Erro 0229: "Exactly one of segmentId, portfolioId, or aliases must be provided"
Erro 0229: "Exactly one of segmentId, portfolioId, or aliases must be provided"
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.Erros 0189 e 0191: flatFee precisa de exatamente 1 cálculo do tipo flat
Erros 0189 e 0191: flatFee precisa de exatamente 1 cálculo do tipo flat
applicationRule: "flatFee" aceita exatamente 1 cálculo, e ele deve ser do tipo flat. Não use percentage com flatFee.Erros 0189 e 0190: percentual precisa de exatamente 1 cálculo do tipo percentage
Erros 0189 e 0190: percentual precisa de exatamente 1 cálculo do tipo percentage
flatFee, o applicationRule: "percentual" aceita exatamente 1 cálculo do tipo percentage.Erro 0201: "applicationRule maxBetweenTypes must have more than 1 calculation"
Erro 0201: "applicationRule maxBetweenTypes must have more than 1 calculation"
maxBetweenTypes exige pelo menos 2 cálculos, porque precisa de valores para comparar.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)?- Ledger: você criou o package no ledger da transação?
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 tem endpoint de restauração. Entre em contato com a equipe da Lerian se precisar recuperar um registro excluído.
