Feedback on sale

Once a sale (or purchase) is fulfilled, the Seller may leave his/her feedback on the transaction and qualify the counterparty.
When the transaction is qualified as fulfilled, "custom" and "me1" shipments show that the product has been already delivered; therefore, bear in mind that this process should be started only if you are sure that the product has been delivered to the buyer. This way when the seller qualifies, a message will be sent to the buyer asking him/her about the sale and requesting confirmation of such sale product delivery.
Currently, this action is valid only for tracking shipment delivered statuses, that is, it has no impact on the involved Seller's reputation; it should be always applied to change status to delivered in sales without Mercado Envíos, moving these sales to the completed lists.

Contents

→Resource description
→Accepted values to send as "reason"
→Posting feedback
→Responding to feedback
→Get a sale feedback
→Changing feedback


Resource description

Attribute Description
fulfilled True or False. Indicates whether the order was completed or not.Required.
message A string under 160 chars. Required.
rating Possible values are ‘negative’, ‘neutral’ in case ‘fulfilled’: ‘false’ or positive in case ‘fulfilled’: ‘true’. Required.
reason Mandatory field in case ‘fulfilled’: ‘false’.
restock_item Only for sellers, when ‘fulfilled’: ‘false’. When ‘restock_item’: ‘true’ means the order was not completed so the item should be restocked. The only restriction for restocking is that the status of the item cannot be ‘closed’.


Accepted values to send as "reason"

Sellers' available reasons are:

  • OUT_OF_STOCK: Out of stock
  • BUYER_NOT_ENOUGH_MONEY: Seller does not answer
  • BUYER_REGRETS: Buyer does not have enough money
  • SELLER_REGRETS: Buyer regrets transaction
  • BUYER_DID_NOT_ANSWER: Buyer does not answer
  • THEY_NOT_HONORING_POLICIES: Buyer is not honoring the policies
  • OTHER_MY_RESPONSIBILITY: It is my own responsibility (other reason)
  • OTHER_THEIR_RESPONSIBILITY: It is the counterparty's responsibility (other reason)
  • DUBIOUS_BUYER: Buyer is not reliable
  • HIGH_ML_COMISSION: Very high sales commission
  • HIGH_TAXES: Very high taxes
  • SELLER_HOLIDAY: No operations due to vacations
  • UNFRIENDLY_SHIPMENT_POLICY: Buyer does not accept shipment policy
  • UNAVAILABLE_PRODUCT: Product is not available
  • SELLER_ADDRESS_WITHDRAWAL: Buyer chooses to pick up product in person
  • WRONG_RECEIVER_ADDRESS: Wrong delivery address
  • HIGH_SHIPMENT_COST: Very high shipment costs
  • WRONG_SHIPMENT_COST: Wrongly estimated shipment cost
  • UNPRINTED_LABEL: Unable to print label
  • UNWITHDRAWN_PRODUCT_BY_DELIVER_COMPANY: Shipping company failed to pick up product for delivery
  • DENIED_PACKAGE: Shipping company failed to accept package due to size or weight
  • UNABLE_TO_READ_LABEL: Shipping company cannot read label
  • MANUFACTURING_PRODUCT_NOT_FINISHED: Unfinished manufactured product
  • SHIPMENT_PROBLEM_OTHER: Other shipment problems
  • DELIVERY_COMPANY_PROBLEM_OTHER: Shipping company had other problems

Buyers' available reasons are:

  • OUT_OF_STOCK: Out of stock
  • BUYER_PAID_BUT_DID_NOT_RECEIVE: Buyer made payment but did not receive product
  • OTHER_MY_RESPONSIBILITY: It is my own responsibility (other reason)
  • BUYER_REGRETS: Buyer regrets transaction
  • HIGH_SHIPMENT_COST: High shipment cost
  • SELLER_DID_NOT_ANSWER: Seller does not answer
  • THEY_NOT_HONORING_POLICIES: Buyer does not answer
  • OTHER_THEIR_RESPONSIBILITY: Seller is not honoring the policies
  • DESCRIPTION_DIDNT_MATCH_ARTICLE: The description does not match item


Posting feedback

You can reply to feedback you received from your trading partners to explain your reasons or to give additional information by doing a POST to the API, including feedback_id, as follows:

