Documentación Mercado Libre

Descubre toda la información que debes conocer sobre las APIs de Mercado Libre.
circulos azuis em degrade
Última actualización 07/02/2024

Trabajar con reclamos

Importante:
Si tienes alguna duda como comprador o vendedor, puedes entrar en contacto por el canal de ayuda de Mercado Libre. También encontrarás información sobre pagos, publicaciones, ventas, envíos y mucho más.

El recurso /claims te permitirá obtener el detalle de un reclamo y poder realizar acciones vía API para resolverlos de manera correcta incorporando esta funcionalidad en tu integración.

Notificaciones de reclamos

En Mis aplicaciones, edita tu aplicación y activa el tópico Claims en nuestro feed para informarte siempre que un reclamo haya sido iniciado o recibir alguna interacción. Conoce más información sobre las notificaciones de reclamos.


Buscar reclamos

La búsqueda de reclamos te ayudará a conocer cuáles pertenecen al usuario de un token válido.

Llamada:

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

Respuesta:

{
    "paging": {
        "offset": 0,
        "limit": 30,
        "total": 170
    },
    "data": [
        {
            "id": 2342342432,
            "type": "mediations",
            "stage": "dispute",
            "status": "closed",
            "parent_id": null,
            "client_id": null,
            "resource_id": 234342342,
            "resource": "order",
            "reason_id": "PDD316",
            "quantity_type": "total",
            "players": [
                {
                    "role": "complainant",
                    "type": "buyer",
                    "user_id": 44234343,
                    "available_actions": [
                        {
                            "action": "recontact",
                            "due_date": "2018-09-29T07:37:16.656-04:00",
                            "mandatory": null
                        }
                    ]
                },
                {
                    "role": "respondent",
                    "type": "seller",
                    "user_id": 2343424,
                    "available_actions": [
                        {
                            "action": "recontact",
                            "due_date": "2018-09-29T07:37:16.656-04:00",
                            "mandatory": null
                        }
                    ]
                },
                {
                    "role": "mediator",
                    "type": "internal",
                    "user_id": 432434324,
                    "available_actions": []
                }
            ],
            "resolution": {
                "reason": "payment_refunded",
                "date_created": "2018-08-30T07:37:16.656-04:00",
                "benefited": [
                    "complainant"
                ],
                "closed_by": "mediator"
            },
            "labels": [],
            "site_id": "MLM",
            "date_created": "2018-08-25T15:57:55.588-04:00",
            "last_updated": "2018-08-30T07:37:16.839-04:00"
        } 
]}
Nota:
El campo “quantity_type” inicialmente sólo mostrará el valor “total” y en el futuro se visualizará el valor “partial”. Indica si una devolución corresponde a todos los productos de la orden o solo algunos.


Filtrar reclamos

Los parámetros disponibles para los filtros son:
- id
- type
- stage
- status
- resource: order, shipment, payment o purchase.
- resource_id: es el id del recurso en que se crea el reclamo y debe ser utilizado en conjunto con el parámetro anterior.
- reason_id
- site_id
- players.role: complainant o respondent.
- players.user_id: está relacionado al parámetro anterior.
- parent_id
- date_created
- order_id
- last_updated
- offset
- limit

Por ejemplo, si deseas filtrar por stage y status:

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

Por ejemplo también, si deseas filtrar por fecha:

curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/search?stage=dispute&status=opened&range=date_created:after:2020-09-26T14:52:14.000-04:00,before:2020-09-27T14:52:14.000-04:00&sort:desc


Ordenar reclamos

Añade el parámetro sort con el respectivo campo que desea y si la orden debe ser ascendente o decreciente (&sort=:asc|desc) Por ejemplo, para ordenar por fecha de actualización:

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


Parámetros

