Cancelamento de pedido com divisão de pagamento

Caso exista a necessidade, você pode realizar o cancelamento de pedidos com divisão de pagamento. Existem duas opções para realizar esse cancelamento:

  • Proporcional: você informa apenas o valor que deseja cancelar, parcial ou integral, e todos os recebedores envolvidos na transação serão debitados de forma proporcional.
  • Customizado: você informa os recebedores e os valores correspondentes do cancelamento diretamente na requisição.

Para ambos os tipos de cancelamento, você irá utilizar o Cancelar pagamento endpoint. No entanto, diferentes informações precisarão ser fornecidos para cada tipo de cancelamento.

Regras do cancelamento para divisão de pagamento

Independente da opção selecionada, o cancelamento deve atender as seguintes condições para ocorrer de forma correta:

  • Somente o recebedor primário, informado no momento da criação do pagamento, pode solicitar o cancelamento da transação.
  • Para que a operação de cancelamento seja autorizada, todos os recebedores, primário e secundários, precisam ter saldo em conta para realizar a devolução dos valores. Caso um dos recebedores não tenha saldo suficiente, o cancelamento da transação não será autorizado.
  • O cancelamento de cobranças com divisão do pagamento segue as mesmas regras do cancelamento de cobranças sem divisão do pagamento.

📘

No caso de um cancelamento parcial, se houver arredondamento dos valores para duas casas decimais devido ao sistema monetário, qualquer diferença de centavos resultante desse arredondamento será refletida no débito do valor original da transação.

Cancelamento proporcional

O cancelamento proporcional pode ser solicitado via:

  • API: suporta cancelamento total e parcial
  • iBanking: suporta somente cancelamento total.
  • Central de Atendimento: suporta cancelamento total e parcial.

Para realizar o cancelamento proporcional, você utilizará o endpoint Cancelar pagamento. Para utilizar o endpoint, você deve informar:

  • charge_id: identificador da cobrança, gerado no momento da criação do pedido. É enviado como Path Param.
  • amount.value: valor a ser estornado, informado em centavos. O sistema do PagBank irá identificar automaticamente se o cancelamento é parcial ou total com base no valor informado.

Abaixo, você encontra um exemplo de objeto enviado no momento do cancelamento de um pedido no valor de R$ 5,00.

{
  "amount": {
    "value": 500
  }
}

Após realizar o cancelamento, você pode utilizar o endpoint Consultar divisão do pagamento para consultar os valores estornados por cada recebedor.

Exemplo cancelamento total

Imagine que o cliente realizou uma transação no valor de R$ 100,00 dividida entre os recebedores da seguinte forma:

  • Primário: R$ 50,00.
  • Secundário 1: R$ 30,00.
  • Secundário 2: R$ 20,00.

Se o cliente solicitar o cancelamento total, ou seja, 100% do valor da transação, cada parte envolvida na divisão irá reembolsar integralmente o valor que recebeu na transação:

  • Primário: R$ 50,00.
  • Secundário 1: R$ 30,00.
  • Secundário 2: R$ 20,00.

Exemplo cancelamento parcial

Imagine que o cliente realizou uma transação no valor de R$ 100,00 dividida entre os recebedores da seguinte forma:

  • Primário: R$ 50,00.
  • Secundário 1: R$ 30,00.
  • Secundário 2: R$ 20,00.

Se o cliente solicitar o cancelamento parcial no valor de R$ 60,00, ou seja, 60% do valor da transação, cada parte envolvida na divisão irá reembolsar 60% do valor recebido na transação:

  • Primário: R$ 30,00.
  • Secundário 1: R$ 18,00.
  • Secundário 2: R$ 12,00.

Cancelamento customizado

O cancelamento customizado pode ser solicitado apenas utilizando a API do PagBank. Ao realizar o cancelamento, você pode optar por duas opções para definir como o reembolso será debitado da conta dos recebedores:

  • FIXED: você define o valor do montante a ser debitado da conta de cada recebedor que recebeu fundos da transação de compra.
  • PERCENTAGE: você de define o percentual do valor total do reembolso do cancelamento a ser debitado da conta de cada recebedor. Para essa opção, você também deve informar qual dos recebedores irá arcar com diferenças decorrentes de arrendondamentos para duas casas decimais no momento da divisão.

Essas opções são válidas para cancelamentos parciais e totais. No entanto, caso seja solicitado um cancelamento parcial customizado para uma transação com divisão do pagamento, cancelamentos parciais futuros associados a mesma transação também deverão ser do tipo customizado. Portanto, você não pode realizar um cancelamento parcial customizado e depois realizar um cancelamento proporcional para o mesmo pedido.

📘

Você pode definir que o valor debitado da conta de um recebedor seja maior que o valor recebido na transação. Porém, ele deve ter saldo suficiente em conta. Do contrário, o cancelamento não é autorizado.

Além do tipo da distribuição, você também precisa informar qual recebedor será responsável por devolver o valor das taxas associadas a transação. Você pode atribuir apenas um recebedor, primário ou secundário. Caso não informado, as taxas serão debitadas da conta do recebedor primário.

Para realizar um cancelamento customizado, você irá utilizar o endpoint Cancelar pagamento, sendo necessário fornecer as seguintes informações:

  • charge_id: identificador da cobrança, gerado no momento da criação do pedido. É enviado como Path Param.
  • amount.value: valor a ser estornado, informado em centavos. O sistema do PagBank irá identificar automaticamente se o cancelamento é parcial ou total com base no valor informado.
  • splits.method: define o tipo de divisão utilizado, podendo ser FIXED ou PERCENTAGE.
  • splits.receivers: nesse array você irá informar a conta de cada recebedor (account.id) e o valor a ser reembolsado por ele (amount.value). Quando method = PERCENTAGE, a soma dos valores de amount.value deve ser igual à 100.

Caso você deseje definir o recebedor que irá arcar com as taxas e que irá arcar com diferenças devido a arredondamento, no objeto associado a esse recebedor você deve adicionar o objeto configurations.refund. Nesse objeto, você irá adicionar:

  • rounding_liable.apply = true: informa que esse recebedor é responsável por arcar com diferenças que podem ocorrer em função de arredondamentos. Essa opção é necessária somente se method = PERCENTAGE.
  • fee_liable.percentage = 100: informa que esse recebedor irá arcar com 100% das taxas reembolsáveis. Como você pode atribuir essa função a um único recebedor, você sempre informará o valor 100. Do contrário, um erro será retornado.

Abaixo você encontra um exemplo do corpo de uma requisição de cancelamento customizado envolvendo dois recebedores.

{
   "amount":{
      "value":10000
   },
   "splits":{
      "method":"FIXED",
      "receivers":[
         {
            "account":{
               "id":"ACCO_B65AE001-EA74-4E53-9645-21D08FE7CC61"
            },
            "amount":{
               "value":2000
            },
            "configurations":{
               "refund":{
                  "rounding_liable":{
                     "apply":true
                  },
                  "fee_liable":{
                     "percentage":100
                  }
               }
            }
         },
         {
            "account":{
               "id":"ACCO_C4B62A20-ECB0-4145-BA75-9B902FA0526B"
            },
            "amount":{
               "value":8000
            }
         }
      ]
   }
}