26.02.01
Introduction
We are pleased to announce the release of Piyovi v26.02.01, which includes key enhancements aimed at improving usability, operational efficiency, and shipment visibility. Below is a summary of the new features and updates included in this release.
Delayed Shipment Report Enhancement
The Delayed Shipments Report has been enhanced to provide better visibility into shipments that miss their Estimated Delivery Date (ETD). In addition to shipments delivered late, the report now highlights shipments that are still in transit but have already crossed their ETD. This allows operations and customer service teams to proactively monitor delays and take corrective actions before delivery is completed.
Behavior Details
- The report continues to include shipments that were delivered after the Estimated Delivery Date (ETD).
- The report now also includes shipments that are not yet delivered and have already crossed the Estimated Delivery Date (ETD).
Multi-Value User Experience Enhancement - Default Description
A new enhancement has been implemented to improve the usability of multi-value input fields across the system. Previously, when entering values (such as Default Description, Tags, Emails, or Filter values), users were required to press Enter after each entry to ensure it was saved.
With this improvement, values are now automatically captured even if the user does not press Enter or click outside the field. This prevents accidental data loss and significantly enhances the overall user experience.
How it Works
- Automatic Value Capture:
When a user types a value and clicks outside the field (blur), the system will now automatically add the typed value, even if Enter is not pressed. - No Change to Existing Behavior:
Users can still press Enter to add values as before. The new behavior simply ensures the last value is not lost.
Screens Impacted
This enhancement has been applied to the following areas:
- Location
- Add Location → Information Tab → Tags
- Add Location → Settings Tab → Default Description
- Bulk Update Location → Tags
- Launchpad > Domain
- Add Domain → Tags
- Launchpad > Page
- Add Page → Tags
- Launchpad > Template
- Add Template → Tags
- Carrier
- Carrier Info Tab → Carrier Pickup Email(s)
- Tracking Tab → Add Config → Warning Notify To
- SSCC
- Add SSCC → Warning Notify To
- Webhook
- Add Webhook → Notify on Error
- Shipments
- Shipment Filter → Fields using “In” operator (multi-value fields)
NMFC Code - Configuration
We have introduced a new configuration screen in Piyovi to manage NMFC codes along with their descriptions. Once a user saves an NMFC (National Motor Freight Classification) code, it becomes available for selection within the Ship and Rate Shop screens in the package grid. Additionally, users can configure the LTL class associated with each NMFC code. When an NMFC code is selected in the Ship or Rate Shop screen, the corresponding LTL class is automatically populated in the relevant column.
Note
If users configure an LTL class along with the NMFC code, please consider the following: If the Auto Calculate LTL Class option is enabled, both the NMFC code selection and the automatic LTL class calculation will function together.
For example, if LTL Class 70 is configured for NMFC 139100-00 and the user selects this NMFC code in the package grid, Class 70 will automatically populate. If the user subsequently modifies the dimensions or weight, the LTL class will be recalculated according to standard LTL classification rules. Likewise, any recalculation will reflect appropriately based on updated shipment details.
Permissions
Two new permission roles have been introduced:
Permission: Manage NMFC
- Full access to NMFC configuration
- Can Add, Edit, and Delete NMFC records
Permission: NMFC - Readonly
- Read-only access
- Can view NMFC records but cannot modify them
NMFC Configuration Screen
Users can perform the following operations:
- Add new NMFC records
- Edit existing NMFC records
- Delete NMFC records
- Each NMFC record includes the following details:
- Information Tab: Reference ID, NMFC Code, Description, LTL Class, Status (Active / Inactive)
- Advance Tab : Limited to Location , Location Selection (This configuration allows companies to control NMFC applicability by location, if required.)



