Documentation Mercado Libre

Check out all the necessary information about APIs Mercado Libre.
circulos azuis em degrade

Documentation

Last update 20/03/2023

Total and partial refund

Now you can have a complete experience in claims and returns. Sellers can negotiate purchase refunds during claims by offering partial and total (full) refunds. They will have only one offer, so we recommend contacting the buyer to maximize acceptance. See more about Refunds.

Benefits

  • The seller will be able to recover a proportional amount of the sale of the product, the sales fee and the shipping fees.
  • Applies to all types of claims: different, defective, incomplete product and buyer's regret.
  • If the seller offers Partial Refunds before 72 hours the opened claim, it will not affect their reputation and therefore if the buyer accepts the offer it does not impact too.

Partial refund view in Global Selling

Confirmation: through this interface, the seller is informed of the benefits and what will happen when the partial is offered (this part should be reflected in the manual) and later, by clicking on the confirm button, the proposal is sent to the buyer.


Total Refund: initially, it is validated if it is possible to make a total refund.


By clicking on the refund money button, the following interface is displayed through this interface the Seller returns the entire amount of the product.



Check claims

To provide a better experience, we recommend you check open claims: If the reason_id field is PDD, validate that it can offer a partial or full refund through the available_actions tag, containing refund (for Total refund) or allow_partial_refund (for Partial refund):


Example:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/marketplace/claims/search?stage=dispute&status=opened

Response with Total refund option

In the event that the claim has a total refund available, in the claim info, specifically in the available_actions tag for the seller-type player, there must be an action refund:


{
    "id": 123,
    "type": "mediations",
    "stage": "dispute",
    "status": "opened",
    "parent_id": null,
    "client_id": null,
    "resource_id": 123,
    "resource": "order",
    "reason_id": "PDD9562",
    "fulfilled": true,
    "players":
    [
        {
            "role": "complainant",
            "type": "buyer",
            "user_id": 1232,
            "available_actions":
            []
        },
        {
            "role": "respondent",
            "type": "seller",
            "user_id": 1234,
            "available_actions":
            [
                {
                    "action": "send_message_to_mediator",
                    "due_date": null,
                    "mandatory": false
                },
                {
                    "action": "refund",
                    "due_date": null,
                    "mandatory": false
                }
            ]
        }
    ],
    "resolution": null,
    "labels": null,
    "site_id": "MLB",
    "date_created": "2022-03-17T15:45:55.000-04:00",
    "last_updated": "2022-03-22T22:57:12.000-04:00"
}

If the claim is enabled to offer a total refund, you can offer a total refund.


Response with Partial refund option

In case the claim has a partial refund available, in the claim info, especially in the array available_actions of the seller, it must have the action allow_partial_refund.


{
    "id": 123,
    "type": "mediations",
    "stage": "claim",
    "status": "opened",
    "parent_id": null,
    "client_id": null,
    "resource_id": 123,
    "resource": "order",
    "reason_id": "PDD9551",
    "fulfilled": true,
    "players":
    [
        {
            "role": "complainant",
            "type": "buyer",
            "user_id": 123,
            "available_actions":
            []
        },
        {
            "role": "respondent",
            "type": "seller",
            "user_id": 123,
            "available_actions":
            [
                {
                    "action": "send_message_to_complainant",
                    "due_date": "2023-01-27T22:43:59.000-04:00",
                    "mandatory": true
                },
                {
                    "action": "refund",
                    "due_date": null,
                    "mandatory": false
                },
                {
                    "action": "allow_partial_refund",
                    "due_date": null,
                    "mandatory": false
                }
            ]
        }
    ],
    "resolution": null,
    "labels": null,
    "site_id": "MLB",
    "date_created": "2023-01-23T09:59:05.000-04:00",
    "last_updated": "2023-01-23T11:18:01.000-04:00"
}

If the claim is available to offer a partial refund:


1. The seller must consult the percentage and amount of return that allows him to obtain the percentages available to offer and its equivalence with respect to the amount of the product.
2. Then the seller offers partial refund, which will send the buyer the seller's offer.


Percentage and amount of return

Check the refund percentages available for a partial refund and how much would be the amount to be refunded. See more about make a good partial refund offer.


Request:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/marketplace/claims/$CLAIM_ID/partial_refund/percentage

Example:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/marketplace/claims/5154622534/partial_refund/percentage

Response:

{
     "default_percentege":50,
    "pencentages_refund_partial":
    [
        {
            "value": "100 USD",
            "percentage": 100
        },
        {
            "value": "90 USD",
            "percentage": 90
        },
        {
            "value": "80 USD",
            "percentage": 80
        },
        {
            "value": "70 USD",
            "percentage": 70
        },
        {
            "value": "60 USD",
            "percentage": 60
        },
        {
            "value": "50 USD",
            "percentage": 50
        },
        {
            "value": "40 USD",
            "percentage": 40
        },
        {
            "value": "30 USD",
            "percentage": 30
        },
        {
            "value": "20 USD",
            "percentage": 20
        }
    ]
}

Response fields

default_percentage: defect returns percentage.
pencentages_refund_partial: available partial returns percentage.
value: amount in US dollars (USD).
percentage: percentage of return representing the above amount.


If the claim is not available to do a partial refund, the response will be something like:

