Table of Contents

Version 2021.2

Doc Updated by Doc

March 17, 2021

New field for deliveries: Quantity

Previously the "Expected" amount for an ASN, RMA or other type of delivery was the amount expected to be received at the time the delivery was created and would not change as the delivery was received. However, this was confusing when the "Qty Expected" for a given product's inventory was changing while a delivery is being received. We've added a "Quantity" field to deliveries (ASNs, RMAs, etc.) which is the initially expected amount and does not change through the lifetime of a delivery, and changed the meaning of "Expected" to be the quantity remaining to be processed. As the delivery is processed the Shortage, Overage and Received amounts will increase while the Expected amount decreases toward 0. This makes it much simpler to understand the quantity which remains to be accounted for and the product's Quantity Expected is now equal to the sum of the Expected amount for all deliveries.

Existing installations will be updated with a temporary flag enabled which will cause the API to return the old value for backwards-compatibility. See API Changes below for more details.

Receive deliveries through Admin UI

The Accept, Process and Put-Away stages of receiving an ASN, RMA and other deliveries can now be completed through the Admin UI with all of the same functionality as the Scanner UI but without requiring a barcode scanner. Specifically, an Accept button was added to the delivery page, additional fields were added to the Add Container dialog and a Put-Away button was added for each line item.

Update delivery destination warehouse

You can now change the Warehouse that an ASN, RMA or Other Delivery is assigned to up through the "Ready to Process" status allowing you to fix more mistakes or reroute deliveries to other warehouses without workarounds. A bug was fixed so that the Expected amount and stock movement log remain correct after the warehouse is changed and any incorrect values will be corrected automatically upon update.

Custom Dimensional Weight Divisors

The rating system now supports a Dimensional Weight Divisor field on the Edit Rate Plans page so you can use a custom divisor for every shipping method in every Rate Group. The carriers' published divisors will be used as the default if this field is not specified.

Dimensional Weight Divisors are also now supported for External Shipping Methods using two new fields, Rating and Surcharge Formulas (determines logic for applying dimensional weight) and Default Dimensional Weight Divisor (can still be overridden by the Rate Plan).

Additional Handling Surcharges

You can now get accurate rate quotes for packages that incur the various types of Additional Handling Surcharges, customized by Rate Group just like all of the other surcharges:

  • Weight Surcharge - heavy packages
  • Dimension Surcharge - bulky packages
  • Packaging Surcharge - irregular packages (wood crates, cylinders, shrink-wrapped items, etc.)
  • Oversize Surcharge - even bigger packages

The Packaging Surcharge will be applied based on two new attributes:

1) a Product attribute called "Additional Handling Surcharge" when the item ships by itself without an Overbox, or

2) a Packaging Feature attribute called "Additional Handling Surcharge" when the package ships using a Container or Supplies with this surcharge enabled.

These surcharges will automatically be applied correctly based on the circumstances and according to each carrier's service guide rules. The surcharges will be applied to External Shipping Methods as well based on the selected "Rating and Surcharge Formula".

Minimum Billable Weight

Rating accuracy is also improved for large packages for USPS and FedEx Express international shipping methods which are subject to the Minimum Billable Weight. This "surcharge" will be applied by looking up the higher of the Minimum Billable Weight and the actual weight in the rating Weight/Zone tables.

New rating fields in API and export

Related to the above new features ShipStream now records the following fields as they are applicable to a package and includes them in the Package grid exports and applicable API methods:

  • Dimensional Weight Divisor - the divisor used to calculate the Dimensional Weight
  • Dimensional Weight - the dimensional weight as calculated using the resolved divisor
  • Billable Weight - the final billable weight (greatest of the actual weight, dimensional weight and minimum billable weight)

Additionally, the rate.quote API method now includes all of the new surcharges described above to provide a better break-down of the total to API consumers.

Disable and edit in-use Bill of Materials

You can now enable or disable Bill of Material's (BOMs) even after they have been used by Orders and Work Orders. It is required, however, to cancel or complete Orders and Work Orders which are being processed before making material changes to BOMs to prevent situations which are impossible to resolve.

When creating an RMA from a Shipment the RMA will contain the stocked items if the BOM used is still active, or the picked and packed items if the BOM used is no longer active.

Support more Bill of Materials combinations

Some BOM restrictions which prevent fractional kits from occurring were made more precise and relaxed so that:

  • A kit-type BOM A cannot be a descendant of a Kit To Stock BOM B when there is a BOM C with Yields Quantity > 1 between BOM A and B, or if BOM B has a Yields Quantity > 1 itself
  • A kit-type BOM that is Kit On Demand cannot be a descendant of a BOM that is Kit On Demand with Yields Quantity > 1, where the two are connected by an unbroken chain of Kit On Demand BOMs, or directly connected to each other
  • All other configurations of kit-type and quantity-type BOMS are now allowed

If that's got your mind in a pretzel just know that more combinations of BOMs are allowed than ever before! This allows a scenario where, for example, one would like to have a Kit On Demand BOM pick singles from a case location which is itself stocked using a Kit To Stock BOM which builds a case from the singles.

Require permission to edit Bill of Materials

Editing Bill of Materials from the Product page now requires the Catalog > Bill of Materials permission. Users with Catalog > Products permission lacking the Catalog > Bill of Materials permission will still be able to view the BOMs but will not be able to edit them so please update your User Roles as appropriate.

Multiple Tracking Numbers field for ASNs and RMAs

The single-value "Carrier Tracking #" field for RMAs has been fully replaced with a "Tracking Numbers" field which supports multiple tracking numbers. The Tracking Numbers are now visible and searchable on the ASNs, RMAs and Other Deliveries grids as well as the Scanner UI.



Add Track Description and Manifest Courier to Package info

We've lightly redesigned the way Shipment and Package info is presented to help highlight when the shipping method differs between the Order, the Shipment and the Package "Track Description" (which can happen for multiple reasons). This adds the Package's Track Description, Created At time and Manifest Courier while improving visibility of the tracking numbers. The Track Description was also added to the Packages grid.

Add Post Office and Military address classification types

We've increased the precision of our address classification system to include Post Office and Military as separate address classification types. These will be classified using a postcode database that is updated frequently and prevent errors caused by some edge case issues with the street-level validation that is less useful for these addresses. The improved classification will help with shipping method validation to ensure that, for example, only USPS methods may be used to ship to post codes dedicated to US PO boxes and US military bases. This also ensures that virtual shipping methods will choose the best methods for Post Office and Military addresses.

The new classifications will automatically be added to any Rate Plans for USPS, FedEx SmartPost and UPS SurePost. Please confirm before deployment and after that your Rate Plans will work as expected with the new classifications.

Help users avoid placing inventory out of order

When using lot tracking with an enforced Burn Order (e.g. FIFO and FEFO) and batching only from pickable locations, it is easy to put inventory away in locations that are "out of order" such that ShipStream cannot batch some shipments because although the inventory is in stock, batching the shipments would violate either the Burn Order policy or require that items are picked from non-pickable locations. To combat this issue we've added a friendly notice to help the user choose the correct location type as well as a warning to further discourage placing inventory out of order.


The warnings appear in both the Relocation and Put-Away workflows.

Other Improvements

  • Duplicating a Rate Group now duplicates all Rate Plans from the source Rate Group.
  • Significant performance improvements when saving complex BOMs.
  • Significant performance improvements when allocating inventory to orders using BOMs.
  • Auto-update Lot data when the Lot Type is changed for a product to ensure correct burn order is enforced.
  • Fixed mass updating inventory attributes via the product grid would apply the change to all BOM related products, not just the selected products.
  • Resolved issue for quantity updates when changing warehouses between orders.
  • Added links to download import file templates from the the Create Import Task page.
  • Sort the logged-in user at the top of the list of users with pending Relocations.
  • Increase width of the Label column on the Locations grid.
  • Added Overrides tab to Packing Solution page and links to Solution page from Override page.
  • Improved error message when there are no valid containers for a given container of a Packing Solution because they are all disabled.
  • Fixed package status remains "Not On Manifest" when moved from one manifest to another.
  • Fall back to Max Bin Weight if an unhandled exception occurs resolving a Packing Solution.
  • Copy 'source' field to new order when order is edited to allow integrations to continue to sync.
  • Improved ASN/RMA form field and grid filters with large numbers of Sender Ref options.
  • Throw friendly error when scanned location label is too long (truncation causes duplicate key errors, scanner glitches sometimes generate impractically long barcodes).
  • Added "Uninstall" feature to Shopify plugin subscriptions and hide unneeded Actions buttons based on context.
  • Mark a newly resolved Packing Solution as invalid if there are any preexisting invalid child solutions.
  • Improved styling of Packing Solutions Override page.
  • Improved button spacing in Scanner UI.
  • Fixed "Pack and Ship" modal clipping on smaller screen sizes.
  • Minor improvements to wording and style of password reset link emails.