Usage in Ship Screen
- NMFC configuration is applied in the Package section.
- When a user selects an NMFC Code, the corresponding LTL Class is auto-populated.
- Manual override is allowed.
- If modified, the manual value overrides the mapped class. This reduces manual entry effort and prevents incorrect LTL Class selection.
Usage in Rate Shop Screen
- NMFC Code selection is available in the Rate Shop flow.
- The mapped LTL Class is automatically considered while fetching carrier rates.
- Manual override is still supported when required. This ensures accurate rating based on NMFC-to-LTL Class mappings
Return Shipment
We're excited to introduce a dedicated Return Shipment screen — a purpose-built experience for creating, managing, and tracking return shipments directly within Piyovi TMS.
Previously, return labels were handled as part of the outbound shipping flow. With this release, returns get their own dedicated workspace, making the process faster, cleaner, and more intuitive.
What's New
- A standalone Return screen is now available in the main navigation. It provides a familiar layout (similar to the Ship screen) tailored specifically for return shipment workflows.
- A dedicated Return Shipments listing is available under the Shipments section, giving you a filtered view of all return shipments with full search, filter, and bulk action capabilities.
- Return shipments are visually highlighted with a light blue color in the main shipment grid, making them easy to identify at a glance.

How to Use
Creating a Return Shipment
- Click "Return" in the top navigation bar
- Select your Location — the Ship To address will auto-populate from your location's configured return address
- In the left panel, select the Carrier, Service Level, and Carrier Account for the return
- Choose the Payment Type (Sender, Recipient, or Third Party) — if Third Party, enter the account number, zip code, and country
- Optionally select a Return Shipment Type and add Customer References
- In the right panel: - Packing tab — Add packages with weight and dimensions - International tab — Enter customs details for international returns - Additional Options tab — Select one or more Return Reasons and optionally enter a Description of Goods - Parties tab — Add Sold To or other party addresses as needed
- Click Ship to generate the return label, or Save to store as a draft for later
Viewing & Managing Return Shipments
- Navigate to Shipments → Returns to see all return shipments
- Use the filters at the top to narrow by Status, Date Range, Location, or Carrier
- Click Save Filter to remember your preferred filter settings

Available actions per shipment:
| Action | Description |
|---|---|
| View | Open the shipment detail view (shows RMA Number, Return Reason, and full tracking info) |
| Edit | Modify draft or validated return shipments |
| Cancel | Cancel a return shipment (with carrier void if already shipped) |
| Comments | Add or view comments |
| Export to Excel | Download the current view as a spreadsheet |
Select multiple rows for bulk actions: Cancel, Force Cancel, Add Comment, or Delete
Setup & Configuration
To enable the Return Shipment feature for your team, the following configuration steps are needed:
Permissions
Assign these permissions to the appropriate user roles:
| Permission | What It Controls |
|---|---|
| Return Ship | Access to the Return Ship screen |
| Return Shipment Save | Ability to save return shipment drafts |
| Manage Return Shipments | Full access to the return shipments listing, editing, and comments |
Carrier Setup
The Return Shipment special service must be enabled on each carrier that supports returns. If a carrier does not have this service enabled, users will see an error when attempting to create a return shipment with that carrier.
Ship From Address
- If a default Ship From address is configured under Configuration → Profile screen, it will be automatically populated in the Ship From section.
- If no default Ship From address is configured, users will have the option to manually enter the Ship From details.

Location Return Address *(Optional)
Each location can now have a dedicated Return Address configured. When a user creates a return shipment, this address is used as the default Ship To. If no return address is configured, the location's primary address is used instead.


Return Reasons & Return Shipment Types
- Return Reasons — Configurable list of reasons (e.g., Damaged, Wrong Item, Customer Request). Users can also enter custom reasons on the fly.
- Return Shipment Types — Configurable classification for return shipments, available at both system and company level.
Shipment Consolidation
Shipment Consolidation lets you group multiple individual shipments into a single Master Shipment. Grouping is driven by Consolidation Rules that you define - the rules decide which shipments belong together and how data (freight cost, documents, tracking) is distributed once the Master Shipment is shipped.
Key Benefits
- Fewer records to manage - multiple shipments under one Master
- Automatic freight distribution to child shipments based on your chosen rule
- Webhook events fire automatically when consolidation rules are triggered
- Flexible grouping: match by Location, Carrier, Ship-To ID, or any combination
Throughout this guide, "child shipment" and "individual shipment" are used interchangeably to mean the original shipments that get grouped under a Consolidation ID.
Setting Up a Consolidation Rule
Before you can consolidate shipments, you need at least one active Consolidation Rule. Every rule has three parts: Rule Information, Preferences, and Criteria.
Navigation path: Configuration > Rule Engine > Consolidation Rules > Add Rule