{
    "message": "the claim does not have the partial refund enabled.",
    "error": "forbidden",
    "status": 403,
    "cause": []
}

Offer partial refund

To offer a partial refund, the claim must be PDD with expected_resolution return_product and status pending.


1. Check the possible amount and percentages available to offer partial refund (Consult percentage and return amount).
2. Choose percentage to return: if you don't send a return percentage, by default will be assigned default_percentege.


Note:
When you offer partial refund, the field expected_resolution who was next to seller player_role: complainant will become rejected and will be created expected_resolution=partial_refund, where the status will be pending, and the response will be on the buyer's side (player_role: respondent).

Request:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/marketplace/claims/$CLAIM_ID/expected_resolutions

Example:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/marketplace/claims/950463475/expected_resolutions - d 
{
  "expected_resolution": "allow_partial_refund",
  "detail": {
    "key": "percentage",
    "value": "50.0"
  }
}

Response:

[
    {
        "player_role": "complainant",
        "user_id": 710928120,
        "expected_resolution": "return_product",
        "detail": [],
        "date_created": "2022-11-04T12:23:44.000-05:00",
        "last_updated": "2022-11-04T12:23:44.000-05:00",
        "status": "rejected"
    },
    {
        "player_role": "respondent",
        "user_id": 823876519,
        "expected_resolution": "partial_refund",
        "detail": [
            {
                "key": "percentage",
                "value": "50.0"
            },
            {
                "key": "seller_amount",
                "value": "114.52"
            },
            {
                "key": "seller_currency",
                "value": "R$"
            }
        ],
        "date_created": "2022-11-04T12:43:06.000-05:00",
        "last_updated": "2022-11-04T12:43:06.000-05:00",
        "status": "pending"
    }
]

If you send a different amount from the allowed ones, you will get this response:

{
    "message": "Percentage not found 35.0",
    "error": "error checking configuration percentage",
    "status": 400,
    "cause": []
}

In case the seller does not have a partial-refund enabled, it will be:

{
    "message": "Action allow_partial_refund not available for player",
    "error": "bad_request",
    "status": 400,
    "cause": []
}
  • If the partial refund is accepted by the buyer: the claim is closed and the money corresponding to the percentage offered will be returned to the buyer.
  • If the partial_refund is not accepted by the buyer: the expected_resolution partial_refund will have status rejected.

Offer total refund

For claims of type PDD and PNR, with expected_resolution refund and status pending, you can offer a total refund as follows.


Request filtering the above conditions:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/marketplace/claims/$CLAIM_ID/expected_resolutions

Example:

curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/marketplace/claims/950463475/expected_resolutions - d 
{
  "expected_resolution": "refund",
  "detail": {}
}

Response:

{
        "player_role": "complainant",
        "user_id": 710928120,
        "expected_resolution": "return_product",
        "detail": [],
        "date_created": "2022-11-04T12:23:44.000-05:00",
        "last_updated": "2022-11-04T12:23:44.000-05:00",
        "status": "pending"
    }

Response fields

player_role: claim player role.
user_id: claim player ID.
expected_resolution: claim resolution loaded by the player specified in the above parameter. possible values are:


  • refund: the player expects a money refund.
  • product: the player expects to receive the product.
  • change_product: the player expects to change the product.
  • return_product: the player expects to have the product returned with the.
  • allow_partial_refund: the player offers an order amount partial refund.

detail: show us additional information about the expected resolution, for example: which was the percentage seller offer.
date_created: expected resolution creation date.
last_updated: time when the expected resolution was last updated.
status:expected resolution status. It may take one of the following values:


  • pending: the player loaded the expected resolution, but its counterparty has not accepted it yet.
  • accepted: the resolution loaded by the player was accepted by its counterparty or, otherwise, by Mercado Libre's mediator.
  • rejected: the player does not accept the expected resolution.

The claims must be in an expected_resolution: return_product y status: pending.

{
        "player_role": "complainant",
        "user_id": 710928120,
        "expected_resolution": "return_product",
        "detail": [],
        "date_created": "2022-11-04T12:23:44.000-05:00",
        "last_updated": "2022-11-04T12:23:44.000-05:00",
        "status": "rejected"
    }

Considerations

When you offer a total refund, the previous expected_resolution that was next to the seller player_role: complainant must be in status rejected and a new expected_resolution = refund will be created, where status is equal to accepted and the response must be next to the buyer player_role: complainant.


[
    {
        "player_role": "complainant",
        "user_id": 710928120,
        "expected_resolution": "return_product",
        "detail": [],
        "date_created": "2022-11-04T12:23:44.000-05:00",
        "last_updated": "2022-11-04T12:23:44.000-05:00",
        "status": "rejected"
    },
    {
        "player_role": "complainant",
        "user_id": 823876519,
        "expected_resolution": "refund",
        "detail": [],
        "date_created": "2022-11-04T12:43:06.000-05:00",
        "last_updated": "2022-11-04T12:43:06.000-05:00",
        "status": "accepted"
    }
]

When you offer a total refund, the claim will be closed and the money will be returned to the buyer.


Send notifications

When a partial refund offer or a full refund closing is made, the seller will be notified through the marketplace claim topic.


We recommend that you notify the seller when some kind of interaction from the seller is required to continue the resolution flow. For this, there must be a status change of the expected_resolution that is notified to the seller.