Realizar o reembolso de faturas (estorno) por API
O que você irá aprender com esse artigo?
- O que é um reembolso
- Como realizar reembolso por api
- Gatilho de reembolso de uma fatura
Caso de uso
"Cliente entra em contato informando que gostaria de realizar o estorno de uma cobrança, pois não gostou do produto, ou serviço contratado."
Diagrama de sequência

O que é um reembolso
O reembolso é a devolução dos valores de uma venda para o comprador. Essa devolução pode ser feita integralmente, considerando o valor total da transação que o cliente pagou, ou pode ser parcial, onde apenas uma parte do valor total é devolvido.
Para pagamentos com o cartão de crédito o prazo máximo para solicitar reembolso é de 180 dias e a devolução pode demorar até 2 meses para constar na fatura do cartão do cliente, conforme padrão da Visa, Master e outras bandeiras.
Se o método de pagamento for PIX, o prazo máximo de solicitação de reembolso é de 90 dias e nesse caso não é possível estornar parcialmente.
O que acontece com o split no caso de reembolso parcial
No caso de cartão, é possível solicitar reembolso parcial. Nesse cenário, se houver split, o valor que sai das contas é devolvido proporcionalmente ao recebimento. Supondo que uma fatura foi criada entre a conta mestre e uma subconta e que nesse cenário a conta mestre tenha recebido 20% e a subconta 80%. Nesse caso, se houver um reembolso parcial de R$ 10,00 para essa fatura, R$ 8,00 saíra do recebimento da subconta (80% dos R$ 10,00) e R$ 2,00 sairá da conta mestre (20% dos R$ 10,00).
Boleto:
Não realizamos reembolso para boletos. Nesse caso é necessário que faça uma transferência para o cliente do seu lado.
Saiba que:
O reembolso não possui custo e as taxas transacionais iugu também são devolvidas nesse processo.
Como funciona reembolso por cartão na iugu
No caso de pagamento parcelado, se já houver parcelas liquidadas, o valor sai do saldo disponível da conta e se ainda houver parcelas futuras, então o valor sai do saldo a receber.
É possível realizar reembolso parcial e total.
Reembolso parcial com parcelas liquidadas
Vale ressaltar que no caso de reembolso parcial, se já houver parcelas liquidadas, parte do valor sai do saldo disponível e o restante do saldo a receber. Por exemplo: supondo que há uma transação de R$ 120,00 parcelada em 12 vezes, em que a primeira parcela já foi liquidada (R$ 10,00) e chega uma solicitação de reembolso parcial de R$ 90,00. Nesse cenário vamos calcular R$ 90,00 divido por 12 parcelas, então temos R$ 7,50. Será descontado de todas as parcelas R$ 7,50, mas no caso da primeira parcela esse valor sai do saldo disponível, pois já havia sido liquidado. Enquanto nas outras 11 parcelas, tirando R$ 7,50 de cada uma sobrará R$ 2,50, que é o valor a ser liquidado.
Reembolso parcial sem parcelas liquidadas
Supondo que há uma transação de R$ 120,00 parcelada em 12 vezes e nenhuma das parcelas foi liquidada ainda e chega uma solicitação de reembolso parcial de R$ 90,00. Nesse caso, será descontado os R$ 90,00 do valor total da transação, esse valor sairá do saldo a receber e será reembolsado. O que sobrou (R$ 30,00 => R$ 120,00 menos R$ 90,00) dividimos por 12 e esse será o valor das parcelas. Nesse caso então cada parcela terá um valor de R$ 2,50.
Reembolso total sem parcelas liquidadas
O valor completo será retirado do saldo a receber.
Reembolso total com parcelas liquidadas
O que já estiver liquidado sai do saldo disponível e o restante sai do saldo a receber.
Supondo que há uma transação de R$ 120,00 parcelada em 12 vezes, em que duas parcelas já foram liquidadas (R$ 20,00) e chega uma solicitação de reembolso total (R$ 120,00). Os R$ 20,00 que já estavam liquidados vão sair do saldo disponível e os outros R$ 100,00 vão sair do saldo a receber.
Atenção!
Caso a conta não tenha saldo disponível e no reembolso solicitado o valor ou parte dele tenha que sair desse saldo, nesse caso, o reembolso não será realizado.
Veja outros detalhes do processo de estorno aqui e consulte como emitir comprovante de reembolso aqui.
Como realizar reembolso via API
Para realizar um reembolso é necessário realizar um POST na api Reembolsar faturas, passando na url da request, o id da fatura que deseja estornar, ou seja, devolver o valor a pessoa que fez a compra.
Modelo de request
curl --location --request POST 'https://api.iugu.com/v1/invoices/{{invoice_id}}/refund' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic {{api_token in base64}}' \
--data-raw ''
Modelo de response

Caso exista a necessidade de realizar um reembolso parcial da fatura, basta inserir no corpo da request a propriedade partial_value_refund_cents, ela deve ser informada em centavos e no formato int32.
Por exemplo, caso exista a necessidade de estornar apenas R$10,00 de uma fatura de R$80,00, precisa realizar a seguinte request:
curl --location --request POST 'https://api.iugu.com/v1/invoices/id/refund' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic {{api_token in base64}}' \
--data-raw '{
"partial_value_refund_cents": 1000
}'
Gatilho de reembolso de uma fatura
Caso de uso
"Cliente entra em contato informando que deseja realizar o estorno de uma fatura, porém por uma estratégia definida da empresa, para ocorrer esse processo, o cliente precisa conversar com um atendente que irá ter acesso ao painel da iugu para realizar o estorno, porém é necessário que essa atualização do estorno seja replicada para o site para atualizar o pedido desse cliente para estornado."
Diagrama de sequência

Após ser realizado o estorno dentro do painel da iugu, será enviado o gatilho invoice.refunded, onde será apresentado o id da fatura que foi estornada.
Se sua empresa trabalha com estorno parcial, para saber o valor estornado é necessário realizar um GET na api Consultar Faturas passando seu token_api e o id da invoice na url da request.
Modelo de request
curl --location --request GET 'https://api.iugu.com/v1/invoices/{{invoice_id}}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic {{api_token in base64}}' \
--header 'Cookie: __cfruid=ba38fe00a0ba07ff13cb5574006ba07a4e082a46-1627652114'
Updated over 1 year ago