Através da preferência, é possível criar um pagamento com um envio associado. Dessa forma, você poderá oferecer aos clientes entregas em domicílio dos produtos adquiridos, aproveitando a logística do Mercado Livre sem esforços extras por parte do seu negócio.
A criação de pagamentos com envios está disponível apenas para integradores que tenham autorização do Mercado Pago. Se você não possui essa funcionalidade, pode solicitá-la ao seu Assessor Comercial.
Para criar um pagamento com um envio associado, crie uma preferência enviando uma requisição POST ao endpoint /checkout/preferences, incluindo seu Access TokenChave privada da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Dados da integração > Testes > Credenciais de teste. e os nós items e shipments, conforme indicado na tabela abaixo.
Referência que você pode sincronizar com seu sistema de pagamentos para identificar o envio. Este campo deve ter no máximo 64 caracteres e conter apenas números, letras, hífens (-) e sublinhados (_). Caracteres especiais como ([ ], (), '', @) não são permitidos.
String
Opcional
items
Informações sobre os itens vendidos que serão enviados.
Array
Obrigatório
items.title
Título do item que será exibido durante o processo de pagamento, no checkout, atividades e e-mails.
String
Obrigatório
items.description
Descrição do item.
String
Opcional
items.picture_url
URL da imagem do item.
String
Opcional
items.quantity
Quantidade de itens. Esta propriedade é utilizada para calcular o custo total da compra.
Number
Obrigatório
items.currency_id
Identificador único da moeda envolvida na transação. O único valor possível é o peso mexicano (MXN).
String
Opcional
items.unit_price
Preço unitário do item. Esta propriedade é usada junto com a propriedade quantity para determinar o custo da compra.
Number
Obrigatório
items.fiscal_data
Objeto que contém os dados fiscais do produto.
Object
Obrigatório para criar envios. Se você enviá-lo, deve incluir também o atributo shipments.
items.fiscal_data.sat
Categoria SAT do item. Consulte os valores possíveis acessando o seguinte link.
String
Obrigatório
items.fiscal_data.sat_measurement_id
Identificador único da unidade de medida do produto.
String
Obrigatório
items.fiscal_data.measurement_unit
Unidade de medida do produto de acordo com as SAT Units
String
Obrigatório
items.fiscal_data.package_id
Identificador do tipo de embalagem do produto.
String
Obrigatório
items.fiscal_data.dangerous_material_id
Identificador para produtos perigosos.
String
Opcional
items.dimensions
Objeto que contém as informações sobre o tamanho do item.
Object
Opcional
items.dimensions.unit
Unidade de medida para o item. Deve ser cm (centímetros).
String
Obrigatório
items.dimensions.height
Altura do item em centímetros.
Number
Obrigatório
items.dimensions.width
Largura do item em centímetros.
Number
Obrigatório
items.dimensions.length
Comprimento do item em centímetros.
Number
Obrigatório
items.dimensions.weight
Peso do item em gramas.
Number
Obrigatório
shipments
Informações do envio.
Object
Obrigatório
shipments.dimensions
Tamanho do pacote, que será utilizado para definir o custo do envio. O formato deve ser cm x cm x cm, g. Se houver mais de um item, seu tamanho deve ser calculado considerando a soma das dimensões de todos os artigos, garantindo sempre que as dimensões máximas permitidas por pacote não sejam excedidas. Consulte as boas práticas para dimensionamento acessando a documentação.
String
Obrigatório
shipments.free_methods_type
Identificador do método de envio. Deve ser enviado apenas ao oferecer envio gratuito, com o valor standard. O envio gratuito só é possível quando o valor da venda é maior que o custo do envio. Caso o custo do envio esteja a cargo do comprador, o campo não deve ser enviado.
String
Opcional
shipments.local_pickup
Indica se deseja oferecer coleta de pacotes em uma agencia. Para esta solução, insira false.
Boolean
Obrigatório
shipments.mode
Modo de envio. Para esta solução, insira me2.
String
Obrigatório
shipments.stock_origin_id
Identificador do endereço de origem do pacote, que deve ser solicitado à equipe do Mercado Pago. Caso haja mais de um endereço de coleta, o stock_origin_id deve ser informado para o endereço de origem.
String
Opcional
shipments.receiver_address
Detalhes do endereço de destino. Seu envio é recomendado para oferecer a melhor experiência de compra e, se necessário, os dados podem ser reutilizados.
Object
Opcional
shipments.receiver_address.zip_code
Código postal do endereço de destino.
String
Opcional
shipments.receiver_address.street_name
Nome da rua de destino.
String
Opcional
shipments.receiver_address.street_number
Número do endereço de destino.
String
Opcional
shipments.receiver_address.floor
Andar do apartamento de destino.
String
Opcional
shipments.receiver_address.apartment
Número do apartamento de destino.
String
Opcional
shipments.receiver_address.neighborhood
Bairro do endereço de destino.
String
Opcional
shipments.receiver_address.city_name
Cidade do endereço de destino.
String
Opcional
shipments.receiver_address.state_name
Estado do endereço de destino.
String
Opcional
shipments.receiver_address.country_name
País do endereço de destino.
String
Opcional
Se a requisição for enviada com sucesso, o pagamento com envio terá sido criado e a resposta será exibida como no exemplo a seguir.
Em caso de necessidade, é possível cancelar o envio criado. Para isso, você deverá cancelar o pagamento ao qual está associado na sua totalidade.
Gerenciar Envios
Se você optar por criar pagamentos com envio, poderá usar nossas APIs de gerenciamento de envios, que permitirão otimizar sua experiência pré e pós-venda.
Nossa API de Cotações permite estimar o valor de um envio com base no volume do pacote e no código postal dos endereços de despacho e destino.
Para cotar um envio, envie um POST ao endpoint /shipping/v1/shipments-rates incluindo seu Access TokenChave privada da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Dados da integração > Testes > Credenciais de teste. e os parâmetros descritos na tabela abaixo. Tenha em conta que só é possível cotar o envio de um pacote por vez.
Valor do pacote a ser enviado. Não inclui o custo estimado de envio.
Number
Obrigatório
packages.quantity
Quantidade de pacotes. O único valor permitido é 1.
Number
Obrigatório
packages.dimensions
Objeto que contém as dimensões do pacote. Os máximos permitidos são: - Cada lado deve ter no máximo 150 cm. - O limite de dimensões totais não deve ultrapassar 330 cm. - O peso máximo é de 30 kg (real ou volumétrico).
Object
Obrigatório
packages.dimensions.height
Altura do pacote em centímetros.
Number
Obrigatório
packages.dimensions.width
Largura do pacote em centímetros.
Number
Obrigatório
packages.dimensions.length
Comprimento do pacote em centímetros.
Number
Obrigatório
packages.dimensions.weight
Peso do pacote em gramas.
Number
Obrigatório
shipping_from.zip_code
Código postal do endereço de origem. Se este valor for informado, será usado para calcular a oferta. Caso contrário, serão aplicados os dados de Envios configurados no Mercado Pago.
String
Opcional
shipping_to.zip_code
Código postal do endereço de destino.
String
Obrigatório
Se a requisição estiver correta, a resposta retornará a cotação do envio, que pode conter mais de uma opção variável em preço e/ou prazo.
Identificador da cotação. Use esse valor como shipment_rate_id ao criar o envio.
String
rates
Lista de cotações para o pacote em função do endereço informado.
Array
options
Lista das opções de cotações disponíveis.
Array
id
Identificador da opção de envio. Use esse valor como option_id ao criar o envio a partir da cotação.
String
base_price
Valor bruto do envio.
Number
price
Valor líquido do envio.
Number
method
Método de entrega. A única resposta possível para este campo é standard, para envios gratuitos.
String
pay_before
Data esperada de pagamento para garantir a promessa de envio gerada.
Date
delivery_promise.shipping_from
Data inicial da promessa de entrega.
String
delivery_promise.shipping_to
Data final da promessa de entrega.
String
delivery_days.from
Mínimo de dias úteis para a promessa de entrega.
Integer
delivery_days.to
Máximo de dias úteis para a promessa de entrega.
Integer
packages.quantity
Quantidade de pacotes cotados.
Number
packages.dimensions
Dimensões do pacote cotado.
Object
packages.dimensions.height
Altura do pacote.
Number
packages.dimensions.width
Largura do pacote.
Number
packages.dimensions.length
Comprimento do pacote.
Number
packages.dimensions.weight
Peso do pacote.
Number
shipping_to.zip_code
Código postal do endereço de destino.
String
shipping_to.city_id
Identificador da cidade do endereço de destino.
String
shipping_to.state_id
Sigla do estado do endereço de destino.
String
shipping_to.country_id
Sigla do país do endereço de destino.
String
Para conhecer os erros que esta solicitação pode retornar, acesse nossa Referência de API.
É possível consultar um envio e obter seus dados completos uma vez criado. Essa consulta permitirá que você acesse o identificador do pacote (packages.id) e o número de rastreamento (tracking_number), entre outros dados.
Para realizá-la, envie um GET com seu Access TokenChave privada da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Dados da integração > Testes > Credenciais de teste. ao endpoint /shipping/v1/shipments/{shipment_id} incluindo o identificador do envio (shipment_id) no path da requisição.
Fase ativa do envio: forward (envio para o cliente) ou reverse (devolução).
String
created_at
Data e hora de criação do envio.
Date
shipping_to
Informação do endereço de destino com detalhes completos do destinatário.
Object
shipping_from
Informação do endereço de origem com detalhes do remetente.
Object
packages
Pacotes incluídos no envio.
Array
packages.id
Identificador do pacote. Use esse valor para gerar etiquetas.
String
packages.dimensions
Dimensões do pacote (altura, comprimento, largura, peso e volume).
Object
packages.items
Artigos incluídos no pacote.
Array
packages.price
Informação de preço do pacote.
Object
packages.tracking_info
Informação de rastreamento do pacote.
Object
packages.tracking_info.tracking_number
Número de rastreamento do pacote. Use esse valor para rastrear o envio.
String
packages.tracking_info.last_status
Último estado registrado do pacote.
String
origin
Informação do endereço de origem.
Object
dispatch_date
Data estimada de despacho do envio.
Object
Com a API de Etiquetas, você poderá gerar as etiquetas que contêm todas as informações necessárias para despachar os pacotes de seus produtos vendidos. Você poderá escolher se deseja que esta etiqueta seja gerada em PDF, ZIP ou ZPL, para download, ou em formato JSON.
Se ao consultar um envio, o parâmetro dispatch-date estiver presente, as etiquetas só poderão ser geradas 24 horas antes da data e hora definidas nesse campo. Acesse Consulta de envios para mais informações.
Para gerar a etiqueta, envie um GET com seu Access TokenChave privada da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Dados da integração > Testes > Credenciais de teste. e os parâmetros indicados na tabela a seguir ao endpoint /shipping/v1/shipments/{id}/packages/{package_id}/label.
Path. Identificador do envio, que pode ser obtido consultando as informações do envio ou através da notificação Webhook.
String
Obrigatório
package_id
Path. Identificador do pacote, que pode ser obtido consultando as informações do envio ou através da notificação Webhook.
String
Obrigatório
X-Content-Type
Header. Formato de saída desejado para a etiqueta. Os formatos possíveis são: pdf, zpl, zip, json.
String
Obrigatório
A resposta pode variar dependendo do formato de saída especificado na requisição, mas sempre conterá um identificador da etiqueta (id) e o conteúdo da mesma (label). Caso tenha sido solicitado que seja gerada em um arquivo PDF, ZIP ou ZPL, conterá o arquivo para download.
json
[
{
"id": 43539204818,
"label": "String"
}
]
Para saber quais erros essa requisição pode retornar, acesse nossa Referência de API.
Com a API de envios, você pode rastrear os pacotes despachados a partir do seu número de rastreamento. Para fazer isso, envie um GET ao endpoint /shipping/v1/shipments-tracking/{tracking_number}, incluindo exclusivamente o número de rastreamento (tracking_number) do pacote no path da requisição.
Se o dado enviado estiver correto, a resposta conterá a informação do pacote juntamente com os eventos do envio, como apresentado na resposta a seguir.
Dimensões do pacote (altura, comprimento, largura, peso e volume).
Object
package.dimensions.height
Altura do pacote.
Number
package.dimensions.width
Largura do pacote.
Number
package.dimensions.length
Comprimento do pacote.
Number
package.dimensions.weight
Peso do pacote.
Number
package.items
Informação dos itens incluídos no pacote.
Array
package.items.title
Título do item enviado no pacote.
String
package.items.description
Descrição do item enviado no pacote.
String
package.items.unit_price
Valor do item enviado no pacote.
Number
package.price
Dados do preço de envio do pacote.
Object
package.price.amount
Valor do envio.
Number
package.price.currency
Moeda utilizada.
String
tracking
Detalhes do histórico do envio.
Array
tracking.type
Em qual direção o envio se move: forward quando o pacote está a caminho do cliente; reverse quando o pacote está retornando ao endereço de origem.
String
tracking.events
Lista de eventos do envio.
Array
tracking.events.status
Estado do evento de envio. Consulte os status possíveis na seção a seguir.
String
tracking.events.date
Data de atualização do estado do evento.
String
tracking.events.event_name
Nome do evento (quando disponível).
String
tracking.events.event_date
Data do evento (quando disponível).
String
Para conhecer os erros que esta requisição pode retornar, dirija-se à nossa Referência de API.
Possíveis status de um envio
A seguir, você pode consultar os possíveis status de um envio junto com sua descrição e associação à direção em que este envio se move.
Status
Descrição
Fase
created
O envio foi criado (após a realização do pagamento).
Forward / Reverse
ready
A etiqueta do envio já pode ser gerada. Quando dispatch-date estiver presente, você só poderá gerar a etiqueta 24 horas antes desta data e horário.
Forward
label_printed
A etiqueta foi gerada.
Forward / Reverse
shipped
O pacote foi coletado e está a caminho do seu destino.
Forward / Reverse
out_for_delivery
O pacote saiu do local de origem para o endereço de destino.
Forward
soon_deliver
O pacote está perto do seu destino.
Forward
delivered
O pacote foi entregue.
Forward
not_delivered
O pacote não foi entregue.
Forward / Reverse
canceled
O envio foi cancelado.
Forward
in_hub
O pacote está em um depósito.
Forward
rejected_in_hub
O pacote foi rejeitado no depósito.
Forward
discarded
O pacote foi descartado e não retornará ao remetente.
Reverse
outbounded
O pacote saiu do depósito.
Forward
impassable_area
A rota do envio tem uma zona intransitável.
Forward
receiver_absent
O destinatário do pacote está ausente.
Forward
refused_delivery
A entrega do pacote foi recusada.
Forward
bad_address
A transportadora não conseguiu encontrar o endereço de destino ou ele não era válido.
Forward / Reverse
damaged
O pacote foi danificado.
Forward / Reverse
lost
O pacote foi perdido.
Forward / Reverse
stolen
O pacote foi roubado.
Forward / Reverse
delayed
O pacote está atrasado.
Forward
estimated_delivery_updated
Data de entrega estimada atualizada.
Forward
returned
O pacote foi devolvido ao remetente.
Reverse
on_route
O pacote está a caminho.
Forward
failed
Falha na inicialização do envio.
-
redirected
O envio foi redirecionado (mudou de fase).
Reverse
stuck
O envio está impedido (falha na mudança de fase).
Forward / Reverse
picked_up
Pacote coletado.
Reverse
carrier_logistic_center_inbound
O pacote entrou em um depósito.
Forward / Reverse
carrier_logistic_center_outbound
O pacote saiu de um depósito.
Forward / Reverse
sender_absent
Vendedor ausente para a coleta.
Reverse
refused_pickup
A coleta do pacote foi recusada.
Forward
sender_not_visited
Não foi possível realizar a coleta do pacote.
Forward
Configurar notificações de envios
É possível configurar notificações Webhooks para receber alertas sobre envios e suas mudanças de status.
Para isso, é necessário indicar as URLs para as quais as mesmas serão enviadas seguindo o passo a passo abaixo:
Acesse Suas integrações e selecione a aplicação integrada com o Checkout Pro para a qual você deseja ativar as notificações.
No menu à esquerda, selecione Webhooks > Configurar notificações e configure a URL que será utilizada para recebê-las.
Selecione a aba Modo produtivo e forneça uma URL HTTPS para receber notificações com sua integração produtiva.
Selecione o evento Envios (Mercado Pago) para receber notificações, que serão enviadas no formato JSON através de um HTTPS POST para a URL especificada anteriormente.
Por fim, clique em Salvar configuração. Isso gerará uma chave secreta exclusiva para a aplicação, utilizada para validar a autenticidade das notificações recebidas, assegurando que elas sejam provenientes do Mercado Pago. Vale ressaltar que essa chave não possui prazo de validade, mas recomenda-se sua renovação periódica como medida de segurança. Para renovar a chave, basta clicar no botão Restabelecer.