ShippitDeveloper Centre

October 2026

Here's what shipped this month. For an overview of these features, see the Release Notes on the Shippit Help Centre.

Improvements

  • The v3 Order and Quote APIs accept and return four optional EU customs product identifiers on product_attributes: non_standard_manufacturer_pid, standard_manufacturer_pid, eudr_dds_reference, and eudr_document_code. B2C shipments into the EU need them on each line item. Each value is up to 70 characters, Shippit trims it, and a blank counts as not provided. Shippit doesn't reject an order that leaves them out. For the details, see the order product_attributes.

  • The v3 Order and Quote APIs accept the weight, length, width, and depth of each product on product_attributes, in kilograms and metres, the same units as parcel_attributes. They describe one unit, not the line. Each one overrides the matching field in your stored product catalog, and zero, a negative number, or a blank counts as not measured. They change how Shippit packs an order only on accounts that use product-based package allocation. For the details, see the order product_attributes and the quote product_attributes.

  • The v3 Label API returns manifest_id and manifest_number on the order once it's booked, the same as GET /orders/{tracking_number}. Pass manifest_id to the book document endpoint to fetch the manifest document. The Label API leaves both fields out until Shippit books the order. For the details, see the label order object.

  • The v3 Order and Label APIs return a dangerous_goods object on each product once it has packing details, and null otherwise. The dangerous_goods_code, dangerous_goods_class, and dangerous_goods_text fields are still returned, so the change is backward compatible.

  • The v3 Order API takes dangerous goods details as a dangerous_goods object on each product, on POST /orders and PUT /orders/{tracking_number}. It holds the code, class, and text you send today, plus the packing_group (I, II, or III), and the packing_description, amount, and amount_unit of one unit. If you send dangerous_goods, fill in every field. Shippit rejects an order that leaves one out with a 422 that lists the missing fields. Shippit turns the object on account by account, and until it's on for yours, Shippit ignores it and reads the dangerous_goods_code, dangerous_goods_class, and dangerous_goods_text fields. For the details, see the dangerous_goods object and Shipping dangerous goods.

Fixes

  • PUT /orders/{tracking_number} accepts the package_type values GET /orders/{tracking_number} returns, so you can send a parcel back as you got it. Before, a parcel or satchel value failed the update with a 400. pallet sets the parcel as a pallet, Shippit ignores parcel and satchel, and a satchel must still be the only parcel in the order. For the details, see the update parcel_attributes.

  • On a v3 order with no product_attributes, each product Shippit builds from a parcel_attributes row keeps only the measurements you send. Before, those products took the length, width, and depth of your fallback parcel preset.

Deprecations

  • The dangerous_goods_code, dangerous_goods_class, and dangerous_goods_text product fields are deprecated. Shippit still accepts and returns them. Move to the dangerous_goods object.