O Roteamento de Transações é o sistema de validação em duas camadas do Midaz para transações financeiras, construído a partir de Transaction Routes (que definem o padrão completo da transação) e Operation Routes (que validam cada operação individual dentro desse padrão). Juntos, eles garantem que toda transação seja estruturalmente correta e esteja em conformidade com suas regras de negócio.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.
- Transaction Routes definem a estrutura completa de uma transação — a sequência necessária de operações e como elas se encaixam para formar um evento financeiro válido.
- Operation Routes definem as regras para cada operação individual (ou “perna”) dessa transação, incluindo o tipo de conta esperado ou conta específica, a anotação contábil e se é um débito ou crédito.
Você define os padrões de validação por meio de Operation Routes e Transaction Routes. O Midaz garante que suas transações estejam em conformidade com essas regras antes do processamento.
Para que serve o Roteamento de Transações?
O Roteamento de Transações oferece controle estruturado sobre suas operações financeiras, separando a lógica de transações do código de negócio. Em vez de codificar regras de validação diretamente na sua aplicação, você configura padrões reutilizáveis que garantem que cada movimentação financeira siga os requisitos da sua organização. Essas entidades são dedicadas a vincular Transactions e Operations do ledger do Midaz a abstrações de nível superior que facilitam a integração com plugins especializados e sistemas externos, especialmente para abstrações de contabilidade e tesouraria. As anotações e classificações estruturadas criam um vocabulário padronizado que outros componentes podem entender e aproveitar. Essa abordagem oferece:
- Consistência: Todas as transações seguem estruturas predefinidas, independentemente de onde se originam.
- Flexibilidade: Adapte o design do seu ledger para atender às necessidades do seu negócio sem alterações de código.
- Integridade: A validação automática impede que transações malformadas afetem seu ledger.
- Manutenibilidade: A configuração centralizada facilita a atualização das regras financeiras à medida que seu negócio evolui.
- Interoperabilidade: Campos com semântica de negócio permitem integração transparente com plugins contábeis e sistemas financeiros externos.
Trabalhando com Roteamento de Transações
Para usar o Roteamento de Transações, você precisa completar a configuração inicial seguida pela execução contínua de transações. Aqui está o processo passo a passo:
Configuração Inicial
1. Configurar o Ledger para validação de transaction route
Para ativar a validação de transaction route em um Ledger específico, habilite as configurações de validação através da API de Configurações do Ledger. Isso controla se as transações nesse Ledger devem estar em conformidade com suas rotas configuradas.validateRoutes: Quando habilitada, cada transação deve referenciar uma rota de transação válida.validateAccountType: Quando habilitada, os tipos de conta são validados contra as regras das rotas de operação.
2. Criar Operation Routes
Crie Operation Routes que definem regras de validação e comportamento para componentes individuais de transação. Campos principais:- title: Rótulo breve que identifica a operation route.
- description: Explicação detalhada opcional.
- metadata: Pares chave-valor para contexto de negócio e categorização personalizada.
-
operationType: A direção contábil desta rota —
source,destinationoubidirectional.source— Identifica contas de onde os fundos se originam (lado do débito). Representa a Origem.destination— Identifica contas para onde os fundos são enviados (lado do crédito). Representa o Destino.bidirectional— Aplica-se a ambos os lados da transação, atuando como Origem e Destino (Bidirecional).
-
account: Regras de validação opcionais especificando o tipo de conta necessário ou conta específica.
- ruleType: Tipo de regra de validação de conta (
account_type,alias). - validIf: O valor esperado que deve corresponder para que a validação seja aprovada.
- ruleType: Tipo de regra de validação de conta (
- accountingEntries: Lançamentos Contábeis opcionais para cada tipo de ação. Veja Lançamentos Contábeis abaixo.
- Conta Específica
- Tipo de Conta
accountingEntries mapeia cada etapa para os códigos contábeis de partida dobrada corretos automaticamente.
Configure os lançamentos contábeis para cada tipo de ação:
direct, hold, commit, cancel, revert) é mapeado para um par contábil de partida dobrada — permitindo que seu ledger anote automaticamente as operações com os códigos contábeis corretos com base na etapa do ciclo de vida da transação.
O campo
operationType agora também suporta bidirectional, que permite que a rota opere em ambas as direções — útil para rotas que lidam tanto com envio quanto recebimento, ou para operações que podem precisar ser revertidas.Matriz de validação de accounting entries
Nem toda combinação deoperationType e ação é válida. O Midaz aplica uma matriz de validação rigorosa quando você cria ou atualiza uma Operation Route — se as regras não forem atendidas, a requisição é rejeitada antes de ser persistida.
Entender essa matriz é fundamental para integradores: enviar uma combinação inválida retorna o erro 0166 (campo obrigatório) ou 0162/0165 (cenário não permitido para a direção).
source
| Ação | Débito | Crédito | Notas |
|---|---|---|---|
direct | Obrigatório | Opcional | Transação padrão de etapa única na origem |
hold | Obrigatório | Obrigatório | Reserva fundos — move available → on_hold |
commit | Obrigatório | Opcional | Finaliza uma transação em duas fases |
cancel | Obrigatório | Obrigatório | Libera os fundos reservados — move on_hold → available |
revert | — | — | Não permitido (erro 0165). Use bidirectional no lugar |
| Ação | Débito | Crédito | Notas |
|---|---|---|---|
direct | Opcional | Obrigatório | Transação padrão de etapa única no destino |
hold | — | — | Não permitido (erro 0162) |
commit | Opcional | Obrigatório | Finaliza uma transação em duas fases |
cancel | — | — | Não permitido (erro 0162) |
revert | — | — | Não permitido (erro 0165). Use bidirectional no lugar |
| Ação | Débito | Crédito | Notas |
|---|---|---|---|
direct | Obrigatório | Obrigatório | Ambos os lados da partida dobrada |
hold | Obrigatório | Obrigatório | Ambos os lados da partida dobrada |
commit | Obrigatório | Obrigatório | Ambos os lados da partida dobrada |
cancel | Obrigatório | Obrigatório | Ambos os lados da partida dobrada |
revert | Obrigatório | Obrigatório | Única direção que suporta revert |
Uma entry sem
debit nem credit é sempre rejeitada, independentemente do tipo de operação ou ação.- Atomicidade do grupo de reserva: Se você define
hold, também deve definircommitecancel(e vice-versa). Essas três ações formam um grupo atômico — você não pode configurar uma sem as outras. directé obrigatório: Se qualquer outra ação (hold,commit,cancel,revert) for definida,directtambém deve estar presente. Serve como a entry base para a operation route.
3. Construir Transaction Routes
Complete sua configuração combinando Operation Routes em Transaction Routes. Elas definem seus padrões completos de transação, mapeando como diferentes operações funcionam juntas para formar eventos financeiros balanceados que correspondem aos seus processos de negócio.4. Configurar Lançamentos Contábeis (Actions)
Cada Rota de Operação pode incluir Lançamentos Contábeis — rubricas estruturadas que definem como os lançamentos de débito e crédito são registrados para cada tipo de evento transacional. Quando um Ledger está configurado para validar rotas, apenas eventos com lançamentos registrados são permitidos. Isso garante consistência nos seus relatórios contábeis.Tipos de ação
Cada ação representa um evento transacional. Você configura Lançamentos Contábeis por ação em cada Rota de Operação:| Ação | Identificador | Descrição |
|---|---|---|
| Transação Direta | direct | Transação padrão de uma etapa entre duas contas, sem estágios intermediários. |
| Reserva de Valor | hold | Primeiro passo de uma Transação em Duas Etapas: move o valor do saldo available para on_hold na conta de origem. |
| Confirmação da Reserva | commit | Confirma uma Transação em Duas Etapas pendente, transferindo o valor on_hold da conta de origem para o saldo available na conta de destino. |
| Cancelamento da Reserva | cancel | Cancela uma Transação em Duas Etapas pendente, retornando o valor on_hold para o saldo available na conta de origem. |
| Estorno | revert | Cria uma transação reversa que desfaz a operação original. |
Estrutura do Lançamento Contábil
Cada lançamento de ação contém uma rubrica de Débito e/ou Crédito, dependendo do tipo de operação:- Rotas de Origem (
source) requerem a rubrica de Débito. - Rotas de Destino (
destination) requerem a rubrica de Crédito. - Rotas Bidirecionais (
bidirectional) requerem ambas as rubricas de Débito e Crédito.
- code — O Código da Conta no plano de contas (ex.:
1.1.1.001). - description — Uma descrição legível do lançamento (ex.:
Customer checking — outbound).
Comportamento de validação
Quando a validação de rotas está habilitada para um Ledger e Lançamentos Contábeis estão configurados:- Apenas eventos com lançamentos registrados são permitidos. Se um cliente registrar apenas a ação
directem uma rota, qualquer tentativa de executar uma Transação em Duas Etapas (que requerhold) será automaticamente rejeitada. - Operações bem-sucedidas terão os detalhes da rubrica registrados nos campos
routeCodeerouteDescriptionem cada operação.
Exemplo prático: rejeição por ação ausente
Exemplo prático: rejeição por ação ausente
Cenário: Um cliente cria uma Rota de Operação com apenas a ação
direct configurada.Se esse cliente tentar uma Transação em Duas Etapas (enviando pending: true), a transação é automaticamente rejeitada porque não há lançamento hold registrado.Isso garante que seus relatórios contábeis permaneçam consistentes — todas as etapas de uma operação devem ser mapeadas antes de poderem ser executadas.Operações Contínuas
5. Executar Transações Validadas
Com sua configuração de roteamento pronta, agora você pode submeter transações com confiança incluindo o ID da Transaction Route previamente criada na sua requisição de transação. O Midaz validará automaticamente a transação contra seus padrões de roteamento definidos, garantindo consistência e integridade em todas as operações financeiras. Para os exemplos de Transaction Route e Operation Routes configurados anteriormente, o sistema compõe a seguinte estrutura de validação:@user/wallet_123 corresponde à regra de tipo de conta user_wallet, e @external/BRL corresponde ao requisito exato de alias, garantindo que a transação siga seus padrões de roteamento configurados.
Campos de rota nas operações
Quando a validação de rotas está habilitada e Lançamentos Contábeis estão configurados, toda operação processada com sucesso incluirá dois campos adicionais preenchidos a partir da rubrica correspondente:- routeCode — O Código da Conta no plano de contas da rubrica do Lançamento Contábil correspondente.
- routeDescription — A descrição da rubrica do Lançamento Contábil correspondente.
Gerenciando Operation e Transaction Routes
Para configurar suas Operation Routes, use os seguintes endpoints:
- Criar uma Operation Route — Defina uma nova regra contábil para suas operações.
- Listar Operation Routes — Visualize todas as Operation Routes configuradas.
- Recuperar uma Operation Route — Obtenha informações detalhadas sobre uma Operation Route específica.
- Atualizar uma Operation Route — Modifique regras contábeis existentes.
- Excluir uma Operation Route — Remova uma Operation Route desatualizada ou não utilizada.
- Criar uma Transaction Route — Defina nova lógica de roteamento para conectar transações a operações contábeis.
- Listar Transaction Routes — Visualize todas as Transaction Routes configuradas.
- Recuperar uma Transaction Route — Obtenha detalhes de uma Transaction Route específica.
- Atualizar uma Transaction Route — Modifique critérios de roteamento existentes.
- Excluir uma Transaction Route — Remova rotas que não são mais aplicáveis.

