# Tenders: an offer a carrier can accept and sign

Version 0.28.0, released 2025-09-26. Source: https://vektortms.com/releases/tenders-module

> Build a carrier offer against a manifest with the margin recalculating as you type, send it as a link the carrier accepts and signs, and watch the driver, the truck, the trailer and the tracking state arrive on the row. Outbound, inbound and the configuration behind them, in one tab.

![Tenders: an offer a carrier can accept and sign](https://storage.googleapis.com/vektor-public-storage/changelog/139faa4d-4a31-4f7f-b93c-00fe9d925768.webp)

Handing a load to a carrier used to be a phone call, an email with a rate confirmation attached, a scan on the way back, and a separate conversation to find out who is actually driving. Nothing in that loop tells you what you are making on the load, and nothing tells you whether the carrier has even read the offer.

Tenders puts the whole handoff in the dashboard. You build the offer against a manifest, the carrier opens it from a link, accepts, signs the rate confirmation and fills in the driver, the truck and the trailer. You watch the margin while you set the rate, and you can see how far the carrier has got without picking up the phone.

## What changed

**Dispatch → Tenders** has three tabs: Outbound for the offers you send, Inbound for the ones that come to you, and Configuration for the rules they run on. Across the top of the outbound list, status tabs split it into All, Drafts, Active, Expired, Accepted and Inactive.

One row carries the whole state of one offer:

- **Expires in** counts down while the tender is live, and reads "Expired 2 days ago" once it is not.
- **Carrier** shows who opened the tender and when, so "Not viewed" is a fact instead of a guess.
- **Offer** is what you are paying, with the per-mile rate under it. **Gross** is what the load pays you, with the margin and its percentage.
- **Setup** is a counter from 0/3 to Completed, and it names what is still missing: review, driver details and signature, tracking.
- **Drivers** shows the driver the carrier assigned, with the truck and trailer reference numbers.
- **Tracking** shows how far the driver has got, from Not invited through Invited to Accepted, and whether the truck is reporting or offline.

![Step two of the tender: pay items on the left, Client Pay and the margin recalculating under them, expiry as a row of buttons, and the carrier's missing paperwork named before you send.](https://storage.googleapis.com/vektor-public-storage/changelog/2b98d45a-d899-44a1-aa3c-181637653726.webp "Step two of the tender: pay items on the left, Client Pay and the margin recalculating under them, expiry as a row of buttons, and the carrier's missing paperwork named before you send.")

**Building the offer.** Hit E-Tender on a manifest and the tender is built in three steps: pick the carrier, set the offer, send it. The middle step is where the money is. Pay items take units and rates, and Client Pay, Margin and the margin percentage recalculate underneath as you type. Expiry is a row of buttons from 30m to 1d, or a custom time. If the carrier is short on paperwork, the step names the missing documents before you send anything.

![One accepted tender: the route on a map, the money, the signature on the rate confirmation, the driver's tracking state, and every version of the signed rate confirmation.](https://storage.googleapis.com/vektor-public-storage/changelog/400e0a5a-c237-4999-b520-80b6d7db0971.webp "One accepted tender: the route on a map, the money, the signature on the rate confirmation, the driver's tracking state, and every version of the signed rate confirmation.")

**One tender, one screen.** Open a tender and you get the route and its stops on a map, the carrier with their DOT number and contact, the pay items, the signatures with the location and the device they were signed from, the driver with truck and trailer, and the acceptance counter with the steps behind it. Tabs underneath hold the agreements with every version, the sessions, the notes and the mailing history.

![A configuration: the flow options a tender runs on, and the agreements it attaches, each with its pre-sign and signed template.](https://storage.googleapis.com/vektor-public-storage/changelog/f2d1191d-dced-4caa-8a89-e4221008af2a.webp "A configuration: the flow options a tender runs on, and the agreements it attaches, each with its pre-sign and signed template.")

**Configuration.** A configuration decides what a tender actually does. Skip the review step and go straight to driver details and signature. Let carriers download the rate confirmation before tracking has been set up. Sync the dispatch note with the order note. Under those sit the agreements: each one has a type, a pre-sign template, a signed template and a switch for whether it is required. A configuration can be general, or specific to one carrier.

## Why it matters

- **The margin is visible before you send.** You set the rate against the gross on the same screen, not against a number in another tab.
- **The carrier does the paperwork.** They accept, sign the rate confirmation and enter the driver, the truck and the trailer themselves. It lands on the tender as data, not as an attachment somebody has to retype.
- **One row answers the two questions.** Has the carrier seen it, and is the load actually covered. The list says both without a phone call.
- **The signature has a record.** Who signed, from where, and on what device.

## How to use it

Open **Dispatch → Tenders**. Before your first tender, look at **Configuration** and set the flow options and the agreements you want attached. Then find the manifest you want covered, hit **E-Tender**, pick the carrier, set the pay items and the expiry, and send it. The offer appears under **Outbound**, and from then on the row tells you where it stands.
