Visão geral
A correspondência multimoeda converte os valores das duas transações para uma moeda base usando a taxa de câmbio adequada e depois aplica as regras de correspondência padrão. Se os valores convertidos ficarem dentro da tolerância, o Matcher cria uma correspondência. Caso contrário, ele cria uma exceção para revisão.
Fluxo da correspondência multimoeda.
Como funciona
O suporte a multimoeda fica nos tipos de contexto existentes (
1:1, 1:N, N:M) e nas regras de correspondência. Não existe um tipo de contexto “multimoeda” separado.
No momento da correspondência, o Matcher calcula um valor base e uma moeda base para cada transação a partir das dicas de câmbio nos metadados da própria transação (veja Câmbio a partir dos metadados da transação abaixo). As regras que definem matchBaseAmount ou matchBaseCurrency comparam esses valores base. Você não pode enviar um valor base diretamente.
Não há provedor externo de câmbio nem serviço de consulta de taxas. A taxa sempre vem da própria linha da transação.
Componentes principais
Configurar regras para multimoeda
Habilite a comparação multimoeda definindo
matchBaseAmount e matchBaseCurrency como true na config da regra.
As verificações dos valores originais continuam ativas. Uma regra EXACT compara amount enquanto matchAmount está ligado, e as regras EXACT e TOLERANCE comparam currency enquanto matchCurrency está ligado. Os dois vêm ligados por padrão, então uma regra entre moedas os desliga.
Regra exata com correspondência de valor base
cURL
matchBaseAmount compara os valores base, e matchBaseCurrency compara as moedas base. Uma transação sem valor base falha nas duas verificações.
Regra de tolerância com correspondência de valor base
cURL
matchBaseAmount, uma regra TOLERANCE compara os valores base no lugar dos valores originais, e absTolerance fica em unidades da moeda base.
Pontuação de confiança
As regras de valor base usam os mesmos pesos fixos de componente que todas as outras regras. Para o modelo completo de pontuação, veja Pontuação de confiança.Câmbio a partir dos metadados da transação
Quando uma transação ainda não tem valor base, o Matcher a converte no momento da correspondência usando as dicas de câmbio levadas no
metadata daquela transação. O Matcher não chama nenhum provedor externo de taxas. A taxa viaja junto com a linha.
A conversão apenas roda quando fx_base_currency está presente. A conversão nunca altera o amount e o currency originais, porque ela muda apenas a comparação. O Matcher arredonda o valor convertido na maior roundingScale entre as regras TOLERANCE do contexto, ou em 2 casas decimais quando o contexto não tem nenhuma. A simulação de correspondência não converte, então as regras de valor base não encontram correspondências em uma simulação.
Campos de metadados
Exemplo de transação com metadados de câmbio
matchBaseAmount e matchBaseCurrency então compara esse valor base e essa moeda com o outro lado.
Quando as dicas estão ausentes ou inválidas (taxa não interpretável, expressão com falha), a transação não recebe valor base. Ela não pode corresponder sob uma regra de valor base e fica não conciliada. A execução continua.
Faixa de variação da taxa de câmbio
Valores entre moedas costumam divergir um pouco, porque cada lado converte com uma taxa diferente ou em um dia diferente. A chave
fxVarianceBand nas regras TOLERANCE trata disso. Ela define um segundo limiar empilhado acima da tolerância de correspondência, expresso como fração decimal (0.0001 = 1 ponto-base).
Depois da passagem de tolerância estrita, o Matcher revarre os pares 1:1 entre moedas que ficaram não conciliados. Um par cujo residual de valor base passa da tolerância de correspondência mas fica dentro da faixa ainda corresponde. O par vira um grupo proposto com confiança fixa de 75, abaixo do limiar de confirmação automática, então ele sempre exige revisão humana. O Matcher sinaliza as duas transações com o motivo de exceção FX_RATE_VARIANCE. O residual então vira uma exceção tipada em vez de colapsar para UNMATCHED.
A faixa se aplica apenas quando:
- os dois lados trazem um valor base e a mesma moeda base.
- as moedas originais diferem (uma divergência dentro da mesma moeda é um descasamento comum, não um caso de câmbio).
- todas as outras verificações da regra (janela de data, referência, campos compostos) continuam passando. A regra precisa definir
matchCurrencycomofalse, porque a verificação de moeda rejeita pares cujas moedas originais diferem.
fxVarianceBand zero ou ausente desabilita a faixa.
cURL
Exemplo: conciliação entre moedas
Fonte (conta em EUR):
Destino (conta em USD):
As duas transações trazem
fx_base_currency: "USD". A txn_001 traz fx_rate: "1.085" e a txn_002 traz fx_rate: "1".
Com uma regra TOLERANCE (matchCurrency: false, matchBaseAmount: true, matchReference: false, percentTolerance: 0.02):
- Valores base: US 1.095,00
- Diferença: US$ 10,00
- Limiar: 2% do maior valor, US$ 21,90
- Resultado: Correspondência (US 21,90)
Boas práticas
Informe metadados de câmbio estáveis por transação
Informe metadados de câmbio estáveis por transação
Anexe
fx_base_currency e fx_rate (ou fx_notional_expr) aos metadados de cada transação na origem, usando a taxa que valia quando a transação liquidou. Como a taxa viaja junto com a linha, os resultados são reprodutíveis entre execuções, sem consultas de taxa em tempo de execução.Combine com regras de tolerância
Combine com regras de tolerância
As conversões de câmbio introduzem pequenas variações. Use regras TOLERANCE com matchBaseAmount para acomodar arredondamentos e diferenças no momento da taxa.
Documente a escolha da sua moeda base
Documente a escolha da sua moeda base
Use uma moeda base consistente em todos os contextos. USD é comum para operações internacionais. Use a moeda dos seus relatórios para operações domésticas + internacionais.
Próximos passos
Pontuação de confiança
Como funcionam as pontuações de correspondência e quais limiares se aplicam.
Regras de correspondência
Referência completa dos tipos de regra e dos campos de config.

