- Tarifas de transação se aplicam às transações
/v2que a conta envia. - Tarifas de serviço se aplicam quando você cobra um serviço da conta, por exemplo um extrato em papel. Você as cobra com uma cobrança de tarifas.
Planos de tarifas e pacotes de tarifas
Um plano de tarifas e um pacote de tarifas são entidades diferentes.
- Uma conta com um plano de tarifas ativo paga as tarifas do plano dela nas transações
/v2que envia. Nessas transações, um pacote de tarifas nunca cobra essa conta, também quando nenhuma tarifa do plano corresponde. Então a conta não paga tarifa. - Um pacote de tarifas não cobra os lançamentos de tarifa que um plano de tarifas adiciona.
Crie um plano de tarifas
Crie um plano com Criar um plano de tarifas. O plano tem estes campos:
label: o nome do plano. Dois planos de um ledger que não foram excluídos não podem ter o mesmo label (0543).description: opcional.enable:truepermite atribuir o plano a contas.timezone: o fuso horário IANA em que o plano conta os meses dele. O padrão éAmerica/Sao_Paulo.fees: pelo menos uma tarifa, por chave de tarifa. Uma chave de tarifa começa com uma letra minúscula, seguida apenas de letras e dígitos ASCII (^[a-z][a-zA-Z0-9]*$).
feeLabel: o nome da tarifa.trigger: o que faz a tarifa se aplicar. Veja Gatilhos.calculationModel:flatFee,percentualoumaxBetweenTypes, como em um pacote de tarifas. Uma tarifa de serviço aceita apenasflatFee(0555).creditAccount: o alias da conta do ledger que recebe a tarifa. O Midaz confere se a conta existe quando você cria ou atualiza o plano.accounting: otransactionRoute, ooperationRouteFrome ooperationRouteToda tarifa. Veja Rotas contábeis.freeQuota: o número de unidades gratuitas por mês. O padrão é0.period: apenasmonthly, o padrão.referenceAmount: apenasoriginalAmount, o padrão.
Gatilhos
Um gatilho comtype: transaction aceita estes campos:
direction: obrigatório. O único valor ésent: a tarifa se aplica à conta que envia a transação.schemes: os esquemas de transação que a tarifa corresponde, por exemploTEDouPIX.metadata: pares opcionais que os metadados da transação devem ter todos. Um par corresponde apenas a um valor de metadado do tipo string igual a ele.
type: service aceita apenas serviceCode, por exemplo PAPER_STATEMENT.
O Midaz armazena esquemas e códigos de serviço sem espaços nas pontas e em maiúsculas. Cada um tem de 1 a 50 letras, dígitos, sublinhados ou hifens. Um código não pode ser o esquema de uma tarifa e o código de serviço de outra tarifa do plano (0558).
Rotas contábeis
As regras dependem de o ledger validar ou não as rotas contábeis (accounting.validateRoutes nas configurações do ledger):
Duas tarifas de transação de um plano com os mesmos
metadata não podem selecionar as mesmas transações (0544). Em um ledger sem validação de rotas, elas não podem compartilhar um esquema. Em um ledger com validação de rotas, elas não podem compartilhar uma rota de transação e um esquema, e uma tarifa sem esquemas ocupa cada esquema da rota dela. Duas tarifas de serviço não podem compartilhar um código de serviço (0544).
Se você ativar a validação de rotas depois de criar um plano, dê antes a cada tarifa uma rota de transação e as duas rotas de operação. Uma tarifa sem rota de transação recusa com 0547 cada transação a que ela corresponderia, e cada cobrança de tarifas que a nomeia.
Versões
As tarifas de um plano ficam em versões. Uma versão nunca muda.
- A criação gera a versão 1, em vigor a partir do instante da criação.
- Uma atualização que envia
feesgera uma nova versão com o conjunto completo de tarifas resultante. effectiveFromdefine o instante a partir do qual a nova versão se aplica, em RFC 3339. O padrão é o instante da requisição. Ele não pode ser anterior aoeffectiveFromda versão mais recente (0553). Envie-o apenas comfees.label,description,enableetimezonemudam o plano, não uma versão.
fees de uma atualização:
- Uma entrada com a chave de uma tarifa armazenada muda os campos que envia e mantém os outros.
trigger,calculationModeleaccountingmudam por inteiro. - Uma entrada vazia (
{}) exclui essa tarifa. - Uma entrada com uma nova chave adiciona uma tarifa, com cada campo obrigatório.
- A nova versão parte das tarifas da versão mais recente. Ela mantém pelo menos uma tarifa.
0559 e não cria versão. Leia o plano de novo e envie a atualização de novo.
Consultar um plano de tarifas retorna a versão em vigor no instante da requisição. currentVersion é a maior versão criada, que pode começar depois. Listar as versões de um plano de tarifas retorna cada versão.
Atribua um plano a uma conta
Atribuir um plano de tarifas a uma conta envia o
accountPlanId do plano.
- O plano deve pertencer ao ledger, existir e estar habilitado (
0545). - Se a conta tem uma atribuição ativa de outro plano, ela termina no instante em que a nova atribuição começa, em um único passo.
- Se a conta já tem o mesmo plano, o Midaz retorna a atribuição ativa e não muda nada.
- Quando outra atribuição da mesma conta acontece ao mesmo tempo, o Midaz pode responder
0560e não mudar nada. Envie a requisição de novo.
null, e o histórico da conta. Listar as contas atribuídas a um plano de tarifas retorna as atribuições ativas de um plano.
Terminar a atribuição de plano de tarifas de uma conta termina a atribuição ativa. Os pacotes de tarifas então voltam a se aplicar à conta. Uma conta sem atribuição ativa responde 0554.
Desabilite ou exclua um plano
- Um plano desabilitado (
enable: false) não pode ser atribuído. Ele continua cobrando as contas que já tem. - O Midaz recusa excluir um plano atribuído a uma conta (
0546). Termine as atribuições dele antes. - Quando você exclui uma conta, o Midaz termina a atribuição ativa dela. O histórico da conta continua legível.
Como um plano cobra uma transação
O Midaz aplica planos de tarifas a estas transações
/v2: direct, hold, block, unblock e cada item de um lote. Uma transação /v1, uma anotação, um estorno e uma transação que pula as tarifas com skip.fees não usam planos de tarifas.
O Midaz toma uma decisão para cada conta de origem da transação que tem um plano ativo, exceto contas @external. Ele toma uma decisão por conta, também quando a conta envia de vários saldos.
Correspondência
As tarifas da versão em vigor são comparadas com a transação:- Em um ledger sem validação de rotas, uma tarifa de transação corresponde quando os
schemesdela contêm oschemeda transação. Uma transação semschemenão corresponde a nenhuma tarifa. - Em um ledger com validação de rotas, uma tarifa de transação corresponde quando o
transactionRoutedela é orouteIdda transação e osschemesdela estão vazios ou contêm oschemeda transação. - Nos dois casos, os metadados da transação devem ter cada par de
metadatada tarifa. - Quando várias tarifas correspondem, se aplica a tarifa com mais pares de
metadata. Quando duas ou mais tarifas têm esse número de pares, o Midaz recusa a transação com0548.
Resultado
A decisão tem um destes resultados:
O Midaz calcula uma tarifa cobrada sobre o valor que a conta envia na transação. Em um ledger com validação de rotas, os lançamentos de tarifa usam as rotas de operação da tarifa.
A resposta da criação tem
accountPlanFees, com um item para cada conta que tem um plano ativo: accountId, accountAlias, accountPlanId, accountPlanVersion, feeKey, outcome, unit, freeQuota e amount. Apenas as respostas de criação o retornam. Leituras, commits, cancelamentos e estornos não. As chaves de metadados da transação packageAppliedID, feeApplied e feeExemption descrevem apenas pacotes de tarifas.
Holds, cancelamentos e estornos
- Um hold conta a unidade quando você o cria. O commit não conta nada.
- Um cancelamento ou um estorno devolve a unidade apenas no mesmo mês do plano. O estorno também reverte os lançamentos de tarifa.
Cota gratuita
Uma unidade é uma decisão com o resultado
quota ou charged, ou um código de serviço de uma cobrança de tarifas com os mesmos resultados.
- O Midaz conta unidades por conta, chave de tarifa e mês civil no fuso horário do plano.
- A contagem pertence à conta e à chave de tarifa, não ao plano. Uma conta que passa para outro plano com a mesma chave de tarifa mantém a contagem dela no mês.
- Uma tarifa de transação conta cada esquema separadamente. Em um ledger com validação de rotas, uma tarifa sem esquemas tem uma contagem para todos os esquemas da rota dela. Uma tarifa de serviço tem uma contagem.
- Quando você muda uma tarifa, a contagem dela continua. Uma tarifa com uma nova chave começa do zero.
- O mês é o mês em que o Midaz processa a transação, não o
transactionDatedela.
Tarifas de serviço e cobranças de tarifas
Cobrar tarifas de serviço de uma conta envia
serviceCodes, com 1 a 100 códigos, e description e metadata opcionais. A requisição precisa do header X-Idempotency (0552).
Cada código da lista é uma unidade. O resultado dela é um destes:
quota: a unidade está dentro da cota gratuita da tarifa dela. Não custa nada.charged: a unidade passou da cota gratuita. Custa o valor fixo da tarifa.not_covered: o plano da conta não tem tarifa de serviço para o código, ou a conta não tem plano ativo. Não custa nada e não conta unidade.
- Nenhum plano de tarifas do ledger tem uma tarifa de serviço para um código (
0549). - Um código pertence apenas a tarifas de transação (
0550). - Em um ledger com validação de rotas, as tarifas dos códigos têm rotas de transação diferentes (
0551), ou uma tarifa não tem rota de transação (0547).
creditAccount de cada tarifa. Em um ledger com validação de rotas, a transação usa a rota de transação e as rotas de operação das tarifas. A description e os metadata da cobrança vão para a transação de tarifa. Nenhum pacote de tarifas, plano de tarifas ou validação do Tracer se aplica à transação de tarifa. Quando o Midaz recusa a transação de tarifa, por exemplo por saldo insuficiente, ele recusa a cobrança com o mesmo erro e não conta unidade.
Uma cobrança sem unidade cobrada não tem transação de tarifa, e o feeTransactionIds dela fica vazio. Nada desfaz essa cobrança, e as unidades dela continuam contadas.
- Uma nova tentativa com a mesma chave e o mesmo corpo retorna a cobrança registrada com o header
X-Idempotency-Replayed. Um corpo diferente com a mesma chave responde0084. As chaves são únicas por conta. - Para desfazer uma cobrança, estorne a transação de tarifa dela. Um estorno no mesmo mês devolve cada unidade da cobrança.
- A transação de tarifa não tem referência à cobrança dela. O
feeTransactionIdsda cobrança liga as duas.
period (YYYY-MM) filtra a lista. Consultar uma cobrança de tarifas de uma conta retorna uma cobrança.
Uso
Consultar o uso do plano de tarifas de uma conta retorna as unidades da conta em um mês.
period (YYYY-MM, no fuso horário do plano) escolhe o mês. O padrão é o mês atual. Um period futuro ou malformado responde 0082, e uma conta sem plano ativo responde 0554.
A resposta tem um item para cada contagem de cada tarifa: feeKey, trigger, period, freeQuota, used, remaining e charged. trigger é uma chave da contagem: leia feeKey em vez de interpretá-la. remaining nunca é negativo.
O uso lista as tarifas e as cotas gratuitas da versão em vigor agora, também para um mês passado. Para conciliação, use o accountPlanFees das respostas de criação e as cobranças de tarifas.
Estimativas e eventos
- Uma estimativa de tarifas precifica o pacote de tarifas que você nomeia. Ela não lê as atribuições de planos de tarifas.
- O evento
fee_charge.appliedcobre apenas pacotes de tarifas. Uma tarifa de plano de tarifas ou uma cobrança de tarifas não o emite.
Permissões
As rotas usam estes recursos de permissão do Midaz:
Próximos passos
Usar planos de tarifas
Crie um plano, atribua-o e cobre tarifas passo a passo.
Lista de erros do Midaz
Veja os códigos de
0543 a 0560.