Figure 1 - Add Rule screen showing all three sections
Rule Information
This section controls when and where the rule is active.
Display Name: A friendly label for this rule
Description: Optional free-text notes about the rule purpose
Reference ID: Auto-generated unique identifier
Location: Which warehouse / origin location the rule applies to
Rule Rank: Priority order - lower number = higher priority when multiple rules match
Valid From / To Date: The date range during which this rule is active
Valid Time Range: The time window within each day (e.g. 12:00 AM - 11:59 PM)
Days of the Week: Which days the rule runs
Status: Active = rule is live; Inactive = rule is paused
Preferences
Preferences control how data is allocated to child shipments after the Master Shipment is shipped. These settings are covered in detail in Section 6. Set them to sensible defaults for now and adjust later.
Criteria
Criteria define what conditions a shipment must meet to qualify for this rule. The most important setting is Group By - it tells the system which fields must match for two shipments to be placed in the same group.
Example: Group By = Location, Carrier, Ship To ID means two shipments are only grouped together if they share the same Location AND Carrier AND Ship To ID.

Figure 2 - Completed rule example with Group By = Location, Carrier, Ship To ID
How Consolidation Works - Step-by-Step
The process moves through these stages: create individual shipments > trigger consolidation > system groups matching shipments under a Consolidation ID > you then promote the Consolidation ID to a Master Shipment.
#### Create an Individual Shipment Step 1 : Open a new shipment and fill in the required fields. The fields that matter for consolidation matching are the ones referenced in your rule Group By criteria - in this example: Location, Carrier, and Ship To ID.

Figure 3 - Shipment 1: Ship To = 2277, Ship From (Location) = NASP, Carrier = Mark Truck
Trigger Consolidation
Step 2: click the Consolidation . The system checks the shipment against all active rules. If it matches a rule criteria, it is assigned a Consolidation ID.

Figure 4 - Success: Shipment is consolidated under rule name Consolidation Rule 500
Repeat for Additional Shipments
Create more shipments with different combinations of criteria. Shipments whose Group By values match will be placed in the same Consolidation ID. Shipments with different values get their own separate Consolidation ID.
Shipment 1
- Location: NASP
- Ship-To ID: 2277
- Carrier: Mark Truck

Figure 5 - Shipment 1 (NASP / 2277 / Mark Truck)
Shipment 2 (same criteria as Shipment 1)
- Location: NASP
- Ship-To ID: 2277
- Carrier: Mark Truck

Figure 6 - Shipment 2 (NASP / 2277 / Mark Truck) - will join Shipment 1 group
Shipment 3 (different criteria)
-
Location: DESP
-
Ship-To ID: 3355
-
Carrier: Bollore

Figure 7 - Shipment 3 (DESP / 3355 / Bollore) - starts a new group
Shipment 4 (same criteria as Shipment 3)
- Location: DESP
- Ship-To ID: 3355
- Carrier: Bollore

Figure 8 - Shipment 4 (DESP / 3355 / Bollore) - joins Shipment 3 group
Result:
- Consolidation ID 1 -> Shipments 1 & 2 (NASP / 2277 / Mark Truck)
- Consolidation ID 2 -> Shipments 3 & 4 (DESP / 3355 / Bollore)

Figure 9 – showing Consolidation ID’s list
Webhook - Shipment Consolidate Event (Optional)
If you want an external system to be notified every time a consolidation rule is applied, add the Shipment Consolidate event to your webhook configuration.

Figure 10 - Webhook configuration: add "Shipment Consolidate" to the Events list
Creating the Master Shipment
Once the individual shipments have been grouped under Consolidation IDs, navigate to the Consolidation screen to promote them into a Master Shipment.
- Step 1 : Go to Shipments > Consolidation
You will see a list of all active Consolidation IDs. Each row shows the Consolidation ID, how many shipments are in the group, the current status, and the rule name.

Figure 11 - Consolidation screen: two Consolidation IDs with Status = Created
- Step 2 : Select a Consolidation ID row (click anywhere on the row)
The detail panel expands to show all child shipments in the group.