La respuesta de un GET al recurso /claims da como resultado los siguientes parámetros:

  • id: ID del reclamo.
  • type: Tipo de reclamo. Puede tomar alguno de los siguientes valores:
    • mediations: reclamo entre comprador y vendedor.
    • cancel_purchase: cancelación de compra por parte del comprador.
    • return: devolución de producto. En este caso, no hay mensajes. Para tratar devoluciones, siga la documentación Trabajar con Devoluciones.
    • cancel_sale: cancelación de compra por parte del vendedor.
      El status siempre va a ser "closed".
      El stage siempre va a ser "none".
      El rol complainant siempre va a ser el type seller, collector o sender dependiendo el resource.
  • change: cambios de producto. Indica que se va a realizar un cambio del producto.
  • stage: Etapa del reclamo. Puede tomar alguno de los siguientes valores:
    • claim: etapa de reclamo donde intervienen el comprador y el vendedor.
    • dispute: etapa de mediación donde interviene un representante de Mercado Libre.
    • recontact: etapa en la que alguna de las partes se contacta luego de cerrado el reclamo/disputa.
    • none: no aplica.
  • status: Estado del reclamo. Puede tomar dos valores: opened y closed.
  • parent_id: ID de otro reclamo del que depende.
  • resource: Identificador del recurso sobre el que se crea el reclamo. Puede ser:
    • payment
    • order
    • shipment
    • purchase
  • resource_id: ID del recurso sobre el que se crea el reclamo y depende del parámetro anterior.
  • players: Lista de los actores que participan del reclamo con sus respectivas acciones y tiempos disponibles.
    • role: rol dentro del reclamo. Puede ser:
      complainant: persona que reclama.
      respondent: persona a quién le reclaman.
      mediator: persona que interviene para ayudar a solucionar el problema.
    • type: rol que ocupa la persona sobre la operación que se está reclamando.

      Puede variar de acuerdo con el resource.
      • Payment: comprador o collector.
      • Order: comprador o vendedor.
      • Shipment: receptor o remitente.
    • user_id: ID del type del parámetro anterior.
    • available_actions: lista de acciones que pueden ejecutar cada una de las partes intervinientes:
    • action: acciones posibles de realizarse. Para el vendedor serán:
    • send_message_to_complainant: enviar mensaje para el comprador (con o sin anexos).
      send_message_to_mediator: enviar mensaje para el mediador (con o sin anexos).
      recontact (no disponible aún): reabrir un reclamo ya cerrado, por medio de una interacción, como un mensaje.
      refund: devolver el dinero del comprado. Debe ser realizado por el front de Mercado Libre o Mercado Pago.
      open_dispute: iniciar una mediación.
      send_potential_shipping: enviar una promesa de post, una fecha.
      add_shipping_evidence: publicar una evidencia de que el producto fue enviado.
      send_attachments: enviar mensaje con adjuntos.
      allow_return_label: generar etiqueta de devolución.
      allow_return: generar etiqueta de devolución.
      send_tracking_number: enviar el número de rastreo de envío (tracking number).

      • due_date: tiempo límite para realizar la acción.
      • mandatory: este campo en true indica que la acción es obligatoria y debe ser realizada dentro del tiempo informado.
    • resolution: forma de resolución del reclamo.
    • labels: etiquetas del reclamo, por ejemplo, indica si el reclamo afecta la reputación o no.
    • site_id: ID del site donde se desarrolla el reclamo.
    • date_created: fecha de creación del reclamo.
    • last_updated: fecha de la última actualización del reclamo.

    La respuesta de un GET de messages del recurso /claim devuelve una lista con los siguientes parámetros:

    • sender_role: player que envió el mensaje.
    • receiver_role: player hacia quién va dirigido el mensaje.
    • attachments: listado de adjuntos del mensaje.

        filename: nombre del archivo adjunto hasheado.
        original_filename: nombre real del adjunto.
        size: tamaño del archivo en Bytes.
        type: tipo de archivo.
        date_created: fecha de carga del adjunto.

    • stage: etapa en la que se envió el mensaje.
    • date_created: fecha en la que se creó el mensaje.
    • date_read: este valor será null hasta que exista una nueva versión del recurso.
    • message: texto del mensaje.

    Paso a paso para utilizar los recursos

    Ver el detalle de un mensaje

    Llamada:

    curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID

    Ejemplo:

    curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/950700111

    Respuesta:

    {
        "id": 950700111,
        "type": "mediations",
        "stage": "claim",
        "status": "closed",
        "parent_id": null,
        "client_id": null,
        "resource_id": 1656223086,
        "resource": "order",
        "reason_id": "PDD-0",
        "quantity_type": "total",
        "players": [
            {
                "role": "complainant",
                "type": "buyer",
                "user_id": 271942703,
                "available_actions": [
                    {
                        "action": "recontact",
                        "due_date": "2018-04-07T10:35:29.000-0400",
                        "mandatory": false
                    }
                ]
            },
            {
                "role": "respondent",
                "type": "seller",
                "user_id": 271959653,
                "available_actions": [
                    {
                        "action": "recontact",
                        "due_date": "2018-04-07T10:35:29.000-0400",
                        "mandatory": false
                    }
                ]
            }
        ],
        "resolution": {
            "reason": "item_returned",
            "date_created": "2018-03-08T10:35:29.269-0400",
            "decision": [
                "complainant",
                "respondent"
            ],
            "closed_by": "mediator"
        },
        "coverages": [
            {
                "type": "bpp",
                "benefited": "complainant",
                "amount": 194.99,
                "resource": "bpp",
                "resource_id": 224635193,
                "date_created": "2018-03-08T10:35:30.000-0400",
                "costs": [
                    {
                        "role": "respondent",
                        "amount": 194.99,
                        "date_created": "2018-03-08T10:35:30.000-0400"
                    }
                ]
            },
            {
                "type": "return_label",
                "benefited": "complainant",
                "amount": 144.99,
                "resource": "bpp",
                "resource_id": 224635218,
                "date_created": "2018-03-08T10:38:28.000-0400",
                "costs": [
                    {
                        "role": "mediator",
                        "amount": 144.99,
                        "date_created": "2018-03-08T10:38:28.000-0400"
                    },
                    {
                        "role": "respondent",
                        "amount": 0,
                        "date_created": "2018-03-08T10:38:28.000-0400"
                    }
                ]
            }
        ],
        "labels": [
            {
                "name": "reputation",
                "value": "avoid",
                "comments": null,
                "admin_id": null,
                "date_created": "2018-03-08T09:56:00.078-0400"
            },
            {
                "name": null,
                "value": null,
                "comments": null,
                "admin_id": null,
                "date_created": "2018-03-08T09:56:00.078-0400"
            },
            {
                "name": null,
                "value": null,
                "comments": null,
                "admin_id": null,
                "date_created": "2018-03-08T09:56:00.078-0400"
            },
            {
                "name": "return_label",
                "value": "charged",
                "comments": null,
                "admin_id": null,
                "date_created": "2018-03-08T09:56:00.078-0400"
            }
        ],
        "site_id": "MLA",
        "date_created": "2018-03-08T09:56:00.078-0400",
        "last_updated": "2018-03-08T10:38:27.999-0400"
    }

    Obtener todos los mensajes de un reclamo

    Llamada:

    curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID/messages

    Ejemplo:

    curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/950463475/messages

    Respuesta:

    [{
            "sender_role": "respondent",
            "receiver_role": "complainant",
            "attachments": [{
                "filename": "fa8d559e-b6c9-4a9d-9824-aba4607bd869_271959653.jpg",
                "original_filename": "camiseta promocional 6555 rosa.jpg",
                "size": 5434,
                "type": "image/jpeg",
                "date_created": "2018-03-08T16:59:25.936-0400"
            }],
            "status": "moderated",
            "moderation": {
                "status": "rejected",
                "reason": "OUT_OF_PLACE_LANGUAGE",
                "source": "online",
                "date_moderated": "2020-12-05T20:01:46.000Z"
            },
            "stage": "claim",
            "date_created": "2018-03-08T16:59:25.936-0400",
            "message": "Este es un mensaje de test del respondent al complainant"
        },
        {
            "sender_role": "complainant",
            "receiver_role": "respondent",
            "attachments": [],
            "status": "available",
            "moderation": {
                "status": "clean",
                "reason": "",
                "source": "online",
                "date_moderated": "2020-12-05T20:01:46.000Z"
            },
            "stage": "claim",
            "date_created": "2018-03-08T10:40:02.602-0400",
            "message": "Test pdd"
        }
    ]
    Nota:
    Solo se podrán ver los mensajes moderados propios, con el status correspondiente en “moderated”. Los mensajes provenientes de la contraparte que fueron moderados serán filtrados.

    Campos de respuesta

    • status: available | moderated | rejected | pending_translation.
    • moderation.status: resultado del proceso de moderación. Posibles valores:
      clean: el mensaje está limpio.
      rejected: el mensaje fue moderado.
      pending: la moderación está en proceso.
      non_moderated: no aplicó la moderación. Por ejemplo: casos antiguos. .
    • moderation.date_moderated: fecha en la cual se realizó la moderación.
    • moderation.source: modalidad de la moderación. Posibles valores:
      online: se modera durante la instancia de creación del mensaje. Única modalidad actualmente. .
    • moderation.reason: razón por la cual se moderó el mensaje. Posibles valores:
      OUT_OF_PLACE_LANGUAGE: lenguaje inapropiado.

    • Responder mensajes y adjuntar archivos

      Post de Attachment

      Llamada:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID/attachments -F file=$FILE_PATH
      Notas:
      - El POST debe realizarse como form.data con file = ubicación del archivo.
      - Podrán intercambiarse fotos, manuales de instrucciones, facturas y demás archivos adjuntos en JPG, PNG y PDF de hasta un tamaño máximo de 5 MB.
      -El nombre del archivo no puede tener más de 125 caracteres y estar compuesto solo por los siguientes caracteres: Letras, números, punto, guion medio, guion bajo ([a-zA-Z0-9._\s-])

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/950463475/attachments -H 'content-type: multipart/form-data;  -F 'file=@/Users/user/Desktop/file.jpg'

      Respuesta:

      {
          "user_id": 271959653,
          "filename": "fa8d559e-b6c9-4a9d-9824-aba4607bd869_271959653.jpg",
      }

      Post de Message con el attach anterior

      Llamada:

      curl -X POST "https://api.mercadolibre.com/v1/claims/{claim_id}/actions/message?access_token=$ACCESS_TOKEN&application_id=$APPLICATION_ID"
      Nota:
      En la lista de adjuntos se mostrarán todos los devueltos en el POST anterior asociados al mensaje separados por coma.

      Ejemplo:

      
      curl -X POST "https://api.mercadolibre.com/v1/claims/950463475/actions/message?access_token=$ACCESS_TOKEN&application_id=$APPLICATION_ID" -H 'Content-Type: application/json'  \
       -d '{ \
        "receiver_role": "complainant", \
        "message": "Este es un mensaje de test del respondent al complainant", \
        "attachments": [ \
          "fa8d559e-b6c9-4a9d-9824-aba4607bd869_271959653.jpg" \
        ] \
      }'

      Respuesta:

      {"id":1817133310}
      

      Enviar mensajes sin adjuntos


      Llamada:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/{claim_id}/messages

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json'  \
       -d 
      { \
        "receiver_role": "complainant", \
        "message": "Este es un mensaje de test del respondent al complainant", \
      }
      https://api.mercadolibre.com/v1/claims/950463475/messages

      Respuesta:

      {
         "execution_response": {
             "id": 0
         },
      "new_state": {
         "name": "pdd_opened",
         "modifiers": {
             "send_message_turn":"complainant",
             "optional_refund": "denied",
             "partial_refund": "denied",
             "return_condition": "allowable"
         }
      }
      }

      Descargar el archivo

      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID/attachments/$ATTACH_ID/download

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/1022718940/attachments/0f2d81a2-c489-435e-96af-59688ad3d8f4_305860144.jpeg/download

      Obtener información del archivo


      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID/attachments/$ATTACH_ID

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/1022718940/attachments/0f2d81a2-c489-435e-96af-59688ad3d8f4_305860144.jpeg

      Respuesta:

      {
          "filename": "0f2d81a2-c489-435e-96af-59688ad3d8f4_305860144.jpeg",
          "original_filename": "casa.jpeg",
          "size": 10080,
          "date_created": "2018-07-30T12:25:18.133-04:00",
          "type": "image/jpeg"
      }

      Solicitar mediación

      Llamada:

      curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID

      Ejemplo:

      curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' -d 
      {
          "stage": "dispute"
      }
      https://api.mercadolibre.com/v1/claims/950463475

      Respuesta:

      {
          "id": 950463475,
          "type": "mediations",
          "stage": "dispute",
          "status": "opened",
          "parent_id": null,
          "client_id": null,
          "resource_id": 1656273684,
          "resource": "order",
          "reason_id": "PDD-0",
          "players": [
              {
                  "role": "complainant",
                  "type": "buyer",
                  "id": 271942703,
                  "available_actions": []
              }
          ],
          "resolution": null,
          "coverages": [],
          "labels": [
              {
                  "name": null,
                  "value": null,
                  "comments": null,
                  "admin_id": null,
                  "date_created": "2018-03-08T10:40:02.390-0400"
              },
              {
                  "name": null,
                  "value": null,
                  "comments": null,
                  "admin_id": null,
                  "date_created": "2018-03-08T10:40:02.390-0400"
              }
          ],
          "site_id": "MLA",
          "date_created": "2018-03-08T10:40:02.390-0400",
          "last_updated": "2018-03-12T09:17:56.844-0400"
      }
      

      Una vez iniciada la mediación, no pueden enviarse mensajes al comprador. Toda comunicación será realizada por Mercado Libre. Para esto, es necesario cambiar el receiver_role para mediator.

      Llamada:

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

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' -d 
      {
          "receiver_role": "mediator",
          "message": "Teste de resposta"
      }
      https://api.mercadolibre.com/v1/claims/1036274835/messages

      Respuesta:

      {
          "id": 1914089028
      }

      Ver resoluciones esperadas

      Llamada:

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

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/950463475/expected_resolutions

      Respuesta:

      [
          {
              "player_role": "complainant",
              "user_id": 271942703,
              "expected_resolution": "return",
              "date_created": "2018-03-08T11:40:02.489-0300",
              "last_updated": "2018-03-08T11:40:02.489-0300",
              "status": "pending"
          }
      ]
      

      Descripción de parámetros

      • player_role: role del player del reclamo.
      • user_id: ID del player del reclamo.
      • expected_resolution: resolución del reclamo cargada por el player indicado en el parámetro anterior. Los valores posibles son:
         - refund: el player espera que se devuelva el dinero.
         - product: el player espera que le llegue el producto.
         - change_product: el player espera cambiar el producto.
         - return_product: el player espera que se devuelva el producto con la posterior devoluvión del dinero.
      • date_created: fecha de creación de la resolución esperada.
      • date_created: fecha de última actualización de la resolución esperada.
      • status: estado de la resolución esperada. Puede tomar los siguientes valores:
         - pending: el player cargó la resolución esperada pero no aún no fue aceptada por la contraparte.
         - accepted: la resolución cargada por el player fue aceptada por su contraparte o en su defecto por el mediador de Mercado Libre.
         - rejected: la resolución cargada por el player fue rechazada por su contraparte y en su defecto cargó una nueva opción de resolución.
      Notas:
      Independientemente de las resoluciones cargadas por los participantes, en determinados casos la resolución final es la define un representante de Mercado Libre en caso que las partes no se pongan de acuerdo.

      Reembolso parcial

      El flujo de reembolso parcial está vinculado al proceso de reclamo del comprador, donde dependiendo de las acciones disponibles para el vendedor, es posible ofrecer una solución al reclamo devolviendo parte del dinero pagado por la compra.


      Por eso es necesario que el array available_actions, una de las acciones sea allow_partial_refund, como se muestra en el siguiente ejemplo:

      {
          "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"
      }
      

      Ofrecer reembolso parcial de dinero

      Para ofrecer un reembolso parcial, el reclamo debe ser PDD con expected_resolution: return_product y status pending.


      Calcular valor de la devolución parcial

      Verifica los percentuales de devoluciones disponibles y cuanto es el valor de devolución utilizado en el siguiente recurso.


      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/post-purchase/v1/claims/$claim_id/partial-refund/available-offers

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/post-purchase/v1/claims/5224172034/partial-refund/available-offers

      Respuesta:

      {
           "currency_id": "USD"
          "available_offers":
          [
              {
                  "amount": 90.0,
                  "percentage": 90
              },
              {
                  "amount": 80.0,
                  "percentage": 80
              },
              {
                  "amount": 70.0,
                  "percentage": 70
              },
              {
                  "amount": 60.0,
                  "percentage": 60
              },
              {
                  "amount": 50.0,
                  "percentage": 50
              },
              {
                  "amount": 40.0,
                  "percentage": 40
              },
              {
                  "amount": 30.0,
                  "percentage": 30
              },
              {
                  "amount": 20.0,
                  "percentage": 20
              }
          ]
      }
      

      Campos de la respuesta

      • currency_id: moneda.
      • amount: valor de la devolución.
      • percentage: percentual de devolución representando el valor (amount).

      Elija el porcentaje para la devolución: si no envía un porcentaje de reembolso, se asignará por defecto default_percentege = 50.

      Nota:
      Cuando ofrezcas reembolso parcial, el campo expected_resolution que estaba del lado del vendedor player_role: complainant será rechazado y se creará expected_resolution=partial_refund, donde el estado será pending y la respuesta estará del lado del comprador (player_role: respondent).

      Llamada:

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

      Ejemplo:

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

      Respuesta:

      [
          {
              "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"
          }
      ]

      Si envía un valor distinto de los permitidos, recibirá esta respuesta:

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

      Si el vendedor no tiene habilitado el reembolso parcial, así será:

      {
          "message": "Action allow_partial_refund not available for player",
          "error": "bad_request",
          "status": 400,
          "cause": []
      }
      
      • Si el reembolso parcial es aceptado por el comprador, el reclamo se cerrará y se devolverá al comprador el dinero correspondiente al porcentaje ofrecido.
      • Si el reembolso parcial no es aceptado por el comprador, la resolución de reembolso parcial esperado tendrá estado rechazado.

      Ofrecer devolución total del dinero

      En los casos que existe una available_actions como refund, se puede utilizar el siguiente recursos para generar la devolución total del dinero al comprador a través del reclamo.


      Llamada:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/post-purchase/v1/claims/$claim_id/expected-resolutions/refund

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' https://api.mercadolibre.com/post-purchase/v1/claims/5224172034/expected-resolutions/refund

      Respuesta:

      {
              "player_role": "complainant",
              "user_id": 1234,
              "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"
      }

      Aceptar la resolución del player

      Llamada:

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

      Ejemplo:

      curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' -d 
      {
          "status": "accepted"
      }
      https://api.mercadolibre.com/v1/claims/950463475/expected_resolutions

      Respuesta:

      [
          {
              "player_role": "complainant",
              "user_id": 271942703,
              "expected_resolution": "change_product",
              "date_created": "2018-03-08T11:40:02.489-0300",
              "last_updated": "2018-03-08T11:40:02.489-0300",
              "status": "accepted"
          }
      ]
      
      Notas:
      -En caso de que el “respondent” acepte la resolución del “complainant”.
      - En los casos que correspondan, Mercado Libre le dará al comprador una etiqueta para devolver el producto.
      - Siempre la resolución a aceptar es la que está pendiente por la contraparte.

      Cargar una nueva resolución

      Llamada:

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

      Ejemplo:

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

      Respuesta:

      [
          {
              "player_role": "complainant",
              "user_id": 271942703,
              "expected_resolution": "change_product",
              "date_created": "2018-03-07T11:40:02.489-0300",
              "last_updated": "2018-03-08T11:40:02.489-0300",
              "status": "rejected"
          },
      {
              "player_role": "respondent",
              "user_id": 271944560,
              "expected_resolution": "return_product",
              "date_created": "2018-03-08T11:40:02.489-0300",
              "last_updated": "2018-03-08T11:40:02.489-0300",
              "status": "accepted"
          }
      ]
      Nota:
      En el ejemplo, el vendedor rechaza hacer el cambio de producto que quiere el comprador pero acepta que le devuelva el producto y en su defecto que se le devuelva el dinero al comprador.

      El tipo de reclamo interfiere directamente con las soluciones que se pueden proponer. Hay reclamos del tipo PNR (pagado y no recibido) y PDD (producto defectuoso). Para identificar el tipo de reclamo, verifica las 3 primeras letras del campo reason_id. Por ejemplo, si en el campo la información es "PNR3430", entonces el reclamos es del tipo PNR.

      De esta manera, para los reclamos del tipo PNR, debemos utilizar:

      - refund: devolución del dinero.

      - product: envío del producto.

      Si el comprador elige product, el vendedor puede elegir product o refund. Pero si el comprador elige refund, el vendedor debe aceptar esa resolución. Algo similar ocurre con los casos PDD:

      - return_product: devolución del producto con devolución del dinero.

      - change_product: cambio del producto.

      Si el comprador elige change_product, el vendedor puede elegir change_product o return_product. Pero si el comprador elige return_product debe aceptar esa resolution.
      Las resoluciones refund y return_product hacen referencia a que el comprador quiere la devolución del dinero, por este motivo solo puede aceptar esa resolución.
      Aceptar o proponer la opción de refund no devolverá el pago. Hoy, vía API de reclamos, todavía no es posible realizar esta acción.
      Los casos del tipo PDD donde la compra tiene Mercado Envíos y el status del envío está 'delivered' cuando el seller acepta la resolución, se genera una etiqueta para que el comprador haga la devolución del producto. Si la resolución es la devolución del dinero, esta se va a realizar cuando el envío return pase a shipped o delivered.


      For purchases made with ME2:

      Las soluciones para el tipo de reclamo PDD generarán una etiqueta para que el comprador devuelva el producto. Para que esto ocurra, el status del pedido que originó el reclamo debe ser delivered.

      Si la solución elegida es return_product, la devolución de dinero será solo cuando la etiqueta generada tenga el status shipped o delivered, según las validaciones internas.

      Para identificar si la compra es con ME2, revisa la API de Envíos. La información estará en el campo Mode.


      Obtener evidencias del reclamo

      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/$CLAIM_ID/evidences

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/v1/claims/949903015/evidences
      Nota:
      Actualmente solo existe la carga de evidencia de envío que realiza el vendedor.

      Respuesta:

      [
          {
              "attachments": [],
              "type": "shipping_evidence",
              "date_shipped": "2018-03-07T05:00:00Z",
              "date_delivered": null,
              "destination_agency": null,
              "receiver_email": null,
              "receiver_id": null,
              "receiver_name": null,
              "shipping_company_name": "servientrega",
              "shipping_method": "mail",
              "tracking_number": "132456787"
          }
      ]

      Cargar evidencias de envíos

      Llamada:

      curl -X POST "https://api.mercadolibre.com/v1/claims/{claim_id}/actions/evidences?access_token=$ACCESS_TOKEN"

      Ejemplo:

      
      curl -X POST "https://api.mercadolibre.com/v1/claims/949903015/actions/evidences?access_token=$ACCESS_TOKEN" -d {"attachments": [],"type": "shipping_evidence", "date_shipped": "2018-03-07T05:00:01.858-03:00", "shipping_company_name": "servientrega", "shipping_method": "mail" } 

      Respuesta:

      
      [
          {
              "attachments": [],
              "type": "shipping_evidence",
              "date_shipped": "2018-03-07T05:00:00Z",
              "date_delivered": null,
              "destination_agency": null,
              "receiver_email": null,
              "receiver_id": null,
              "receiver_name": null,
              "shipping_company_name": "servientrega",
              "shipping_method": "mail",
              "tracking_number": "132456787"
          }
      ]
      

      Cargar evidencias de envíos

      Cuando el comprador abre un reclamo para recibir su producto o tener una solución al respecto, y el vendedor ya envió su producto y tiene evidencias, deberá utilizar el siguiente recurso.

       

      Campos del recurso

      type: es el tipo de demostración. Los valores esperados para este campo son:
      shipping_evidence cuando el vendedor ya tiene la prueba de envío o handling_shipping_evidence que debe usarse cuando existe un previsión de publicaciones.
      shipping_method: refiere a cómo enviaron el producto, por correo, encomienda (por un transportista), entrega personal (por una persona) o por email (correo electrónico).
      shipping_company_name: debes ingresar el nombre del transportista.
      tracking_number
      : ingrese el número de seguimiento.
      date_shipped: fecha de envío.
      date_delivered: fecha de entrega.
      destination_agency: nombre de la agencia de destino.
      receiver_name: nombre del destinatario.
      receiver_id: documento de quién recibió el producto.
      attachments: archivos. 
      receiver_email: correo electrónico del destinatario del pedido digital.
      handling_date: fecha de publicación. 

      Notes:
      Todas las fechas deben usarse en los siguientes formatos:
      - Formato largo: aaaa-MM-dd'T'HH: mm: ss.SSSZ. Ej: 2019-08-06T14: 00: 00.000-0400;
      - Formato corto: aaaa-MM-dd. Ej: 2019-08-06
      Cada tipo de envío tiene campos obligatorios, síguelos según corresponda:

      Entrega por correo

      Campos obligatorios: "shipping_company_name", "date_shipped"  
      Campos opcionales: "tracking_number", "attachments"
      Llamada:

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

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -d 
      {
          "type": "shipping_evidence",
          "shipping_method": "mail",
          "shipping_company_name": "Correios",
          "tracking_number": "XX123456789XX",
          "date_shipped": "2018-03-07T05:00:01.858-03:00",
          "attachments": ["38f4e399-0f18-41e4-8f48-91aecd2dee1a_419059118.png"]
      }
      https://api.mercadolibre.com/v1/claims/949903015/evidences

      Respuesta:

      [
          {
              "attachments": [
                  {
                      "filename": "38f4e399-0f18-41e4-8f48-91aecd2dee1a_419059118.png",
                      "original_filename": "Captura de Tela 2019-07-30 a?s 09.45.40.png",
                      "size": 63337,
                      "date_created": "2019-08-21T09:33:02.325-04:00",
                      "type": "image/png",
                      "file_url": "/mediations/claims/attachments/render/193294183"
                  }
              ],
              "date_shipped": "2018-03-07T04:00:01.858-04:00",
              "date_delivered": null,
              "destination_agency": null,
              "receiver_email": null,
              "receiver_id": null,
              "receiver_name": null,
              "shipping_company_name": "Correios",
              "shipping_method": "mail",
              "tracking_number": "XX123456789XX",
              "type": "shipping_evidence"
          }
      ]
      

       

      Entrega por encomienda

      Campos obligatorios: "shipping_company_name", "destination_agency", "date_shipped", "receiver_name"
      Campos opcionales: "receiver_id", "tracking_number", "date_delivered", "receiver_email", "attachments"
      Llamada:

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

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -d 
      {
          "type": "shipping_evidence",
          "shipping_method": "entrusted",
          "shipping_company_name": "Total",
          "destination_agency": "Agencia",
          "date_shipped": "2018-08-17T05:00:01.858-03:00",
          "receiver_name": "Jose da Silva",
          "receiver_id": "12345678",
          "tracking_number": "XX123456789XX",
          "attachments": []
      }
      https://api.mercadolibre.com/v1/claims/949903016/evidences

      Respuesta:

      [
          {
              "attachments": [],
              "date_shipped": "2018-08-17T04:00:01.858-04:00",
              "date_delivered": null,
              "destination_agency": "Agencia",
              "receiver_email": null,
              "receiver_id": 12345678,
              "receiver_name": "Jose da Silva",
              "shipping_company_name": "Total",
              "shipping_method": "mail",
              "tracking_number": "XX123456789XX",
              "type": "shipping_evidence"
          }
      ]

       

      Entrega en mano

      Campos obligatorios: "date_delivered" 
      Campos opcionales: "attachments"
      Llamada:

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

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -d 
      {
          "type": "shipping_evidence",
          "shipping_method": "personal_delivery",
          "date_delivered": "2018-03-07T05:00:01.858-03:00",
          "attachments": []
      }
      https://api.mercadolibre.com/v1/claims/949903017/evidences

      Respuesta:

      [
          {
              "attachments": [
                  {
                      "filename": "38f4e399-0f18-41e4-8f48-91aecd2dee1a_419059118.png",
                      "original_filename": "Captura de Tela 2019-07-30 a?s 09.45.40.png",
                      "size": 63337,
                      "date_created": "2019-08-21T09:39:06.316-04:00",
                      "type": "image/png",
                      "file_url": "/mediations/claims/attachments/render/193294183"
                  }
              ],
              "date_shipped": null,
              "date_delivered": "2018-03-07T04:00:01.858-04:00",
              "destination_agency": null,
              "receiver_email": null,
              "receiver_id": null,
              "receiver_name": null,
              "shipping_company_name": null,
              "shipping_method": "personal_delivery",
              "tracking_number": null,
              "type": "shipping_evidence"
          }
      ]
      

       

      Entrega por email

      Campos obligatorios: receiver_email", "date_shipped
      Campos opcionales: "attachments".
      Llamada:

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

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' -d 
      {
          "type": "shipping_evidence",
          "shipping_method": "email",
          "receiver_email": "teste@teste.com.br",
          "date_shipped": "2018-03-07T05:00:01.858-03:00",
          "attachments": []
      } 
      https://api.mercadolibre.com/v1/claims/949903018/evidences

      Respuesta:

      [
          {
              "attachments": [
                  {
                      "filename": "38f4e399-0f18-41e4-8f48-91aecd2dee1a_419059118.png",
                      "original_filename": "Captura de Tela 2019-07-30 a?s 09.45.40.png",
                      "size": 63337,
                      "date_created": "2019-08-21T09:44:43.908-04:00",
                      "type": "image/png",
                      "file_url": "/mediations/claims/attachments/render/193294183"
                  }
              ],
              "date_shipped": "2018-03-07T04:00:01.858-04:00",
              "date_delivered": null,
              "destination_agency": null,
              "receiver_email": "teste@teste.com.br",
              "receiver_id": null,
              "receiver_name": null,
              "shipping_company_name": null,
              "shipping_method": "email",
              "tracking_number": null,
              "type": "shipping_evidence"
          }
      ] 

      Hay casos en que los productos aún no se enviaron, pero el vendedor tiene la intención de enviar y ya tiene una fecha prevista para hacerlo. Entonces, puede utilizar este recurso:

      Llamada:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' "https://api.mercadolibre.com/v1/claims/$CLAIM_ID/evidences"

      Ejemplo:

      curl -X POST -H 'Authorization: Bearer $ACCESS_TOKEN' "https://api.mercadolibre.com/v1/claims/949903019/evidences" -d {"type": "handling_shipping_evidence", "handling_date": "2019-08-23" } 

      Respuesta:

      [
          {
              "handling_date": "2019-08-23T22:59:59.000-04:00",
              "type": "handling_shipping_evidence"
          }
      ]
      
      Nota:
      Cuando el stage del reclamo sobre un producto está en discusión/mediación, el vendedor no podrá enviar la prueba del envío. Una vez enviado algún tipo de prueba, no podrá cambiarla. Para esto, te recomendamos completar toda la información posible.

      Historial de estados y acciones del reclamo

      Accede al historial de estados y escenario por el que pasó el reclamo, también puedes ver el historial de acciones que se tomaron.

      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' "https://api.mercadolibre.com/v1/claims/$CLAIM_ID/status_history"

      ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' "https://api.mercadolibre.com/v1/claims/950463475/status_history"

      Respuesta:

      [
          {
              "stage": "dispute",
              "status": "closed",
              "date": "2018-03-12T10:33:01.858-03:00",
              "change_by": "mediator"
          },
          {
              "stage": "dispute",
              "status": "opened",
              "date": "2018-03-12T10:17:56.844-03:00",
              "change_by": "respondent"
          },
          {
              "stage": "claim",
              "status": "opened",
              "date": "2018-03-08T11:40:02.390-03:00",
              "change_by": "complainant"
          }
      ]

      Descripción de parámetros

      • action_id: ID de la acción ejecutada.
      • action_name: acción ejecutada.
      • role: player que ejecutó la acción.
      • claim_stage: etapa en la cual se ejecutó la acción.
      • claim_status: estado de la etapa en la que se ejecutó la acción.
      • date_created: fecha en la que se ejecutó la acción.

      Obtener detalle del motivo por el que se inició el reclamo

      Llamada:

      curl - X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/post-purchase/sites/$SITE_ID/v2/reasons/$REASON_ID
      

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/post-purchase/sites/MLA/v2/reasons/PDD9502

      Respuesta:

      {
       "id": "PDD9502",
       "flow": "unification_delivered",
       "name": "repentant_buyer",
       "detail": "Me arrepentí de la compra",
       "position": 101,
         "filter": {
          "group": [
            "expiring_food",
            "expiring_health"
          ],
          "site_id": [
            "MLA"
          ]
        },
        "settings": {
          "allowed_flows": [
            "returns"
          ],
          "expected_resolutions": [
            "change_product",
            "return_product"
          ],
          "rules_engine_triage": [
            "repentant"
          ]
        },
        "parent_id": "PDD9501",
        "children_title": null,
        "status": "active",
        "date_created": "2022-01-04T17:09:50.793Z",
        "last_updated": "2022-01-04T17:09:50.793Z"
      }

      Cómo identificar si un reclamo afecta la reputación

      El recurso /affects-reputation permite al integrador identificar si un determinado reclamo afecta o no la reputación del vendedor realizando la siguiente llamada.


      Llamada:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/post-purchase/v1/claims/$CLAIM_ID/affects-reputation

      Ejemplo:

      curl -X GET -H 'Authorization: Bearer $ACCESS_TOKEN' https://api.mercadolibre.com/post-purchase/v1/claims/5224172034/affects-reputation

      Respuesta:

      {
          "affects_reputation": affected,
          "has_incentive": true,
          "due_date": "2023-04-19T00:00-04:00"
      
      }

      Campos de la respuesta:

      • affects_reputation: informa si el reclamo afecta la reputación del vendedor. Posibles valores: affected/not_affected/not_applies.
      • has_incentive: en los casos en que el reclamo está abierto, el campo va tener el resultado true para que el vendedor pueda hacer la tratativa del reclamo. En caso de que esté cerrado, va estar false y el vendedor tendrá el resultado si impacta o no la reputación.
      • due_date: fecha límite para solucionar el reclamo.

      Siguiente: Trabajar con Devoluciones.