Table of Contents

Version 2025.4

Colin Updated by Colin

Area-based Fees and Adjustments

As carriers become more granular with "area surcharges", we've updated Fee Schedules and Adjustments to allow specifying a list of arbitrary Areas to which a fee or adjustment can apply. Where previously you could only upload "DAS" maps for D (Regular DAS), E (Extended DAS), A (Alaska) or H (Hawaii), now you can upload "Areas" using any text to name your areas, and then list those areas when defining fees and adjustments.

Additionally:

  • You can now assign all map types to multiple warehouses to avoid unnecessary duplication when the contents would be the same.
  • The Rate Calculator will now also show you which Area was in-effect for calculating the Area Surcharge.
Update Impact: None. All existing maps, fees and adjustments will be migrated in a backwards-compatible manner. But, be sure to maintain the new data format going forward. Specifically, you may need to modify future Fee Schedule and Fee Adjustment import files.

Upload Shipment Documents

You can now upload the following documents to a shipment that was shipped offline for improved record keeping and file sharing with your clients:

  • Shipping Label (for parcel)
  • Bill of Lading (for freight)
  • Commercial Invoice (for international)
  • Shipping Papers (for regulated goods)

The Add Tracking Numbers button was renamed to Update Tracking and the resulting dialog updated to include these new upload fields. Additionally, we added an "Apply to all" checkbox for applying the same tracking number to all packages in one step.

Update Impact: None

Shipment Type

Closely related to the above, we've introduced a Shipment Type field that identifies every shipment as either Parcel or Freight. You can choose the designation for each External Shipping Method, and the rest are handled automatically. This is mostly semantic for now, but it does affect a few minor changes:

  • Bill of Lading is only used for Freight and uses a Laser Printer as the print target
  • Shipping Label is only used for Parcel and uses a Label Printer as the print target
  • Packages are referred to as Pallets for Freight
  • The SPS Commerce ASN's "CarrierTransMethodCode" is updated to "LT" for Freight, otherwise it is "M"
Update Impact: Existing External Shipping Methods will be updated to Freight if the name or code contains LTL or FTL, and Parcel otherwise. Please check your ESMs after the update to ensure they are all designated properly.
API Compatibility: The field names have not changed in the APIs, so the API field names still take after the Parcel shipment type (packages) to maintain backwards-compatibility.

Custom Fields for Shipments

Similar to Custom Fields for Orders, you can now add Custom Fields for Shipments! In particular, this allows you to capture data that is specific to each shipment, in cases where you may have multi-shipment orders, without stuffing data into a single order-level field.

Update Impact: None.

Regulated Goods Improvements

We've bolstered our already robust Regulated Goods functionality with some new fields to resolve some specific problems with shipping lithium batteries to certain remote destinations and certain regulated goods. In the process we've increased our carrier API test coverage to nearly 800 test cases!

Changes to Regulations include:

  • Added support for "P.I. Section" in the Regulatory Information field to support distinction between, e.g. Packing Instruction 965 Section "IA" and "IB" lithium batteries.
  • Added "FedEx Sequence Number" to fix errors for certain dangerous goods for which FedEx requires a higher level of detail.
  • Split "Air Max Units Per Package" to "Cargo Aircraft Only Max Units Per Package" and "Passenger Aircraft Max Units Per Package".
  • Added "Cargo Aircraft Only Packaging Features" to allow assigning packaging features specific to CAO shipments (such as CAO labels).
  • Product "Regulation Units" are now required when shipping by air.
  • Added "No Limit" option to Passenger/CAO Max Units Per Package fields.
  • Added field notes for improved clarity and improved field value validation.
  • Increased validation strictness of shipping method selection and added detailed errors for unsupported combinations.
Update Impact: The way we generate requests is largely unaffected upon update, but you should review your regulations to ensure that the new fields are utilized where appropriate for greatest accuracy.
Specifically:
- No Limit is set where a limit was previously not set.
- Passenger and CAO Max Units Per Package values are copied from the previous value for "Air Max Units Per Package".
- P.I. Section and FedEx Sequence Number may be needed for some regulated goods.

Improved User Columns

Internally, we have adjusted the way data is stored for references to users, such as which user created an order. Since many actions aren't necessarily performed by a user, but can also be performed by an API, Script or Integration, we've unified these references into one type. This improves the ability to search and sort using these grid columns and these references are now also presented as links for your convenience.

Update Impact: None, aside from the grid column changes.

Other Improvements

Most bug fixes have already been backported to 2025.3.
  • Implement new UPS length+girth thresholds with cubic-inch thresholds for both Large Package Surcharge (LPS) and Additional Handling Charge (AHC) automatically effective on 2025-08-17.
  • Removed South Africa and Bermuda from the FedEx ETD Countries list because they do not allow the commercial invoice to be generated by FedEx.
  • Improved reliability of Easypost and Stamps.com shipping label requests by implementing an increasing back-off in the case of "too many requests" errors.
  • Allow access to the Edit Package page in the Packing UI without the Scanner -> Packing -> Edit Packages permission. This permission is still required to update item quantities, add packaging features by clicking the + button, and edit the applicable quantity for a packaging feature.
  • Duplicated products are now initially created with "Status: Disabled" and "Availability: Not Available". The previous behavior that disabled SKU-less products after 1hr was removed.
  • An error is now thrown when attempting to disable a product referenced by a BOM.
  • Fixed a bug where import parse errors were not reported (eg. missing SKU column)
  • Fixed an unexpected error when uploading fee adjustment imports.
  • Fixed assigning location types to Automatic by mass action.
  • If any order item has a unit declared value, the shipment/package declared value will no longer be split from the total (it will be zero if no items have a unit declared value).
  • Fixed the Receive By Deadline should not be automatically updated when adding an item to a delivery.
  • Fixed an Internal Server Error when scanning a location that is not assigned to an item on the Relocation UI.
  • Fixed an Internal Server Error when duplicating a product that has a Serial Number Type.
  • Fixed placeholders and prepopulated values in the Add Tracking Numbers popup.
  • Fixed an error when updating inventory for merchants with disabled brands.
  • Fixed using Change Shipping Method to a virtual shipping method on a shipment that requires multiple packages.
  • Fixed manual shipping method override on a shipment is clobbered when inventory updates cause reallocation.
  • Eliminate possible lock contention and UI delays when updating racks with Auto-Assign patterns.

API Changes

  • Added manifest_courier_code and manifest_courier_name to shipment.info and shipment.search method responses. The package-level values are now redundant but are kept for backwards compatibility.
  • Added shipment_type to shipment.info and shipment.search method responses and support for filtering by shipment_type.
  • Added packages.*.tracking_added_at timestamp to shipment.info and shipment.search method responses. Also added packages.*.created_at which is redundant to the packages.*.timestamp field, but kept the latter for backwards compatibility.
  • Added $customFields parameter for the shipment.update method.
  • Added custom_fields as an optional parameter for shipment.info and shipment.search methods.
  • Added a shipment_custom_field.list method to retrieve custom fields for shipments.
  • Replaced submitted_by_id with requester_id in order.search and order.info response.

Grid Changes

  • The values of the Order grid Submitted By column no longer contain the type prefix in the cell value and a Submitted By Type column was added to the right of it.
  • Many other grid columns containing usernames were updated to support the Requester pattern (they may contain more options than just users in the future) for flexibility and consistency.
    • Event Log (Source)
    • Import Task (Created By)
    • Stock Movement (Created By)
    • Action Log (User)
  • User-added custom fields may now appear in the Shipments grid depending on the "Display in Admin/Client Grid" option.

How did we do?

ShipStream Releases

Version 2025.3

Contact