Pular para o conteúdo principal
Os Lançamentos Contábeis (também conhecidos como Rubricas) definem o mapeamento entre uma ação de transação e os lançamentos no ledger que ela gera. São eles que o motor usa para resolver quais contas são debitadas e creditadas para cada ação, anotando automaticamente as operations com os códigos contábeis corretos de partidas dobradas em cada etapa do ciclo de vida da transação.

O que são Lançamentos Contábeis


Uma rubrica é um mapeamento que informa ao motor quais contas do ledger debitar e creditar para uma determinada ação de transação. Em vez de calcular as classificações contábeis manualmente para cada movimentação, você registra as rubricas uma única vez e deixa o Midaz resolvê-las automaticamente à medida que as transações são processadas. Cada rubrica carrega:
  • code — um identificador único (o código do plano de contas, ex.: 1.1.1.001).
  • description — um rótulo legível para o lançamento (ex.: Customer checking — outbound).
  • Um conjunto de mapeamentos de ação — um lançamento por tipo de ação, cada um com sua própria rubrica de débito e/ou crédito.
Quando uma transação é processada, o motor resolve a rubrica de cada operation e registra na operation o routeCode (e o routeDescription) resultante. Isso fornece uma trilha de auditoria completa, de transação → operation → rubrica, permitindo que as equipes rastreiem exatamente qual regra contábil foi aplicada a cada movimentação.
As rubricas são configuradas por ação em cada Operation Route. Rotas de origem (source) exigem a rubrica de débito, rotas de destino (destination) exigem a rubrica de crédito e rotas bidirecionais exigem ambas.

Os 5 tipos de ação


Cada ação representa um evento transacional distinto. Uma única rubrica pode mapear diferentes contas de débito/crédito para cada ação, de modo que cada etapa de uma operação caia no lançamento correto do ledger.
AçãoIdentificadorDescrição
DirectdirectDébito/crédito imediato de etapa única entre duas contas, sem estágios intermediários (ex.: uma taxa ou ajuste).
HoldholdReserva fundos criando uma movimentação pendente (move o valor de available para on_hold na conta de origem).
CommitcommitConfirma um valor previamente reservado, liberando o valor on_hold para a conta de destino.
CancelcancelCancela/reverte uma reserva, retornando o valor on_hold para o saldo available na conta de origem.
RevertrevertReverte uma transação direct concluída criando uma contratransação que desfaz a original.
Cada ação pode apontar para mapeamentos de conta de débito/crédito diferentes dentro da mesma rubrica. Mapeie apenas as ações que uma rota realmente usará — mas, se você habilitar a validação estrita (abaixo), garanta que toda ação que suas transações emitirem esteja coberta.

Configurando Lançamentos Contábeis


As rubricas são registradas via API como parte das suas Operation Routes — o bloco accountingEntries em uma rota define um lançamento por ação, cada um com sua rubrica de debit e/ou credit:
{
    "accountingEntries": {
        "direct": {
            "debit": {
                "code": "1.1.1.001",
                "description": "Customer checking — outbound"
            },
            "credit": {
                "code": "1.1.1.002",
                "description": "Customer checking — inbound"
            }
        },
        "hold": {
            "debit": {
                "code": "1.1.1.001",
                "description": "Customer checking — reserve"
            },
            "credit": {
                "code": "2.1.1.001",
                "description": "Pending settlement — hold"
            }
        }
    }
}
Você gerencia esses lançamentos por meio dos endpoints de Operation Route — veja Criar uma Operation Route e Atualizar uma Operation Route. Para o fluxo completo de configuração, consulte Roteamento de Transações.

Modos de validação


Como o Midaz reage quando nenhuma rubrica correspondente é encontrada depende das configurações contábeis do Ledger. Existem dois gates distintos:

Padrão (graceful)

Por padrão, se nenhuma rubrica estiver registrada para uma ação, a transação prossegue normalmente. Os campos routeCode e routeDescription simplesmente ficam vazios (nil) para aquela operation — nenhum erro é gerado.

Estrito (opt-in)

Defina accounting.validateRoutes como true nas Configurações do Ledger para exigir que todas as ações tenham uma rubrica registrada. Qualquer operation cuja ação e direção não tenha um mapeamento registrado é rejeitada com o erro 0117 ErrAccountingRouteNotFound.
{
  "accounting": {
    "validateRoutes": true
  }
}
Com validateRoutes habilitado, se uma rota tiver lançamentos contábeis configurados mas a transação submetida usar uma ação que não está registrada (por exemplo, uma Transação em Duas Etapas quando apenas direct está mapeado), a transação será negada com 0117 ErrAccountingRouteNotFound. Isso previne inconsistências nos seus relatórios contábeis ao garantir que todas as etapas de uma operação estejam mapeadas antes da execução.
Use o modo estrito em ledgers de produção, onde cada tipo de transação precisa ser contabilizado. O padrão graceful é conveniente enquanto você ainda está configurando rotas, mas em produção ele pode silenciosamente deixar movimentações sem classificação contábil.
Em ambos os modos, quando uma rubrica correspondente é encontrada, a operation é anotada com:
  • routeCode — o code da AccountingRubric resolvida para aquela ação e direção.
  • routeDescription — a descrição da rubrica contábil resolvida, preenchida junto com o routeCode.