Skip to main content
O tratamento de tarifas no Matcher é dividido em duas entidades:
  • Uma tabela de tarifas define quanto de tarifa calcular: a moeda, o arredondamento e um ou mais itens de tarifa (fixo, percentual, escalonado ou baseado em expressão).
  • Uma regra de tarifa decide quando uma tabela de tarifas se aplica. Ela pertence a um contexto de conciliação, aponta para um lado da correspondência e carrega predicados que os metadados de uma transação devem satisfazer. Quando os predicados batem, a regra seleciona a tabela de tarifas dela.
Modelar as tarifas esperadas assim permite ao Matcher considerar encargos previsíveis antes de comparar transações. Isso vale quando você habilita a normalização de tarifa e as moedas da transação e da tabela coincidem.

O que o tratamento de tarifas resolve


A conciliação falha quando um lado de uma transação inclui tarifas ou encargos que o outro lado não registra. Um gateway de pagamento desconta uma tarifa de processamento antes de liquidar. Um banco cobra uma tarifa de transferência. Um adquirente compensa tarifas contra os repasses. Sem tarifas modeladas, o Matcher trata essas diferenças como divergências de valor e gera exceções, mesmo quando você espera e documenta a diferença. As tabelas de tarifas descrevem o encargo, e as regras de tarifa escolhem quando usá-lo durante a normalização de tarifa habilitada.

Como as regras e as tabelas se encaixam


Uma regra de tarifa não contém o valor nem o cálculo da tarifa. Ela referencia uma tabela de tarifas por ID e a aplica às transações que os predicados dela selecionam.
  1. Você cria uma tabela de tarifas uma vez no nível do tenant. Muitas regras em muitos contextos podem reusá-la.
  2. Você cria uma regra de tarifa dentro de um contexto. Ela define um side, um feeScheduleId, uma priority e uma lista de predicates.
  3. Quando o Matcher processa um contexto com a normalização de tarifa habilitada, ele avalia as regras de tarifa do lado relevante em ordem de priority (a menor primeiro). A primeira regra que bate seleciona a tabela referenciada.
Essa separação significa que você muda como uma tabela de tarifas calcula uma tarifa editando a tabela. Você muda quando a tarifa se aplica editando a regra. Nenhuma das edições toca na outra.
Uma regra de tarifa sozinha não muda os valores de comparação. A avaliação de regras de tarifa afeta a conciliação de tarifas apenas quando o contexto define feeNormalization como NET ou GROSS, o lado relevante tem regras e as moedas da transação e da tabela coincidem.

Estrutura da regra de tarifa


Uma regra de tarifa pertence a um contexto e tem os campos a seguir.

Predicados

Cada predicado testa um campo de metadados da transação com um operador. Operadores disponíveis: Os campos ausentes são avaliados como false para cada operador, exceto EXISTS.

Estrutura da tabela de tarifas


Uma tabela de tarifas é uma entidade no nível do tenant que calcula uma tarifa a partir de um valor bruto.

Itens de tarifa

Cada item declara um name, uma priority (ordem de aplicação, relevante para CASCADING), um structureType e uma structure específica do tipo.

Como gerenciar tabelas de tarifas


As tabelas de tarifas têm escopo de tenant e são gerenciadas independentemente de qualquer contexto.

Como criar uma tabela de tarifas

Esta tabela calcula uma tarifa de processamento de 2,9% sobre o valor bruto, denominada em BRL.
cURL

Como simular uma tabela de tarifas

Antes de ligar uma tabela a uma regra, simule-a contra um valor bruto para confirmar a tarifa calculada.
cURL
A resposta retorna netAmount, totalFee e um detalhamento por item.
Referência da API: Simular cálculo de tarifa
Uma tabela de tarifas não pode ser excluída enquanto uma regra de tarifa ou o histórico de variação de tarifa a referenciar. A requisição de exclusão retorna 409 Conflict com o código MTCH-0108 e inclui os contextos bloqueadores em errors sob fee-schedule.delete.blocking-contexts. Remova ou reaponte antes as referências atuais das regras. As referências históricas de variação continuam bloqueando a exclusão.

Como gerenciar regras de tarifa


As regras de tarifa são criadas dentro de um contexto e referenciam uma tabela de tarifas.

Como criar uma regra de tarifa

Esta regra aplica a tabela de tarifas criada acima às transações do lado direito cujos metadados de institution são iguais a Banco do Brasil.
cURL

Fluxo de ponta a ponta


O tratamento de tarifas esperadas segue três etapas:
1

Crie a tabela de tarifas

Defina uma vez, no nível do tenant, como a tarifa é calculada, com POST /v1/fee-schedules. Opcionalmente valide-a com o endpoint de simulação. Anote o id retornado.
2

Crie a regra de tarifa no contexto

Dentro do contexto de conciliação, crie uma regra de tarifa com POST /v1/contexts/{contextId}/fee-rules. Defina feeScheduleId com o id da tabela, escolha o side, defina uma priority única e adicione os predicates que selecionam as transações às quais a tarifa se aplica.
3

Aplique durante a correspondência

Defina o feeNormalization do contexto como NET ou GROSS. Durante a correspondência, o Matcher avalia as regras de cada lado relevante em ordem de priority. Uma regra que bate muda o valor de comparação apenas quando a tabela dela e a transação usam a mesma moeda.

Boas práticas


Uma tabela de tarifas tem escopo de tenant e pode ser referenciada por muitas regras. Defina uma tabela uma vez (por exemplo “Card Processing - Visa”) e aponte para ela as regras de contextos diferentes. Editar a tabela atualiza cada regra que a usa.
As prioridades são únicas dentro de um contexto e compartilhadas entre as regras LEFT, RIGHT e ANY. Ordene-as da mais específica para a mais geral, para uma regra estreita vencer antes de um fallback amplo.
Os predicados são combinados com AND e testados contra os metadados da transação. Combine operadores (EQUALS, IN, BETWEEN, EXISTS) para mirar exatamente as transações às quais uma tarifa se aplica e evitar atribuição indevida de tarifa.
Use POST /v1/fee-schedules/{scheduleId}/simulate para confirmar que uma tabela produz a tarifa esperada para valores representativos antes de referenciá-la em uma regra.
Uma tabela referenciada por uma regra ou pelo histórico de variação de tarifa não pode ser excluída (409 MTCH-0108). A resposta de conflito lista os contextos bloqueadores em errors sob fee-schedule.delete.blocking-contexts. Atualize ou remova antes as referências atuais das regras; as referências históricas de variação continuam bloqueando a exclusão.

Próximos passos


Regras de correspondência

Configure como o Matcher compara transações depois de considerar as tarifas esperadas.

Roteamento de exceções

Revise a atribuição explícita, o despacho e o comportamento de callback para exceções que o tratamento de tarifas não cobre.

API de tabelas de tarifas

Referência completa da API para os endpoints de tabela de tarifas.

API de regras de tarifa

Referência completa da API para os endpoints de regra de tarifa.