Figure 12 - Consolidation screen: two Consolidation IDs with child shipments
- Step 3 : Select the Consolidation ID you want to Consolidate into Master Shipment
Tick the checkbox next to the row, then click the Consolidation button in the top-right corner. The button becomes available as soon as at least one row is selected

Figure 13 – Select the checkbox ①, then click the Consolidation button ②
- Step 4 : The Master Shipment is created
Watch the status column update through the following stages:
- Consolidation in progress: Processing has started (green banner at top)
- Consolidated: Master Shipment has been created — status column turns purple
- Ship icon : Appears in the Action column once the Master Shipment is ready to ship

Figure 14 – Status changes: ① banner confirms progress, ② status = Consolidated, ③ Master shipment icon appears
After confirming, the Master Shipment is created. It inherits the following from the child shipments:
- Ship From and Ship To addresses - taken from the first child shipment
- Carrier and Service - taken from the first child shipment
- Package and item information - combined from all child shipments
- Master Shipment Reference Number - generated according to the Master Shipment Ref preference
Important: The Master Shipment Ref preference is the only Preference that applies during creation. All other Preferences (freight, documents, status, tracking) apply after the Master Shipment is shipped.

Figure 15 – Master Shipment detail: ① header shows the Master Consolidation ID
Shipping the Master Shipment & Webhook Events
Once the Master Shipment is consolidated and ready, you can ship it directly from the Consolidation screen.
- Step 1: Select the consolidated row (status = Consolidated).
- Step 2 : Click the Ship (top-right, next to the Consolidation).

Figure 16 – Status = Consolidated, ship icon and Ship button are active

Figure 17 - Status changes to "In Progress" while shipping is being processed

Figure 18 – Master shipment processed Successfully.
Webhook Events After Shipping
After shipping, the system fires webhook events for the Master Shipment and each individual child shipment. Which events fire depend on the Individual Shipment Status preference

Figure 19 - Webhook Outgoing log: three "shipment. Create" events - one for the Master, two for child shipments
- If status is set to Shipped -> a "shipment. create" event fires for each child shipment
- If status is set to Cancelled -> a "shipment.cancel" event fires for each child shipment
- A "shipment.create" event always fires for the Master Shipment itself
Rule Preferences Reference
All Preferences (except Master Shipment Ref) are applied after the Master Shipment is shipped. They control how freight, documents, status, and tracking are distributed to child shipments.
Master Shipment Ref
Defines how the Master Shipment reference number is generated.

Figure 20 - Master Shipment Ref options: Auto Generate or Concatenate Ref Numbers
- Auto Generate: The system creates a new, unique reference number automatically
- Concatenate Ref Numbers: The reference number is built by joining all child shipment reference numbers together
Freight Cost Allocation
Controls how the Master Shipment total freight cost is split across child shipments.

Figure 21 - Freight Cost Allocation dropdown with all six options
-
Zero: No freight assigned to any child. 100% stays at Master level.
Example: Master Freight = $200 -> Child 1: $0, Child 2: $0 -
First Shipment Only: Full freight assigned to the first child only. All others receive $0.
Example: Master Freight = $200 -> First child: $200, All others: $0 -
100% Each Shipment: Full freight amount applied to every child shipment individually.
Example: Master Freight = $200, 2 children -> Each child: $200 -
Equal: Freight split equally across all child shipments.
Example: Master Freight = $200, 2 children -> Each child: $100 -
Prorated By Weight: Freight distributed proportionally to each child weight.
Example: Master Freight = $200, Ship1=60kg, Ship2=40kg -> Ship1: $120 | Ship2: $80 -
Prorated By Value: Freight distributed proportionally to each child total customs value.
Example: Master Freight = $200, Ship1=$600, Ship2=$400 -> Ship1: $120 | Ship2: $80
Document Handling
Controls which child shipments receive the documents generated for the Master Shipment.

Figure 22 - Document Handling options
- First Shipment Only: Documents are assigned only to the first child shipment
- Save All: Every child shipment receives a copy of all Master Shipment documents
If you also configure Include Documents for Master (see Section 6.5), only the selected document types will be generated. Documents not configured for the carrier are skipped even if selected.
Individual Shipment Status
Sets the status applied to each child shipment after the Master Shipment is shipped.