curl -X POST -H "Content-Type: application/json" -d
'{
  "fulfilled": false,
  "rating": "neutral",
  "message": "Operation not completed",
  "reason": "OUT_OF_STOCK",
  "restock_item": false,
}'
https://api.mercadolibre.com/orders/$ORDER_ID/feedback?access_token=$ACCESS_TOKEN
Note:
From June 18, 2020, the seller will not be able to make an “not fulfilled” feedback once the order expired.
Status: 400
Error: not_fulfilled_feedback_in_order_expired.
Error message: You can't submit a not fulfilled feedback after order has expired.


Responding to feedback

You can respond to feedback received from your trading partners to explain your reasons or offer additional information with a POST request, including the feedback_id, as described below:

curl -X POST -H "Content-Type: application/json" -d'{
"reply":"Muchas gracias por la buena predisposición"
}'
https://api.mercadolibre.com/feedback/$FEEDBACK_ID/reply?access_token=$ACCESS_TOKEN


Get a sale feedback

Important:
Starting June 30, 2020, sellers can access sales feedbacks that are up to 5 (five) years old.

With the following GET request to orders resource you can check the feedbacks made on sales and in the response you will also get the feedback_id:

Request:

curl -X GET https://api.mercadolibre.com/orders/$ORDER_ID?access_token=$ACCESS_TOKEN

Example:

curl -X GET https://api.mercadolibre.com/orders/825103323?access_token=$ACCESS_TOKEN

Response:

{
  "id": 825103323,
  "status": "confirmed",
  "status_detail": {
  "code": null,
  "description": null
  },
  "date_created": "2014-03-17T23:27:53.000-04:00",
  "date_closed": "2014-03-17T23:27:53.000-04:00",
  "last_updated": "2014-06-01T16:36:28.000-04:00",
  "order_items": [
  {
    "item": {
      "id": "MLA494467937",
      "title": "Tag Heuer Aquaracer Automatico 43mm Cal16 Day-d Linea Nueva",
      "variation_id": null,
      "variation_attributes": []
    },
    "quantity": 1,
    "unit_price": 24100,
    "currency_id": "ARS"
  }
  ],
  "total_amount": 24100,
  "currency_id": "ARS",
  "buyer": {
  "id": 9981145,
  "nickname": "CARLITOS8665",
  "email": "carlitos8665@gmail.com",
  "phone": {
    "area_code": "011",
    "number": "1544706706",
    "extension": null
  },
  "alternative_phone": {
    "area_code": "011",
    "number": "48027618",
    "extension": null
  },
  "first_name": "Carlos",
  "last_name": "Acuña",
  "billing_info": {
    "doc_type": null,
    "doc_number": null
  }
  },
  "seller": {
  "id": 114499680,
  "nickname": "WATCHES-LUXURY2",
  "email": "watches-luxury2@hotmail.com",
  "phone": {
    "area_code": null,
    "number": "( 011) 1552490473",
    "extension": null
  },
  "alternative_phone": {
    "area_code": null,
    "number": "",
    "extension": null
  },
  "first_name": "carolina soledad",
  "last_name": "casares"
  },
  "payments": [],
  "feedback": {
  "purchase": {
    "id": 5040068164512,
    "date_created": "2014-04-07T11:20:00.000-04:00",
    "fulfilled": true,
    "rating": "positive",
    "status": "active"
  },
  "sale": {
    "id": 5040068160032,
    "date_created": "2014-04-07T11:20:57.000-04:00",
    "fulfilled": true,
   "rating": "neutral",
    "status": "active"
  }
  },
  "shipping": {
  "status": "to_be_agreed"
  },
  "tags": [
  "paid",
  "not_delivered"
  ],
  "mediations": [],
  "application_id": "2568868276694852",
  "hidden_for_seller": false,
  "buying_mode": "buy_it_now"
}

There is one pair of feedback_id for each transaction: sale and purchase. In this test example,“id”: 5040068160032 is the feedback_id for the sale-side , while “id”: 5040068164512 corresponds to purchase-side.


Changing feedback

You have already learned how to GET the other party’s feedback_id just by doing a POST to the API as follows:

curl -X PUT -H "Content-Type: application/json" -d '{
  "fulfilled": true,
  "rating": "positive",
  "message": "It’s ok.",
}' 
https://api.mercadolibre.com/feedback/$FEEDBACK_ID?access_token=$ACCESS_TOKEN

Next topic: Searches & advanced features.

or register to recieve the latest news about our API