Visão geral
A cardinalidade da correspondência é controlada pelo tipo de contexto. O Matcher suporta três tipos de contexto:
Não existe um tipo de contexto
N:1 separado. A correspondência agregada (várias origens para um destino) é simplesmente o tipo de contexto 1:N aplicado na direção de agregação: o mesmo tipo de contexto cobre tanto a divisão quanto a agregação.Como funciona
O comportamento de divisão e agregação é controlado por dois mecanismos:
- Tipo de contexto — determina a cardinalidade da correspondência (
1:1,1:NouN:M). - Flags de alocação da regra — controlam como os valores são distribuídos dentro de um grupo de correspondência.
Mapeamento de tipo de contexto
Configurações de alocação da regra
Todos os tipos de regra aceitam flags de alocação noconfig:
Exemplo: regra tolerance com alocação
cURL
matchScore e matchBaseScore são aceitos e validados, mas são reservados/inertes — eles não alteram a pontuação de confiança calculada. A confiança é sempre calculada a partir dos pesos fixos dos componentes internos (valor 40, moeda 30, data 20, referência 10). Veja Pontuação de confiança.Criando um contexto 1:N
Para habilitar correspondência dividida ou agregada, crie um contexto com tipo
1:N:
cURL
Correspondência dividida 1:N
Uma transação de origem corresponde a múltiplas transações de destino.
Casos de uso comuns
- Pagamento em lote: Uma única transferência cobrindo múltiplas faturas
- Folha de pagamento: Um débito bancário para múltiplos pagamentos de salário
- Liquidação: Um pagamento de gateway para múltiplos pedidos
Exemplo: pagamento de faturas em lote
Origem (Extrato Bancário):
Destinos (Lançamentos Contábeis):
Resultado: Correspondência 1:3 com alocação total
Correspondência agregada (vários para um)
Múltiplas transações de origem correspondem a uma transação de destino. Esta é a direção de agregação do tipo de contexto
1:N: não é um tipo N:1 separado.
Casos de uso comuns
- Depósitos bancários: Múltiplos cheques depositados como um único crédito
- Liquidações de cartão: Lote diário de transações como um único depósito
- Consolidação de caixa: Múltiplos recebimentos de caixa registradora para um depósito
Exemplo: depósito consolidado
Origens (Ponto de Venda):
Destino (Extrato Bancário):
Resultado: Correspondência 3:1 com alocação total
Correspondência N:M muitos-para-muitos
Múltiplas transações de origem correspondem a múltiplas transações de destino. Este é o padrão mais complexo.
Casos de uso comuns
- Compensação intercompany: Múltiplas faturas compensadas contra múltiplos pagamentos
- Liquidações de negociação: Compensação complexa com preenchimentos parciais
- Reconhecimento de receita: Múltiplas entregas contra múltiplos adiantamentos
Exemplo: compensação intercompany
Origens (Contas a Pagar da Empresa A):
Destinos (Contas a Receber da Empresa A):
Resultado: Correspondência 2:2, $18.000 total correspondido
Para habilitar correspondência N:M, crie um contexto com tipo
N:M:
cURL
Executando e revisando matches
Após configurar o contexto e as regras, dispare uma execução de correspondência e revise os grupos resultantes.
Executar correspondência
cURL
Visualizar histórico de execuções
cURL
Visualizar os grupos de correspondência de uma execução
O parâmetro de consultacontextId é obrigatório. A resposta é uma lista paginada por cursor de grupos de correspondência, cada um contendo suas transações correspondidas (em todas as cardinalidades) e seus scores de confiança.
cURL
Desfazer (desemparelhar) um grupo de correspondência
Para reverter um grupo incorreto, use unmatch. Um grupoPROPOSED é rejeitado com um motivo e suas transações retornam a UNMATCHED. Para um grupo CONFIRMED, o Matcher também reverte os efeitos residuais/de itens em aberto aplicados por essa confirmação, de forma atômica com a revogação do grupo e a devolução de suas transações. O parâmetro de consulta contextId é obrigatório, e um reason é enviado no corpo.
cURL
WITHDRAWN: ele permanece como histórico, mas não pode ser compensado nem carregado para outra execução. O Matcher verifica se a reversão é possível antes de alterar qualquer coisa. Se uma entrada posterior ainda ativa permanecer sobre o residual, ou se uma obrigação mais recente e ativa entrar em conflito ao restaurar um item terminal com a mesma identidade, o endpoint retorna 409 Conflict e deixa o grupo, as transações e os itens em aberto inalterados.
Algoritmo de correspondência
O algoritmo depende do tipo de contexto.
1:N — alocação sequencial determinística
Para cenários de split e agregação (1:N), o Matcher usa alocação sequencial determinística:
- Ordenar: As transações são ordenadas deterministicamente para garantir resultados reproduzíveis entre execuções.
- Iterar: O motor percorre os candidatos em ordem de prioridade.
- Alocar: Os valores são distribuídos de acordo com a configuração
allocationDirection(LEFT_TO_RIGHTouRIGHT_TO_LEFT). - Rastrear residuais: Quaisquer valores não alocados restantes são rastreados. Se
allowPartialfortrue, uma perna que ultrapassa é limitada ao valor restante; um split com cobertura incompleta ainda gera uma exceção de diagnóstico.
N:M — solver de correspondência de conjuntos
Para cenáriosN:M, o Matcher não aloca sequencialmente. Ele usa um solver limitado de seleção de subconjuntos: os candidatos são agrupados pela identidade de correspondência da regra, e o solver busca um subconjunto de transações do lado esquerdo e um subconjunto do lado direito que se conciliem entre si, com cardinalidade limitada por lado. A seleção é determinística sobre a entrada ordenada, cada grupo proposto precisa superar o limite fixo de confiança (pontuação mínima de 60), e nenhuma transação cai em dois grupos propostos dentro da mesma execução. Em regras TOLERANCE, a chave nmDeductionBand permite ao solver admitir um subconjunto de pagamentos que paga a menor um subconjunto de faturas dentro da banda.
Razões de exceção
Transações que não podem ser totalmente conciliadas aparecem como exceções tipadas:SPLIT_INCOMPLETE— existem alocações, mas elas não cobrem totalmente o valor alvo, independentemente deallowPartial.OVER_SETTLED— uma perna ultrapassou o que estava liquidando; o remanescente sobreliquidado é registrado como uma exceção tipada.
reason.
Melhores práticas
Comece com 1:N antes de N:M
Comece com 1:N antes de N:M
A correspondência muitos-para-muitos é complexa. Comece com padrões mais simples e habilite N:M apenas quando necessário.
Use tolerância de alocação para arredondamento
Use tolerância de alocação para arredondamento
Pequenas diferenças de arredondamento são comuns em pagamentos divididos. Defina allocationToleranceValue em alguns centavos para evitar exceções falsas.
Habilite alocação parcial deliberadamente
Habilite alocação parcial deliberadamente
Defina allowPartial como true apenas quando correspondências parciais são esperadas. Isso evita correspondências falsas de dados incompletos.
Faça dry-run antes de confirmar
Faça dry-run antes de confirmar
Sempre teste correspondência dividida e agregada no modo DRY_RUN primeiro para verificar os resultados de alocação.
Monitore residuais
Monitore residuais
Acompanhe os valores residuais ao longo do tempo. Residuais crescentes podem indicar problemas sistemáticos de correspondência.
Próximos passos
Regras de Correspondência
Configure regras e configurações de alocação.
Segurança
Segurança e controle de acesso.

