TL Rates — CSV Upload

Truckload (TL) carrier contracts are typically priced on a per-mile basis — the freight cost for a shipment is calculated by multiplying the agreed rate per mile by the distance between the origin and destination. To do this, OTM needs to know the distance for every lane it plans.

OTM supports two approaches to sourcing distances:

  • Distance Lookup (manual upload): The business team maintains a table of pre-defined distances between city pairs or zip codes and uploads them into OTM. This is the approach covered in this topic — the DISTANCE_LOOKUP file in the upload sequence stores these values.
  • Third-party distance providers: OTM can integrate with mileage calculation applications such as PC*MILER or MileMaker. When a rate is configured to use one of these providers, OTM calls the external application at runtime to fetch the exact mileage rather than relying on a stored value.
Configuring a distance provider is covered in the Rate Distance topic — it explains both the manual Distance Lookup approach and how to integrate a third-party engine like PCMiler. The RATE_DISTANCE_GID field in the files below must reference whichever distance source your environment is using.

OTM allows TL rate contracts to be loaded using CSV files instead of manual UI entry. This is the most efficient approach when setting up rates for multiple lanes or carriers.

LTL Rates — CSV Upload

LTL (Less-than-Truckload) rate pricing works differently from TL. Rather than a flat per-mile charge, LTL rates are class-based — the freight cost depends on the shipment’s weight, the distance, and the NMFC freight class of the goods being shipped. Heavier, denser freight falls into lower classes and attracts lower rates; lighter, bulkier freight is assigned higher classes.

In OTM, LTL pricing uses two layers:

  • Base Tariff — a rate offering already loaded in OTM that contains the published class-based rate table (rate per hundredweight by freight class and distance). This tariff is typically loaded once and shared across all carriers that use the same tariff basis.
  • Carrier Rate Offering — the actual contract with a specific carrier, which defines a discount percentage off the base tariff. OTM looks up the class rate from the base tariff, then applies the discount to calculate the final cost.

LTL lanes are also typically defined at a broader geography than TL. Where TL uses city-to-city lanes, LTL carriers often publish rates by origin city to destination state — reflecting how their regional networks are structured.

Rate Distance

Rate Distance in OTM is the calculated distance between a shipment’s origin and destination. OTM needs this distance to cost TL shipments on per-mile rate contracts. There are two ways to provide this distance:

  • Distance Lookup — your team pre-loads a table of distances lane by lane. OTM looks up the matching lane and reads the stored mileage. No external system is needed.
  • External Distance Engine — OTM calls a third-party routing engine (such as PCMiler from ALK Technologies) at plan time to fetch the live calculated distance. This requires a license and API access to the external system.

The Rate Distance record is linked to the Rate Offering (carrier contract) — whichever approach you configure, you reference it in that field so OTM knows which distance method to use when costing shipments under that contract.

Domain, Items, Locations, and Equipment

This is the first in a series of eight posts that walk through a complete OTM end-to-end transaction flow — from initial setup through planning, tendering, invoicing, and cost allocation. Each post builds on the previous one. Use this series as a starting point and refer to OTM Help documentation to explore each topic in depth.

Recommendation for new OTM consultants: If you are early in your OTM career, the single most effective way to build confidence is to complete this entire series hands-on in a non-production environment. Step through each post in order, create every object yourself, and verify the results — rather than just reading through them. You will make mistakes, and that is exactly the point: troubleshooting your own configuration teaches you far more than any documentation can.

You do not need to create a new Domain. Skip the Domain creation step and work inside your existing business domain instead. Everything else — Items, Locations, Equipment, Service Providers, Rates, Itineraries, Bulk Plan, Tender, Invoice, and Voucher Allocation — can be built and tested within your current domain without affecting production data.

Business Scenario:

Business Numbers, Planning Parameter

Business Numbers:

OTM auto-generates IDs for business objects — shipments, order releases, invoices — using Business Number Rules. By default, shipments get a simple sequential number (e.g. 01001). A custom rule lets you embed the date, a prefix, or a domain-specific sequence into the generated ID, making it easier to identify records and align with your organisation’s numbering conventions.

The default shipment number looks like this:

Default OTM shipment number showing sequential ID format

Bulk Plan

Bulk Plan is OTM’s automated planning engine. It reads Order Release or Order Movements, matches them against the Itineraries and Rate Records configured in earlier posts, and creates optimised Shipments with carrier assignments and freight cost.

Create an Order Base:

An Order Base (Purchase Order) represents a buying commitment for a quantity of goods. Order Releases drawn from it represent shipments of specific quantities.

Order Management > Purchase Order > Order Base > New

Enter the following details for the TCRP scenario:

Tender Process

After Bulk Plan creates Shipments, the next step is to notify the carrier — this is called Tendering. The carrier receives the shipment details (pickup time, locations, equipment), then accepts or rejects the tender. If rejected, OTM automatically re-tenders to the next available carrier on the lane.

Shipment status after Bulk Plan:

When shipments are first created by Bulk Plan, their Secure Resources status is SECURE_RESOURCES_NOT_STARTED, meaning no tender has been sent yet.

Invoicing

Once shipment execution is completed, the carrier sends a freight charge invoice for settlement. OTM can validate the invoice cost against the planned shipment cost, approve it, and then allocate that cost back to the originating Order Releases or Purchase Orders.

The three steps are: Match → Approve → Allocate.

Invoice Matching:

A Match Rule identifies which shipment corresponds to an incoming carrier invoice, by comparing reference numbers and the Service Provider. In this scenario the invoice carries the Shipment ID (SID) as a reference number, which is matched to the same reference on the shipment record.

Voucher Allocation

After an invoice is approved, OTM creates a Voucher record for it. Voucher Allocation distributes the total freight cost across the Order Releases on the shipment — proportionally by weight or volume — so each PO or Order Release line carries its share of the freight charge.

Voucher record after invoice approval:

OTM automatically creates the voucher once the invoice is approved:

Voucher record created after invoice approval

At this point the ALLOCATION_VOUCHER status on the voucher is NOT ALLOCATED: