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

    Inicio

    Começando

    Pagamentos online

    Checkout Pro

    Checkout API

    Link de pagamento

    Marketplace

    Mobile Checkout

    Web Tokenize Checkout

    Pagamentos presenciais

    Código QR

    Plugins e plataformas

    WooCommerce

    Prestashop

    Magento 2

    Shopify

    VTEX

    SDKs

    Notificações

    Webhooks

    IPN

    Gerenciamento de conta

    Relatórios

    Obter pagamentos

    Melhora a aprovação

    Gestão de estornos

    Devoluções e cancelamentos

    Requisitos para ir à produçã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 90 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 © 1999-2021 MercadoLibre Perú S.R.L.

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

Al navegar en este sitio aceptas las cookies que utilizamos para mejorar tu experiencia. Más información.