Devoluções e cancelamentos - Gerenciamento de conta - Mercado Pago Developers
Developers
Referência API
Suporte
Entrar

    Inicio

    Começando

    Pagamentos online

    Checkout Pro

    Checkout Transparente

    Link de pagamento

    Assinaturas

    Marketplace

    Mobile Checkout

    Web Tokenize Checkout

    Pagamentos presenciais

    Código QR

    Mercado Pago Point

    Plugins e plataformas

    WooCommerce

    Prestashop

    Magento 2

    Shopify

    VTEX

    Loja Integrada

    Nuvemshop

    iSet

    Linx Commerce

    Wix

    SDKs

    Notificações

    Webhooks

    IPN

    Gerenciamento de conta

    Requisitos para ir à produção

    Obter pagamentos

    Relatórios

    Devoluções e cancelamentos

    Gestão de estornos

    Melhora a aprovação

    Recursos

    Localização

    Changelog

    Status

NESTA PÁGINA

Sugerir alterações
Ajude-nos a melhorar a documentação
Você viu informações equivocadas, gostaria que explicássemos algo a mais ou que melhorássemos nossos manuais? Deixe suas sugestões no GitHub.

Devoluções e cancelamentos

Existem diferentes situações que podem dar origem ao cancelamento de uma venda:

  • Se o status do pagamento for pending ou in_process, o valor ainda não foi cobrado do comprador, então pode-se realizar um cancelamento.

  • Se o status do pagamento for approved, significa que o comprador efetuou o pagamento, e a devolução poderá ser realizada caso necessário.

AVISO
Lembre que para pagamentos com QR e POINT você só pode realizar restituições, mas não cancelamentos.

Cancelamentos

  • Os cancelamentos podem ser realizados somente com status pending e in process
  • É importante para meios de pagamento offline
  • A expiração de um pagamento ocorre após 30 dias e o cancelamento é automático, o status final deles será cancelled/expired.

Somente é possível cancelar pagamentos que se encontrem com status pending ou in_process. Assim que forem cancelados, não poderão mais ser aprovados e o estoque pendente de confirmação poderá ser liberado.

Os cancelamentos são utilizados principalmente com meios de pagamento em dinheiro.

Embora os tickets fora de mídia expirem, o usuário pode gerá-los novamente inserindo a transação de sua conta no Mercado Pago. Para cancelá-los definitivamente, sem a possibilidade de gerá-los novamente, evitando problemas de retenção de estoque por exemplo, é necessário que você execute o cancelamento deles.

Para realizar o cancelamento, faça a seguinte requisição enviando o status cancelled:

  • php
  • java
  • node
  • ruby
  • curl
          
<?php

  $payment = MercadoPago\Payment::find_by_id($payment_id);
  $payment->status = "cancelled";
  $payment->update();

?>

        
          
Payment payment = Payment.load(paymentId);
payment.setStatus("cancelled");
payment.update();


        
          
mercadopago.payment.update({
  id: paymentId,
  status: "cancelled"
}).then().catch();


        
          
preapproval = MercadoPago::Payment.find_by_id(paymentId)
preapproval.status = "cancelled"
preapproval.update()

        
          
curl -X PUT \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-d '{"status":"cancelled"}' \
'https://api.mercadopago.com/v1/payments/:ID'

        

Response status code: 200 OK

Devoluções

É possível devolver um pagamento dentro de 180 dias a partir de sua data de aprovação.

Deve haver saldo suficiente disponível em sua conta para efetuar a devolução do valor do pagamento com sucesso. Caso contrário, obterá um erro 400 Bad Request.

Caso o comprador tenha efetuado o pagamento com cartão, o valor será devolvido no próprio cartão.

Para pagamentos realizados a partir de outros meios, o valor a ser devolvido será depositado na conta Mercado Pago do comprador. Caso não possua uma conta, criaremos uma utilizando o e-mail que foi utilizado para realizar o pagamento.

Efetue a devolução integral do pagamento

Para realizar a devolução integral, faça a seguinte requisição indicando o payment_id:

php

<?php

$payment = MercadoPago\Payment::find_by_id($payment_id);
$payment->refund();

?>

node

mercadopago.payment.refund(payment_id)
  .then(function (response) {
    // Resposta do processo ...
  })
  .catch(function (error) {
    // manipular o erro ...
  });

curl

curl -X POST \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payments/:ID/refunds'
Nota
O pagamento permanecerá com o status refunded.

Response status code: 201 Created

json

{
	"id": REFUND_ID,
	"payment_id": ID,
	"amount": 73.48,
	"metadata": {},
	"source": {
		"id": "130379930",
		"name": "Firstname Lastname",
		"type": "collector"
	},
	"date_created": "2014-12-11T11:26:40.537-04:00"
}

Efetue uma devolução parcial

Pode-se realizar até 20 devoluções parciais de um mesmo pagamento. Assim que concluída, o status do pagamento será approved com um status_detail em partially_refunded.

Deve-se indicar o valor a ser devolvido.

  • php
  • java
  • node
  • ruby
  • curl
          
<?php
  $payment = MercadoPago\Payment::find_by_id(paymentId);
  $payment->refund(10.5);
?>

        
          
Payment payment = Payment.findById(paymentId);
payment.refund(10.5);

        
          
mercadopago.payment.refundPartial({ payment_id: id, amount: Number(amount) })
  .then(function (response) {
    // Resposta do processo ...
  })
  .catch(function (error) {
    // manipular o erro ...
  });

        
          
payment = MercadoPago::Payment.find_by_id(paymnentId)
payment.refund(10.5);

        
          
curl -X POST \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payments/:ID/refunds' \
-d '{"amount":10.5}'

        

Obtenha as devoluções realizadas

É possível consultar as devoluções de um pagamento específico através da seguinte requisição:

  • php
  • java
  • node
  • ruby
  • curl
          
<?php
  $payment = MercadoPago\Payment::find_by_id($payment_id);
  $refunds = $payment->refund();
?>

        
          
Payment payment = Payment.findById(paymentId);
ArrayList<Refund> refunds = payment.refund();

        
          
mercadopago.payment.refund(paymentId).then(function(data) {}
  //Do Stuff ..
});

        
          
payment = MercadoPago::Payment.find_by_id(payment_id)
refunds = payment.refund()

        
          
curl -X GET \
-H "Content-Type: application/json" \
-H 'Authorization: Bearer ACCESS_TOKEN' \
'https://api.mercadopago.com/v1/payments/:ID'

        

Resposta:

json

{
    "id": PAYMENT_ID,
    ...

    "refunds": [
      {
        "id": 111,
        "payment_id": PAYMENT_ID,
        "amount": 16.98,
        "metadata": {
        },
        "source": {
            "id": "130379930",
            "name": "Firstname Lastname",
            "type": "collector"
        },
        "date_created": "2014-12-04T17:00:03.000-04:00",
        "unique_sequence_number": null
      }
    ]
}
Essas informações foram úteis?

Copyright © 2021 MercadoPago.com Representações LTDA. / CNPJ n.º 10.573.521/0001-91 / Av. das Nações Unidas, nº 3.003, Bonfim, Osasco/SP - CEP 06233-903

Termos e condiçõesComo cuidamos da sua privacidade
Partners Mercado Pago

Ao navegar neste site, você aceita os cookies que usamos para melhorar sua experiência. Mais informações.