Updated September 2026
Changelog
This page lists notable changes to the Sendify API — new endpoints, new fields, and changes in behavior. Entries are grouped by month, newest first.
We only make backwards-compatible changes to the API. That means we may add new endpoints, add new optional request fields, add new fields to responses, and add new values to enums. Make sure your integration tolerates unknown fields and enum values. If a breaking change is ever unavoidable, we will reach out to affected integrations well in advance.
Questions about a change? Contact us at api@sendify.com.
September 2026
- Added:
GET /shipment-defaultsandPATCH /shipment-defaults— read and change the sender address, receiver address and favorite package a shipment created withPOST /shipmentsis filled in with when it arrives without them. These were previously only editable in the Sendify web app. Each default is referenced as{"id": "..."}with theidfromPOST /favorites/addressesorGET /favorites/packages; sendnullto clear it. Anidthat names none of your own entries is rejected with422. - Changed: A shipment sent from your default sender address now uses the whole address book entry: its name and first contact as well as its address and customs numbers. Before, the sender was always your team, with the API user as the contact. An entry without a name or a contact still falls back on those.
- Added:
dangerous_goods_typeon packages when creating a shipment withPOST /shipmentsor updating it withPUT /shipments/{id}. Set it toadrfor fully regulated dangerous goods,limited_quantityfor ADR 3.4, or leave it empty for non-dangerous goods. - Added:
dangerous_goods_typeon each entry in theGET /favorites/packagesresponse. - Added:
2x2as alabel_layoutvalue onPOST /shipments/print: four labels on one A4 page. - Added: Booking confirmations pushed to Webhook endpoints. Subscribe to
SHIPMENT_BOOKED_APPand/orSHIPMENT_BOOKED_APIto be told as soon as Sendify books a shipment with the carrier, including the ones booked by hand in the Sendify web app. They arrive withtypeSHIPMENT_BOOKED. See Webhooks. - Changed: Tracking event webhooks use the same envelope as booking confirmations.
typeis now alwaysTRACKING_EVENT, and the event name moved fromevent.typetodata.event.carrier,tracking_idand the remainingeventfields moved intodata, withevent.timerenamed todata.event_time. The Tracking Webhooks page is now Webhooks. - Added: Webhook payloads are described in the API reference under Webhooks, as OpenAPI 3.1 webhooks with a model for each event.
- Added:
adr_dangerousgoodsas a document type onPOST /shipments/{id}/{document_type}for uploading the ADR certificate of a dangerous goods shipment. - Added:
idon each entry in thePOST /favorites/addressesresponse. - Added:
address_book_idon thefrom,to,alternative_fromandalternative_toparties of a shipment, accepted on create and update and returned when fetching a shipment. Send theidof an address book entry to record which contact the party came from, so shipping rules that target an address book contact apply to the shipment. - Added:
idon each entry in theGET /favorites/packagesresponse. - Added:
favorite_package_idon shipment packages, accepted on create and update and returned when fetching a shipment. Send theidof a favorite package to record which preset the goods came from, so shipping rules that target a favorite package apply to the shipment. - Changed: Shipping rules are now identified by
ideverywhere.GET /shipping-rulesandapplied_shipping_rulesreturn the rule's identifier asid, andPOST /shipments/ratesaccepts it asshipping_rule_ids. The identifier value is unchanged — it is what thehashfield carried before. Thehashresponse field and theshipping_rule_hashesrequest field keep working; when both request fields are sent,shipping_rule_idswins. - Changed:
applied_shipping_rules[].idused to be an internal numeric ID that no endpoint accepted back. It now carries the rule identifier as a string, matchingidonGET /shipping-rules. If you read this field, read it as a string — or usenamefor display. - Changed:
POST /shipments/ratesreads dangerous goods types of the shipment's packages, and only returns results that support the relevant dangerous goods type (or all results, if no packages contain dangerous goods). Fully regulated goods require ADR approval for your team. Note that some products require an ADR declaration form, which is not yet supported by the API - these products are not shown in the response. - Changed:
POST /shipments/bookresponds with422if thedangerous_goods_typeon the packages was changed after the rate was requested. Request rates again and book with the new rate. - Deprecated:
required_addons.dangerous_goods_limited_quantityonPOST /shipments/rates. It will continue to work for shipments wheredangerous_goods_typeis not set on the package level, but usedangerous_goods_typeon the packages going forward.
August 2026
- Added: Third-party customs payer support — bill customs duties and import taxes to a third party's carrier account instead of the receiver. See How to Bill Customs Duties to a Third Party.
- Added:
loading_meterson shipment packages. - Added:
GET /shipmentsnow supports filtering by your own reference with thereference_idquery parameter. - Improved: Tracking statuses returned by
GET /shipments/{id}/trackingare now more accurate, especially around out-for-delivery and delivered transitions. - Fixed:
GET /shipments/{id}returns400 Bad Requestfor a malformed shipment ID instead of a server error.
July 2026
- Added: Shipments to Norway can now include a VOEC number in the customs information, so VOEC-registered sellers get correct VAT treatment. See International Shipping & Customs.
- Added: Shipments whose booking failed can now be deleted with
DELETE /shipments/{id}. - Fixed:
customs_informationis now included when fetching shipments viaGET /shipmentsandGET /shipments/{id}.
June 2026
- Added:
PUT /shipments/{id}— update a shipment that has not been booked yet. The endpoint validates that the shipment is still bookable, regenerates the customs invoice when customs data changes, and returns the full updated shipment. - Changed: Structured customs information is now validated at booking time for shipments that require a customs invoice, so incomplete customs data fails fast with a clear error instead of failing at the carrier.
- Added:
collection_at_terminaladdon on rates. - Fixed: Sending an empty
packagesarray in an update no longer removes the shipment's packages.
May 2026
- Fixed: Filtering shipments with
status=CANCELEDnow returns canceled shipments correctly. - Fixed: Address validation now requires a state/province for countries where carriers require one.
- Docs: Clarified how
shipping_costsin customs information is auto-filled when omitted. See International Shipping & Customs.
April 2026
- Changed: Price fields are omitted from responses for receiver-pays shipments, since the shipping cost is billed to the receiver's carrier account. See Advanced Billing Options.
March 2026
- Added:
GET /shipping-rules— list your team's shipping rules and see which rules are enabled. - Added: Shipping rules are now applied to
POST /shipments/ratesresults, and the response tells you which rules were applied and which rates were excluded by them. - Added:
unit_typefield on customs items. - Added: Rates for your own carrier agreements now include
own_agreement_name, so you can tell your agreements apart. - Changed: The manifest is always included in the available document types for booked shipments that require one.
February 2026
- Added:
POST /shipments/ratesresponses now include warnings and the rates that were excluded, with the reason for each exclusion. - Added:
carrier_nameandproduct_namein shipment responses. - Added: More document types can be requested via
POST /shipments/print.
October 2025
- Added: Structured customs support — include
customs_information(items, HS codes, values, reason for export) when creating a shipment, and Sendify generates the customs invoice automatically at booking. See International Shipping & Customs. - Added:
POST /shipments/cancel— cancel a booked shipment. - Changed: When complete structured customs data is provided, the customs invoice is no longer listed as a required document to upload.
- Changed: Stricter customs validation — receiver VAT/EORI is required for B2B international shipments, and customs item weights are validated against package weights.
September 2025
- Added:
incotermssupport on rate requests. - Added:
tracking_idon shipment responses, and available document types on relevant endpoints.
June 2025
- Added: Carrier filter on
POST /locations/servicepoints. - Added: Carrier code on rates.
- Added: Contact details in the favorite addresses response.
- Fixed:
GET /favorites/packagesreturns the actual total count.
May 2025
- Launched: The public documentation site, including the Getting Started, Customs, Service Point, and Receiver Pays guides.
- Added:
GET /carriers— list available carriers. - Added: Service point delivery — look up service points via
POST /locations/servicepoints, get service-point rates, and book to a service point. - Added:
POST /shipments/{id}/{document_type}— upload customs documents for a shipment. - Added:
required_documentson rates, and support for booking non-EU shipments once the required documents are provided. - Added: Resale prices from shipping rules in rates and booking responses.
- Added:
POST /favorites/addresses— search the addresses saved in your team's address book.
April 2025
- Added: Rates from your own carrier agreements in
POST /shipments/rates. - Added: Receiver-pays support — book with the receiver's carrier account as the paying party. See Advanced Billing Options.
- Added:
GET /printersand printing directly to your connected printers viaPOST /shipments/print. - Added: More addons on rates, including insurance, definite loading, and guaranteed delivery time.
- Added:
invoice_referenceandexpected_priceon shipments. - Added:
DELETE /shipments/{id}— delete a shipment that has not been booked.
January 2025
- Launched: Rate search and booking are live in production —
POST /shipments/ratesandPOST /shipments/book. - Added:
GET /shipments/{id}— fetch a single shipment. - Added:
GET /favorites/packages— list your saved package presets. - Added: Pickup and delivery instructions on shipments.
- Added: Rates include pickup and delivery time estimates, cutoff date/time, required addons, and an expiry.
Changes before 2025 — the original shipment, tracking, and label printing API — predate this changelog and are not listed.