# MD for: https://www.mercadopago.com.mx/developers/pt/docs/checkout-pro/additional-settings/payment-with-shipment.md \# Create payment with shipment Through the preference, it is possible to create a payment with an associated shipment. This way, you can offer customers home delivery of purchased products leveraging Mercado Libre's logistics without extra effort from the business. > WARNING > > Creating payments with shipments is only available for integrators who have Mercado Pago authorization. If you don't have this functionality, you can request it from your Sales Advisor. To create a payment with an associated shipment, create a preference by sending a \*\*POST\*\* to the endpoint \[/checkout/preferences\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/preferences/create-preference/post), including your :toolTipComponent\[Access Token\]{content="Private key of the application created in Mercado Pago, used in the backend. You can access it through \*Your integrations > Integration data > Testing > Test credentials\*. The test Access Token starts with the prefix \`APP\_USR\`."} and the \`items\` and \`shipments\` nodes as indicated in the table below. \`\`\`curl curl --location 'https://api.mercadopago.com/checkout/preferences' \\ --header 'Authorization: Bearer \[Access Token\]' \\ --header 'Content-Type: application/json' \\ --data '{ "external\_reference": "External reference 123", "items": \[ { "title": "Product 1", "description": "Product 1 description", "picture\_url": "image.jpg", "quantity": 1, "currency\_id": "MXN", "unit\_price": 100, "fiscal\_data": { "sat": "23241500", "sat\_measurement\_id": "H87", "measurement\_unit": "Piece", "package\_id": "4G", "dangerous\_material\_id": "M2340" }, "dimensions": { "unit": "G", "height": 3, "width": 11, "length": 18, "weight": 100 } }, { "title": "Product 2", "description": "Product 2 description", "picture\_url": "image.jpg", "quantity": 1, "currency\_id": "MXN", "unit\_price": 110, "fiscal\_data": { "sat": "23241500", "sat\_measurement\_id": "H87", "measurement\_unit": "Piece", "package\_id": "4G", "dangerous\_material\_id": "M2340" }, "dimensions": { "unit": "G", "height": 3, "width": 10, "length": 18, "weight": 90 } }, \], "shipments": { "dimensions": "21x15x6.5,360", "free\_methods\_types": \[ { "id": "standard" } \], "local\_pickup": false, "mode": "me2", "stock\_origin\_id": "id", "receiver\_address": { "zip\_code": "06250", "street\_name": "Ex-Hipódromo de Peralvillo", "street\_number": null, "floor": "", "apartment": "", "neighborhood": Colonia, "city\_name": Cuauhtémoc, "state\_name": Ciudad de México, "country\_name": México } } }' \`\`\` | Field | Description | Type | Required | |---|---|---|---| | \`external\_reference\` | Reference that you can synchronize with your payment system to identify the shipment. This field must have a maximum of 64 characters and should only contain numbers, letters, hyphens (-) and underscores (\_). Special characters like (\[ \], (), '', @) are not allowed. | \*String\* | Optional | | \`items\` | Information about the items sold to be shipped. | \*Array\* | Required | | \`items.title\` | Item title that will be displayed during the payment process, in the checkout, activities and emails. | \*String\* | Required | | \`items.description\` | Item description. | \*String\* | Optional | | \`items.picture\_url\` | Item image URL. | \*String\* | Optional | | \`items.quantity\` | Quantity of items. This property is used to calculate the total purchase cost. | \*Number\* | Required | | \`items.currency\_id\` | Unique identifier of the currency involved in the transaction. The only possible value is Mexican pesos (MXN). | \*String\* | Optional | | \`items.unit\_price\` | Unit price of the item. This property is used together with the \`quantity\` property to determine the purchase cost. | \*Number\* | Required | | \`items.fiscal\_data\` | Object containing the product's fiscal data. | \*Object\* | Required to create shipments. If you send it, you must also include the \`shipments\` attribute. | | \`items.fiscal\_data.sat\` | SAT category of the item. Check the possible values by accessing the following \[link\](http://pys.sat.gob.mx/PyS/catPyS.aspx). | \*String\* | Required | | \`items.fiscal\_data.sat\_measurement\_id\` | Unique identifier of the product's unit of measurement. | \*String\* | Required | | \`items.fiscal\_data.measurement\_unit\` | Product unit of measurement according to \[SAT Units\](http://pys.sat.gob.mx/PyS/catUnidades.aspx) | \*String\* | Required | | \`items.fiscal\_data.package\_id\` | Identifier of the product's packaging type. | \*String\* | Required | | \`items.fiscal\_data.dangerous\_material\_id\` | Identifier for dangerous products. | \*String\* | Optional | | \`items.dimensions\` | Object containing information about the item's size. | \*Object\* | Optional | | \`items.dimensions.unit\` | Unit of measurement for the item. Must be \`cm\` (centimeters). | \*String\* | Required | | \`items.dimensions.height\` | Item height in centimeters. | \*Number\* | Required | | \`items.dimensions.width\` | Item width in centimeters. | \*Number\* | Required | | \`items.dimensions.length\` | Item length in centimeters. | \*Number\* | Required | | \`items.dimensions.weight\` | Item weight in grams. | \*Number\* | Required | | \`shipments\` | Shipment information. | \*Object\* | Required | | \`shipments.dimensions\` | Package size, which will be used to define the shipping cost. The format must be \`cm x cm x cm, g\`. If it contains more than one item, its size should be calculated considering the sum of the dimensions of all items, always ensuring that the maximum allowed dimensions per package are not exceeded. Check the best practices for sizing by accessing the \[documentation\](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/additional-settings/best-practices-shipments). | \*String\* | Required | | \`shipments.free\_methods\_type\` | Shipping method identifier. Should only be sent when offering free shipping, with the value \`standard\`. This free shipping is only possible when the sale value is greater than the shipping cost. If the shipping cost is borne by the buyer, the field \*\*should not be sent\*\*. | \*String\* | Optional | | \`shipments.local\_pickup\` | Indicates whether you want to offer package pickup at a branch. For this solution, enter \`false\`. | \*Boolean\* | Required | | \`shipments.mode\` | Shipping mode. For this solution, enter \`me2\`. | \*String\* | Required | | \`shipments.stock\_origin\_id\` | Identifier of the package's origin address, which must be requested from the Mercado Pago team. If there is more than one pickup address, \*\*the \`stock\_origin\_id\`\*\* of the origin address must be informed. | \*String\* | Optional | | \`shipments.receiver\_address\` | Details of the destination address. Sending it is \*\*recommended\*\* to offer the best shopping experience and, if necessary, the data can be reused. | \*Object\* | Optional | | \`shipments.receiver\_address.zip\_code\` | Postal code of the destination address. | \*String\* | Optional | | \`shipments.receiver\_address.street\_name\` | Destination street name. | \*String\* | Optional | | \`shipments.receiver\_address.street\_number\` | Destination address number. | \*String\* | Optional | | \`shipments.receiver\_address.floor\` | Destination apartment floor. | \*String\* | Optional | | \`shipments.receiver\_address.apartment\` | Destination apartment number. | \*String\* | Optional | | \`shipments.receiver\_address.neighborhood\` | Destination address neighborhood. | \*String\* | Optional | | \`shipments.receiver\_address.city\_name\` | Destination address city. | \*String\* | Optional | | \`shipments.receiver\_address.state\_name\` | Destination address state. | \*String\* | Optional | | \`shipments.receiver\_address.country\_name\` | Destination address country. | \*String\* | Optional | If the request is sent successfully, the payment with shipment will have been created and the response will look like the example below. \`\`\`json { "additional\_info": "", "auto\_return": "", "back\_urls": { "failure": "", "pending": "", "success": "" }, "binary\_mode": false, "client\_id": "6607075136335166", "collector\_id": 2681149695, "coupon\_code": null, "coupon\_labels": null, "date\_created": "2025-10-15T15:30:39.775-04:00", "date\_of\_expiration": null, "expiration\_date\_from": null, "expiration\_date\_to": null, "expires": false, "external\_reference": "External reference 123", "id": "2681149695-c464c4e0-1834-4e81-9956-25a3cc1e8db8", "init\_point": "https://www.mercadopago.com.mx/checkout/v1/redirect?pref\_id=2681149695-c464c4e0-1834-4e81-9956-25a3cc1e8db8", "internal\_metadata": null, "items": \[ { "id": "", "category\_id": "", "currency\_id": "MXN", "description": "Product 1 description", "title": "Product 1", "quantity": 1, "unit\_price": 100, "fiscal\_data": { "sat": "23241500", "sat\_measurement\_id": "H87", "measurement\_unit": "Piece", "package\_id": "4G", "dangerous\_material\_id": "M2340" }, "dimensions": { "unit": "G", "height": 3, "width": 11, "length": 18, "weight": 100 } }, { "id": "", "category\_id": "", "currency\_id": "MXN", "description": "Product 2 description", "title": "Product 2", "quantity": 1, "unit\_price": 110, "fiscal\_data": { "sat": "23241500", "sat\_measurement\_id": "H87", "measurement\_unit": "Piece", "package\_id": "4G", "dangerous\_material\_id": "M2340" }, "dimensions": { "unit": "G", "height": 3, "width": 10, "length": 18, "weight": 90 } }, \], "marketplace": "NONE", "marketplace\_fee": 0, "metadata": {}, "notification\_url": null, "operation\_type": "regular\_payment", "payer": { "phone": { "area\_code": "", "number": "" }, "address": { "zip\_code": "", "street\_name": "", "street\_number": null }, "email": "", "identification": { "number": "", "type": "" }, "name": "", "surname": "", "date\_created": null, "last\_purchase": null }, "payment\_methods": { "default\_card\_id": null, "default\_payment\_method\_id": null, "excluded\_payment\_methods": \[ { "id": "" } \], "excluded\_payment\_types": \[ { "id": "" } \], "installments": null, "default\_installments": null }, "processing\_modes": null, "product\_id": null, "preference\_expired": false, "redirect\_urls": { "failure": "", "pending": "", "success": "" }, "sandbox\_init\_point": "https://sandbox.mercadopago.com.mx/checkout/v1/redirect?pref\_id=2681149695-c464c4e0-1834-4e81-9956-25a3cc1e8db8", "site\_id": "MLM", "shipments": { "mode": "me2", "local\_pickup": false, "dimensions": "21x15x6.5,360", "free\_methods": \[\], "free\_methods\_types": \[ { "id": "standard" } \], "default\_shipping\_method": null, "receiver\_address": { "zip\_code": "06250", "street\_name": "Ex-Hipódromo de Peralvillo", "street\_number": null, "floor": "", "apartment": "", "city\_name": "Cuauhtémoc", "state\_name": "Ciudad", "country\_name": "México", "neighborhood": "Colonia" }, "stock\_origin\_id": "id" }, "total\_amount": null, "last\_updated": null, "financing\_group": "" } \`\`\` > WARNING > > The \`sandbox\_init\_point\` field appears in the response, but it is not functional. For integration testing, use \`init\_point\`. If necessary, it is possible to cancel the created shipment. To do so, you must \[cancel the payment\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/create-cancellation/put) to which it is associated in its entirety. ## Manage shipments If you choose to create payments with shipments, you can use our shipment management APIs, which will allow you to optimize your pre and post-sale experience. :::AccordionComponent{title="Rate calculation"} To rate a shipment, send a \*\*POST\*\* to the endpoint \[/shipping/v1/shipments-rates\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/get-shipping-rates/post) including your :toolTipComponent\[Access Token\]{content="Private key of the application created in Mercado Pago, used in the backend. You can access it through \*Your integrations > Integration data > Testing > Test credentials\*. The test Access Token starts with the prefix \`APP\_USR\`."} and the parameters described in the table below. Keep in mind that \*\*only one package can be quoted at a time\*\*. \`\`\`curl curl --location 'https://api.mercadopago.com/shipping/v1/shipments-rates' \\ --header 'Content-Type: application/json' \\ --header 'Authorization: Bearer \[Access Token\]' \\ --data '{ "packages": \[ { "declared\_value": 1500, "quantity": 1, "dimensions": { "weight": 500, "width": 30, "height": 30, "length": 30 } } \], "shipping\_from": { "zip\_code": "06760" }, "shipping\_to": { "zip\_code": "06720" } }' \`\`\` | Field | Description | Type | Required | |---|---|---|---| | \`packages\` | Contains the package information for the shipping rate. | \*Array\* | Required | | \`packages.declared\_value\` | Value of the package to be shipped. Does not include the estimated shipping cost. | \*Number\* | Required | | \`packages.quantity\` | Number of packages. The only allowed value is \`1\`. | \*Number\* | Required | | \`packages.dimensions\` | Object containing the package dimensions. The allowed maximums are: \- Each side must have a \*\*maximum of 150 cm\*\*. \- The total dimension limit \*\*must not exceed 330 cm\*\*. \- The \*\*maximum weight\*\* is \*\*30 kg (actual or volumetric)\*\*. | \*Object\* | Required | | \`packages.dimensions.height\` | Package height in centimeters. | \*Number\* | Required | | \`packages.dimensions.width\` | Package width in centimeters. | \*Number\* | Required | | \`packages.dimensions.length\` | Package length in centimeters. | \*Number\* | Required | | \`packages.dimensions.weight\` | Package weight in grams. | \*Number\* | Required | | \`shipping\_from.zip\_code\` | Postal code of the origin address. If this value is provided, it will be used to calculate the offer. Otherwise, the Shipping data configured in Mercado Pago will be applied. | \*String\* | Optional | | \`shipping\_to.zip\_code\` | Postal code of the destination address. | \*String\* | Required | If the request is correct, the response will return the shipping rate, which may contain more than one option varying in price and/or delivery time. \`\`\`json { "shipment\_rate\_id": "be9fae0d-1079-471e-887d-55861965d10e", "rates": \[ { "options": \[ { "id": "3c86ea36-fef7-4a9e-9092-d4eb6e744834", "pricing": { "base\_price": "87", "price": "87", "discounts": \[\] }, "method": "standard", "pay\_before": "2025-10-27T00:00:00-06:00", "delivery\_promise": { "shipping\_from": "2025-10-28T12:00:00-06:00", "shipping\_to": "2025-10-30T12:00:00-06:00" }, "delivery\_days": { "from": 3, "to": 5 } } \], "packages": \[ { "quantity": 1, "dimensions": { "weight": "500", "width": "30", "height": "30", "length": "30" } } \] } \], "shipping\_to": { "zip\_code": "06720", "country\_id": "MX", "city\_id": "TUxNQ0NVQTczMTI", "state\_id": "MX-DIF" } } \`\`\` | Field | Description | Type | |---|---|---| | \`shipment\_rate\_id\` | Rate identifier. \*\*Use this value as \`shipment\_rate\_id\` when creating the shipment\*\*. | \*String\* | | \`rates\` | List of rates for the package based on the provided address. | \*Array\* | | \`options\` | List of available rate options. | \*Array\* | | \`id\` | Shipping option identifier. \*\*Use this value as \`option\_id\` when creating the shipment from the rate\*\*. | \*String\* | | \`base\_price\` | Gross shipping value. | \*Number\* | | \`price\` | Net shipping value. | \*Number\* | | \`method\` | Delivery method. The only possible response to this field is \`standard\`, for free shipping. | \*String\* | | \`pay\_before\` | Expected payment date to ensure the generated shipping promise. | \*Date\* | | \`delivery\_promise.shipping\_from\` | Initial date of the delivery promise. | \*String\* | | \`delivery\_promise.shipping\_to\` | Final date of the delivery promise. | \*String\* | | \`delivery\_days.from\` | Minimum business days for the delivery promise. | \*Integer\* | | \`delivery\_days.to\` | Maximum business days for the delivery promise. | \*Integer\* | | \`packages.quantity\` | Number of rated packages. | \*Number\* | | \`packages.dimensions\` | Rated package dimensions. | \*Object\* | | \`packages.dimensions.height\` | Package height. | \*Number\* | | \`packages.dimensions.width\` | Package width. | \*Number\* | | \`packages.dimensions.length\` | Package length. | \*Number\* | | \`packages.dimensions.weight\` | Package weight. | \*Number\* | | \`shipping\_to.zip\_code\` | Postal code of the destination address. | \*String\* | | \`shipping\_to.city\_id\` | City identifier of the destination address. | \*String\* | | \`shipping\_to.state\_id\` | State abbreviation of the destination address. | \*String\* | | \`shipping\_to.country\_id\` | Country abbreviation of the destination address. | \*String\* | To learn about the errors this request may return, go to our \[API Reference\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/get-shipping-rates/post). ::: :::AccordionComponent{title="Shipment query"} It is possible to query a shipment and obtain its complete data once created. This query will allow you to access the package identifier (\`packages.id\`) and the tracking number (\`tracking\_number\`), among other data. To do so, send a \*\*GET\*\* with your :toolTipComponent\[Access Token\]{content="Private key of the application created in Mercado Pago, used in the backend. You can access it through \*Your integrations > Integration data > Testing > Test credentials\*. The test Access Token starts with the prefix \`APP\_USR\`."} to the endpoint \[/shipping/v1/shipments/{shipment\_id}\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/get-shipment-tracking/get) including the shipment identifier (\`shipment\_id\`) in the request \_path\_. \`\`\`curl curl --location 'https://api.mercadopago.com/shipping/v1/shipments/e522fa4a-c3f8-4f34-a353-16f45a012345' \\ --header 'Authorization: Bearer \[Access Token\]' \`\`\` Optionally, you can also send the following parameters as \*\*query parameters\*\* to filter the query: | Parameter | Description | Type | Required | |---|---|---|---| | \`package\_id\` | Package identifier to query. | \*String\* | Optional | | \`external\_reference\_id\` | External reference of the shipment. | \*String\* | Optional | | \`payment\_id\` | Associated payment identifier. | \*String\* | Optional | | \`payment\_intent\_id\` | Payment intent identifier. | \*String\* | Optional | If the request is correct, the response will look like the example below. \`\`\`json { "data": \[ { "external\_reference\_id": "External reference", "shipment\_id": "e522fa4a-c3f8-4f34-a353-16f45a012345", "shipment\_status": "ready", "active\_phase": "forward", "created\_at": "2025-07-03T18:46:03.645897682", "shipping\_to": { "address": "Buyer's address", "city\_locality": "City", "state\_province": "State", "complement": "Detail", "zip\_code": "06250", "country\_code": "MX" }, "shipping\_from": { "phone": "1234567890", "contact": "Seller's name", "address": "Seller's address", "city\_locality": "City", "state\_province": "MEX", "complement": "", "zip\_code": "54963", "country\_code": "MX" }, "tracking\_url": "https://www.mercadopago.com.mx/shipping-tracking?id=000038774013", "packages": \[ { "id": "96b67f13-753e-4f23-b087-cb4d46383f4s6", "dimensions": { "height": 10, "length": 10, "width": 10, "weight": 100, "volume": null }, "items": \[ { "title": "Product", "description": "Product description", "unit\_price": 100 } \], "price": { "amount": "100", "currency": "MXN" }, "tracking\_info": { "tracking\_number": "96b67f13-753e-4f23-b087-cb4d46381d1d", "last\_status": "ready", "updated\_at": "2025-07-03T18:46:07.136506537" } } \], "origin": { "zip\_code": "45601", "city": "Tlaquepaque", "state": "Jalisco", "country": "Mexico", "neighborhood": "La Calerilla", "address\_line": "Calz de Guadalupe 432", "references": "200 Referencia: Casa blanca y azul." }, "dispatch\_date": { "from": "2025-07-05T06:00:00Z" } } \] } \`\`\` | Field | Description | Type | |---|---|---| | \`external\_reference\_id\` | External reference of the shipment. | \*String\* | | \`shipment\_id\` | Unique shipment identifier. | \*String\* | | \`shipment\_status\` | Current shipment status. | \*String\* | | \`active\_phase\` | Active shipment phase: \`forward\` (delivery to customer) or \`reverse\` (return). | \*String\* | | \`created\_at\` | Shipment creation date and time. | \*Date\* | | \`shipping\_to\` | Destination address information with complete recipient details. | \*Object\* | | \`shipping\_from\` | Origin address information with sender details. | \*Object\* | | \`tracking\_url\` | Link for the buyer to check the shipment status in real time. | \*String\* | | \`packages\` | Packages included in the shipment. | \*Array\* | | \`packages.id\` | Package identifier. \*\*Use this value to generate labels\*\*. | \*String\* | | \`packages.dimensions\` | Package dimensions (height, length, width, weight and volume). | \*Object\* | | \`packages.items\` | Items included in the package. | \*Array\* | | \`packages.price\` | Package price information. | \*Object\* | | \`packages.tracking\_info\` | Package tracking information. | \*Object\* | | \`packages.tracking\_info.tracking\_number\` | Package tracking number. \*\*Use this value to track the shipment\*\*. | \*String\* | | \`packages.tracking\_info.last\_status\` | Last recorded package status. | \*String\* | | \`origin\` | Origin address information. | \*Object\* | | \`dispatch\_date\` | Estimated shipment dispatch date. | \*Object\* | ::: :::AccordionComponent{title="Labels"} With the Labels API, you can generate labels containing all the necessary information to dispatch packages of your sold products. You can choose whether you want this label to be generated in PDF, ZIP or ZPL format for download, or in JSON format. > WARNING > > If when querying a shipment, the \`dispatch-date\` parameter is present, labels can only be generated 24 hours before the date and time defined in that field. Access \_Shipment query\_ for more information. To generate the label, send a \*\*GET\*\* with your :toolTipComponent\[Access Token\]{content="Private key of the application created in Mercado Pago, used in the backend. You can access it through \*Your integrations > Integration data > Testing > Test credentials\*. The test Access Token starts with the prefix \`APP\_USR\`."} and the parameters indicated in the table below to the endpoint \[/shipping/v1/shipments/{id}/packages/{package\_id}/label\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/generate-shipment-label/get). \`\`\`curl curl --location 'https://api.mercadopago.com/shipping/v1/shipments/1371769672-9785ed21-f66d-4290-a628-434343434/packages/678029ce4265b922a299999/label' \\ --header 'X-Content-Type: json' \\ --header 'Authorization: Bearer \[Access Token\] ' \`\`\` | Field | Description | Type | Required | |---|---|---|---| | \`shipment\_id\` | Path. Shipment identifier, which can be obtained by querying the shipment information or through the \[Webhook notification\](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/additional-settings/payment-with-shipment#bookmark\_configure\_shipment\_notifications). | \*String\* | Required | | \`package\_id\` | Path. Package identifier, which can be obtained by querying the shipment information or through the \[Webhook notification\](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/additional-settings/payment-with-shipment#bookmark\_configure\_shipment\_notifications). | \*String\* | Required | | \`X-Content-Type\` | Header. Desired output format for the label. Possible formats are: \`pdf\`, \`zpl\`, \`zip\`, \`json\`. | \*String\* | Required | The response may vary depending on the output format specified in the request, but it will always contain a label identifier (\`id\`) and its content (\`label\`). If requested to be generated as a PDF, ZIP or ZPL file, it will contain the downloadable file. \`\`\`json \[ { "id": 43539204818, "label": "String" } \] \`\`\` To learn about the errors this request may return, go to our \[API Reference\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/generate-shipment-label/get). ::: :::AccordionComponent{title="Tracking"} With the Shipments API you can track dispatched packages using their tracking number. To do so, send a \*\*GET\*\* to the endpoint \[/shipping/v1/shipments-tracking/{tracking\_number}\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/get-shipment-tracking/get), including only the package's tracking number (\`tracking\_number\`) in the request path. \`\`\`curl curl --location 'https://api.mercadopago.com/shipping/v1/shipments-tracking/343434ereer-3344e33rre3' \\ --header 'Authorization: Bearer \[Access Token\]' \`\`\` If the data sent is correct, the response will contain the package information along with the shipment events, as shown in the response below. \`\`\`json { "tracking\_number": "343434ereer-3344e33rre3", "tracking\_url": "https://www.mercadopago.com.mx/shipping-tracking?id=343434ereer-3344e33rre3", "package": { "id": "1", "external\_reference\_id": "External reference", "dimensions": { "height": 10, "length": 10, "width": 10, "weight": 10, "volume": 10 }, "items": \[ { "title": "Product", "description": "Product description", "unit\_price": 2007.66 } \], "price": { "amount": 2007.66, "currency": "MXN" } }, "tracking": \[ { "type": "forward", "events": \[ { "status": "created", "date": "2024-08-22T13:40:00.095Z" }, { "event\_name": "ready", "event\_date": "2025-06-09T18:40:24.749252964Z" }, { "status": "shipped", "date": "2024-08-23T10:40:00.095Z" }, { "status": "in\_hub", "date": "2024-08-23T11:40:00.095Z" }, { "status": "outbounded", "date": "2024-08-23T13:40:00.095Z" }, { "status": "out\_for\_delivery", "date": "2024-08-23T13:45:00.095Z" }, { "status": "delivered", "date": "2024-08-23T14:45:00.095Z" } \] } \] } \`\`\` | Field | Description | Type | |---|---|---| | \`tracking\_number\` | Package shipment tracking code. | \*String\* | | \`tracking\_url\` | Link for the buyer to check the shipment status in real time. | \*String\* | | \`package\` | Package data. | \*Object\* | | \`package.id\` | Unique identifier of the shipped package. | \*String\* | | \`package.external\_reference\_id\` | External reference of the package. | \*String\* | | \`package.dimensions\` | Package dimensions (height, length, width, weight and volume). | \*Object\* | | \`package.dimensions.height\` | Package height. | \*Number\* | | \`package.dimensions.width\` | Package width. | \*Number\* | | \`package.dimensions.length\` | Package length. | \*Number\* | | \`package.dimensions.weight\` | Package weight. | \*Number\* | | \`package.items\` | Information on items included in the package. | \*Array\* | | \`package.items.title\` | Title of the item shipped in the package. | \*String\* | | \`package.items.description\` | Description of the item shipped in the package. | \*String\* | | \`package.items.unit\_price\` | Value of the item shipped in the package. | \*Number\* | | \`package.price\` | Package shipping price data. | \*Object\* | | \`package.price.amount\` | Shipping value. | \*Number\* | | \`package.price.currency\` | Currency used. | \*String\* | | \`tracking\` | Shipment history details. | \*Array\* | | \`tracking.type\` | Direction in which the shipment is moving: \`forward\` when the package is on its way to the customer; \`reverse\` when the package is heading back to the origin address. | \*String\* | | \`tracking.events\` | List of shipment events. | \*Array\* | | \`tracking.events.status\` | Shipment event status. See possible statuses in the section below. | \*String\* | | \`tracking.events.date\` | Event status update date. | \*String\* | | \`tracking.events.event\_name\` | Event name (when available). | \*String\* | | \`tracking.events.event\_date\` | Event date (when available). | \*String\* | To learn about the errors this request may return, go to our \[API Reference\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-pro/shipping/get-shipment-tracking/get). ### Possible shipment statuses Below you can consult the possible shipment statuses along with their description and association with the direction in which the shipment moves. | Status | Description | Phase | |---|---|---| | \`created\` | The shipment was created (once the payment was made). | \*Forward\* / \*Reverse\* | | \`ready\` | The shipment label can now be generated. When \`dispatch-date\` is present, you can only generate the label 24 hours before this date and time. | \*Forward\* | | \`label\_printed\` | The label was generated. | \*Forward\* / \*Reverse\* | | \`shipped\` | The package was picked up and is on its way to its destination. | \*Forward\* / \*Reverse\* | | \`out\_for\_delivery\` | The package left the origin location to the destination address. | \*Forward\* | | \`soon\_deliver\` | The package is near its destination. | \*Forward\* | | \`delivered\` | The package was delivered. | \*Forward\* | | \`not\_delivered\` | The package was not delivered. | \*Forward\* / \*Reverse\* | | \`canceled\` | The shipment was canceled. | \*Forward\* | | \`in\_hub\` | The package is in a warehouse. | \*Forward\* | | \`rejected\_in\_hub\` | The package was rejected at the warehouse. | \*Forward\* | | \`discarded\` | The package was discarded and will not return to the sender. | \*Reverse\* | | \`outbounded\` | The package left the warehouse. | \*Forward\* | | \`impassable\_area\` | The shipment route has an impassable area. | \*Forward\* | | \`receiver\_absent\` | The package recipient is absent. | \*Forward\* | | \`refused\_delivery\` | Package delivery was refused. | \*Forward\* | | \`bad\_address\` | The carrier could not find the destination address or it was invalid. | \*Forward\* / \*Reverse\* | | \`damaged\` | The package was damaged. | \*Forward\* / \*Reverse\* | | \`lost\` | The package was lost. | \*Forward\* / \*Reverse\* | | \`stolen\` | The package was stolen. | \*Forward\* / \*Reverse\* | | \`delayed\` | The package is delayed. | \*Forward\* | | \`estimated\_delivery\_updated\` | Estimated delivery date updated. | \*Forward\* | | \`returned\` | The package was returned to the sender. | \*Reverse\* | | \`on\_route\` | The package is on route. | \*Forward\* | | \`failed\` | Shipment initialization failed. | - | | \`redirected\` | The shipment was redirected (changed phase). | \*Reverse\* | | \`stuck\` | The shipment is stuck (phase change failed). | \*Forward\* / \*Reverse\* | | \`picked\_up\` | Package picked up. | \*Reverse\* | | \`carrier\_logistic\_center\_inbound\` | The package entered a warehouse. | \*Forward\* / \*Reverse\* | | \`carrier\_logistic\_center\_outbound\` | The package left a warehouse. | \*Forward\* / \*Reverse\* | | \`sender\_absent\` | Seller absent for pickup. | \*Reverse\* | | \`refused\_pickup\` | Package pickup was refused. | \*Forward\* | | \`sender\_not\_visited\` | Package pickup could not be completed. | \*Forward\* | ::: \## Configure shipment notifications Configure Webhook notifications to receive alerts about shipments and their status changes. To do so, you need to indicate the URLs to which they will be sent by following the step-by-step below: 1\. Go to \[Your integrations\](https://www.mercadopago.com.mx/developers/panel/app) and select the application integrated with Checkout Pro for which you want to activate notifications. !\[Application\](https://www.mercadopago.com.mx/images/cow/not1-select-app-es-v1.png) 2\. In the left menu, select \*\*Webhooks > Configure notifications\*\*. !\[Webhooks\](https://www.mercadopago.com.mx/images/cow/not2-webhooks-es-v1.png) 3\. Select the \*\*Production mode\*\* tab and provide an \`HTTPS URL\` to receive notifications with your production integration. !\[URL\](https://www.mercadopago.com.mx/images/cow/not3-url-es-v1.png) 4\. Select the \*\*Shipments (Mercado Pago)\*\* event to receive notifications, which will be sent in \`JSON\` format via an \`HTTPS POST\` to the URL specified above. !\[Shipments\](https://www.mercadopago.com.mx/images/cow/config-notis-shipping-es-v1.png) 5\. Finally, click \*\*Save configuration\*\*. This will generate a \*\*secret key\*\* exclusive to the application, which will allow you to validate the authenticity of the received notifications, ensuring they were sent by Mercado Pago. Keep in mind that this generated key has no expiration date and its periodic renewal is not mandatory, although it is recommended. To do so, just click the \*\*Reset\*\* button. If you want more information on how to simulate sending a notification, validate its origin, or what actions are necessary after receiving them, go to \[Configure notifications\](https://www.mercadopago.com.mx/developers/en/docs/checkout-pro/payment-notifications).