Figure 23 - Individual Shipment Status: Cancelled or Shipped
- Cancelled: Child shipments are marked as Cancelled once the Master is shipped
- Shipped: Child shipments inherit the Shipped status from the Master Shipment
Include Documents for Master
If documents are selected under Include Documents for Master, then only the selected documents will be generated for the master shipment shipped
All other documents configured in the system will be ignored.
Additionally, if any selected document is not configured for the carrier in the system, that document will not be generated, even if it is selected in the rule.

Figure 24 -Include Document Selection
Use Master Tracking
Controls whether the Master Shipment tracking number is propagated to child shipments.

Figure 25 - Use Master Tracking: Yes or No
- Yes: Master Shipment tracking number is copied to every child shipment
- No: Child shipments retain their own individual tracking numbers
Applying Consolidation from the Shipments Module
In addition to the ship screen, you can apply consolidation rules directly from the Shipments list. This lets you consolidate one or more shipments on the spot, without leaving the Shipments module.
How It Works
When you select one or more shipments in the Shipments list and click the Action button, a Consolidation option appears. The system checks all active consolidation rules in rank order:
- If a matching active rule is found and all criteria are satisfied, the rule is applied and the shipment(s) are consolidated automatically.
- If no active rule matches the selected shipment(s), an error is shown: "No matching rule found."
- If all consolidation rules are inactive, the system falls back to the older (legacy) consolidation process.
Tip: Make sure at least one Consolidation Rule is Active and covers the location, carrier, and other criteria of the shipments you want to consolidate. Otherwise the system will either show an error or fall back to the legacy flow.
Step-by-Step
- Step 1 : Go to the Shipments module
Navigate to the main Shipments list from the left-hand menu.
- Step 2 : Select the shipment(s) you want to consolidate
Use the checkboxes on the left of each row to select one or more shipments that share the same Group By criteria (e.g. same Location, Carrier, and Ship-To ID)
- Step 3 : Click the Action button.
The Action menu appears at the top of the list. Click it to reveal available bulk actions.
- Step 4 : Choose Consolidation from the Action menu.
The system evaluates the selected shipments against all active consolidation rules.

Figure 26 - Selecting shipments and clicking Action -> Consolidation in the Shipments module
- Step 5 : Review the outcome.
If consolidation succeeds, the shipments are assigned a Consolidation ID and their status updates. If no rule matches, an error message is displayed.
What if all rules are Inactive? The system falls back to the older consolidation process. In this fallback mode, shipments are grouped without rule-based criteria. It is recommended to always keep at least one rule Active to ensure consistent, rule-driven behaviour.
Auto-Consolidation via Carrier Account Settings
If you always want to consolidate shipments for a particular carrier and account - without having to click the Consolidation button each time - you can enable the Always Consolidate option at the carrier account level.
Once enabled, every shipment created using that carrier and account is automatically evaluated against active consolidation rules. If a matching rule is found and satisfied, the shipment is consolidated immediately. If no rule matches, the shipment is processed normally.
When to Use This Setting
- You have a dedicated carrier account that always ships consolidated loads.
- You want to remove the manual step of clicking Consolidation on every shipment.
- Your consolidation rules are stable and well-tested, so automatic application is safe.
How to Enable Always Consolidate
- Step 1: Go to Configuration > Carrier Accounts
Find the carrier account you want to configure.
- Step 2: Open the carrier account record
Click the account name or the edit icon to open the account settings.
- Step 3: Set Always Consolidate = Yes
Locate the Always Consolidate field and switch it to Yes.

Figure 27 - Carrier Account settings: Always Consolidate = Yes
- Step 4 : Save the carrier account
All future shipments created with this carrier and account will now be automatically consolidated when a matching rule is found.