Backported Improvements

These items have been backported to one or more previous versions but are noted here for completeness.

  • Disabled autocomplete for elements with datalist.
  • Limited datalist usage (ASN/RMA sender field) to 1000 elements, limited grid filter select options to 100 options (fallback to text filter).
  • Fixed error when using Picking Class scripts.
  • Fixed creating picking batch by Picking Class was not excluding Locked shipments.
  • Fixed Customer Name filter on RMA grid (select filter used when filter should be text filter).
  • Filter Supplier and Carrier Name datalist options in delivery create form by selected merchant in Admin UI.
  • Set larger width for Supplier/Sender Name column on ASN/RMA grids.
  • Fixed package status is "Not On Manifest" when moved from one manifest to another.
  • Fall back to Max Bin Weight if an unhandled exception occurs resolving a Packing Solution.
  • Fixed shipping cost as reported by UPS with multiple packages per shipment.
  • Update Third Party Billing form to support international phone numbers and postal codes.
  • Support matching Amazon Seller SKU or ASIN to External ID and Vendor SKU.
  • Support backorder_policydesired_delivery_date and tpb_group_id in order import format.
  • Restore street address if original does not have a hyphen and candidate does (UPS API bug sometimes replaced street number with a range of street numbers).

API Changes

Please see the API Docs for the updated documentation.

  • Added the new qty field to delivery methods (see description above).
    • When creating deliveries the qty_expected field will continue to work as before if the qty field is not present but qty is the new preferred input field name.
    • The behavior of qty_expected has changed so while the backwards-compatibility flag is enabled (existing installations only) the response will contain "qty_expected_compatibility": true to indicate that the return value for qty_expected is using the old behavior which now is equivalent to the new qty field. Also while this flag is enabled the response will contain qty_expected_new which is the new value of the qty_expected field. After deployment of this update please update all integrations to work with the "After without compatibility flag" response format.
      • Before:
        • qty_expected = X
      • After with compatibility flag:
        • qty = X
        • qty_expected = X
        • qty_expected_new = Y
        • qty_expected_compatibility = true
      • After without compatibility flag:
        • qty = X
        • qty_expected = Y
  • Added fields to order and shipment API methods to expose these new computed values:
    • billable_weight
    • dimensional_weight_divisor
    • dimensional_weight 
  • Added fields to rate.quote API method response with the proper computed values:
    • weight_surcharge
    • packaging_surcharge
    • dimension_surcharge
    • oversize_surcharge 
  • Added order_ref to webhook payloads, and reorder flag to order:canceled payload to distinguish completely canceled orders from orders that are canceled by editing.
  • Allow default status filter to be overridden and filter by status in method.
  • Added new API methods for delivery.commitdelivery.cancel and delivery.void.
  • Allow updating additional fields with order.edit API method:
    • desired_delivery_date
    • declared_value_service
    • declared_value
    • backorder_policy
  • Added tracking_numbers field (array) for delivery API methods. The sender_ref field for RMAs will automatically be appended to the tracking_numbers array for backwards-compatibility.

Grid Changes

  • Added Dimensional Weight Divisor, Dimensional Weight and Billable Weight to the Packages grid export.
  • Add 'Qty Put-Away' to columns exported with Products and Packaging Features grids.
  • Search BOM Components column using SKU instead of name.
  • Rename 'Created Date' to 'Created At' on Lots/Expirations grid and change from date to datetime type.
  • Change column filter type for ASN/RMA # to 'text' instead of 'number' in Client UI (to match Admin UI).
  • Fix default sort order of some grids.

How did we do?

Version 2021.3

Version 2021.1