Figure 28 - Shipment automatically consolidated on ship- no manual trigger needed
Behavior Summary
| Scenario | Always Consolidate Setting | Result |
|---|---|---|
| Matching active rule exists | Yes | Shipment is automatically consolidated on |
| No matching rule found | Yes | Shipment is processed normally (not consolidated) |
| All consolidation rules inactive | Yes | Shipment is processed normally (legacy fallback does not apply here) |
Filtering & Column Options
Using the Consolidation Filter
The filter lets you quickly find Master and Child shipments using search criteria such as tracking number, location, or who created the consolidation.
-
Step 1 : On the Consolidation tab, click Create Filter.
-
Step 2 : Choose a Field - what you want to search by.
- Tracking # : The shipment tracking number
- Location: The shipment origin or destination location
- Consolidation Created By: The user who created the consolidation entry
-
Step 3 : Select an Operator
- Equals: Exact match
- Contains: Partial match - value appears anywhere in the field
- Does Not Equal: Exclude exact matches
- In: Match any item from a comma-separated list
-
Step 4 : Enter the Value - what you are searching for
Example filter: Field = Tracking # | Operator = Equals | Value = 2343456789674584
This returns all Master and Child shipments where the tracking number matches exactly._
-
Step 5 : Click Run to apply the filter. Results show all matching shipments.
-
Step 6 : Click Save (optional) to save the filter for reuse.

Figure 29 - Create Filter panel with field and operator options

Figure 30 - Filter results showing matching Master and Child shipments
Customising Columns
You can choose which columns appear on the Consolidation screen. There are separate column pickers for Master Shipments and Child Shipments.
- Click Column Options under Master to add or remove Master Shipment columns
- Click Column Options under Child to add or remove Child Shipment columns


Figure 31 & 32 - Column Options picker for Master and Child shipments
Logs for EDI Carriers
A new File Exchange module has been introduced in PIYOVI to allow users to view and manage file exchange logs directly from the application.
When the EDI tracking background job processes files from carrier SFTP/FTP connections, each file is now logged in the system with detailed metadata such as carrier details, processing status, reference numbers, and file information. This helps operations teams trace file processing activities and quickly identify issues. As part of the initial rollout, the module supports the following file types:
-
Batch Shipment Files
-
EDI 990 – Load Tender Response
-
EDI 214 – Shipment Status Message

Permissions
Manage File Exchange
- Full access to the File Exchange module
- Users can view, download, delete files, and reprocess EDI files
File Exchange - Readonly
- Read-only access to File Exchange logs
- Users can view and download files but cannot modify or reprocess them
File Exchange Screen
The File Exchange page is available under:
Configuration → Shipping & Compliance → File Exchange
This screen provides a centralized view of all processed files. Users can perform the following operations:
-
View logs of uploaded and processed files
-
Filter files using period, document type, and search
-
Download the original file for review
-
Delete files when no longer required (soft delete)
-
Monitor file processing status such as Success, Warning, or Failure

Include Carrier & Carrier Account Custom Attributes in Invoice and Shipment Webhooks
An enhancement has been implemented to include Carrier and Carrier Account custom attributes in the Invoice and Shipment webhook payloads. This ensures that external systems receiving webhook notifications have access to the required carrier-related attributes when processing End-of-Day (EOD) invoices and shipment events.
Previously, these attributes were stored in Carrier and Carrier Account but were not propagated through the invoice processing pipeline to webhook events.
With this update, the system now retrieves and includes these custom attributes in webhook payloads for shipment and invoice events. This improvement enables downstream systems to correctly identify supplier-related information when processing invoice creation, approval, posting, rejection, and update events.
Attributes Configuration
Attributes can now be managed for both Carrier and Carrier Account configurations. Users can perform the following actions:
-
Save custom attributes for carriers and carrier accounts
-
Update existing custom attribute values
-
Delete custom attributes when no longer needed
The **Attributes ** will be visible in the Carrier and Carrier Account configuration screens only when attribute records exist.

Carrier Attribute

Carrier Account Attribute

Shipment & Invoice Webhook Enhancements
When shipment or invoice webhooks are triggered, the system now includes Carrier and Carrier Account custom attributes in the webhook payload.
This applies to the following webhook events:
-
Shipment Create
-
Shipment Update
-
Invoice Create
-
Invoice Approve
-
Invoice Post
-
Invoice Reject
These attributes allow webhook consumers to retrieve Supplier Code and other carrier-specific metadata required for external financial or ERP integrations.