July 9, 2026 · Industry Guide
Automate Freight & Logistics Contracts via API: Rate Confirmations & BOLs (2026)
In spot freight and full truckload (FTL) logistics, dispatch speed dictates profit margin. Manual PDF emails, faxed rate sheets, and paper Bills of Lading cost freight brokers 45+ minutes per load. Here's how to automate freight contracts PDF generation and e-signatures in real time.
Founder, Signbee
TL;DR
Automating freight contracts PDF generation and e-signatures allows Transportation Management Systems (TMS) to programmatically issue Rate Confirmations, electronic Bills of Lading (eBOLs), and Master Carrier-Broker Agreements. By triggering contract creation directly from load dispatch events via the Signbee REST API, logistics providers cut load tender turnaround times from 45 minutes to under 15 seconds, while maintaining full FMCSA 49 CFR § 371.3 and DOT legal compliance. Complete Node.js and Python webhook examples are included below.
The global freight logistics industry relies on a foundation of fast, enforceable agreements. Every year, over 11 billion tons of freight move across North America alone, governed by hundreds of millions of Rate Confirmations (Rate Cons), Bills of Lading (BOL), and Carrier-Broker Master Agreements.
Historically, executing a spot freight transaction meant an operational coordinator manually filling out a PDF template in a legacy portal, emailing it to a truck driver or carrier dispatcher, waiting for them to print, sign, scan, or fax it back, and manually attaching the document to a Transportation Management System (TMS). If a load rate changed due to a fuel surcharge adjustment or lumper fee, the entire cycle restarted.
While high-transaction sectors like proptech have modernized agreement workflows (see our detailed guide on e-signature APIs for real estate), freight logistics presents extreme real-time demands. A carrier on a highway shoulder cannot spend 20 minutes printing a document. When a dispatcher locks a rate, the driver needs an instant SMS link on their smartphone to review and sign in two taps.
By integrating an API-first document engine, freight brokerages and 3PLs can automate freight contracts PDF rendering and signing workflows directly within their core software stack—eliminating per-envelope tax, preventing double brokering, and securing legally binding digital audit trails under FMCSA regulations.
The Freight Logistics Document Matrix
Freight logistics workflows require three core legal documents, each serving a distinct regulatory and operational purpose across the supply chain:
| Document Type | Primary Parties | Key Operational Terms | Regulatory Standard |
|---|---|---|---|
| Rate Confirmation (Rate Con) | Freight Broker & Motor Carrier | Line-haul rate, fuel surcharge, detention policy, pickup/drop windows | 49 CFR § 371.3 / ESIGN Act |
| Bill of Lading (eBOL) | Shipper, Carrier, & Consignee | Freight description, weight, piece count, hazmat status, title transfer | 49 CFR § 373.101 / Carmack |
| Broker-Carrier Agreement | Brokerage & Carrier Owner/Op | Insurance mandates, cargo liability limits, payment terms (Net 30/QuickPay) | FMCSA Part 387 Insurance |
| Accessorial & Lumper Receipt | Driver & Warehouse Receiver | Detention hours logged, loading/unloading fees, temperature logs | Contractual Accessorial Addendum |
Architectural Workflow Pipeline: TMS Trigger to Driver Signature
An enterprise-grade freight contract automation pipeline eliminates manual human intervention between load booking and dispatch lock. Much like engineering teams automate NDA signing via API, logistics engineers can design stateless, event-driven contract pipelines.
The modern automated freight contract pipeline operates through four discrete stages:
TMS Load Booking & Event Trigger
A load is covered in your TMS (McLeod, Tailwind, Rose Rocket, or custom REST platform). The booking status transitions to COVERED_PENDING_DISPATCH, firing an internal webhook event containing load variables: MC/DOT numbers, origin/destination coordinates, commodities, and agreed rates.
Dynamic Rate Lock & Markdown Contract Generation
Your backend service ingests the TMS event payload and dynamically formats a structured Markdown contract. Dynamic rate calculations (base rate + FSC + detention rules) are bound directly into immutable document text without fragile drag-and-drop coordinate templates.
Signbee REST API Dispatch & SMS Deep Link
The generated markdown is posted to https://signb.ee/api/v1/send. The API returns a lightweight mobile signing URL. Your automated dispatch bot immediately sends an SMS deep link directly to the carrier driver's mobile device.
Mobile Touch Signature & Webhook Reconciliation
The driver taps the link, reviews the Rate Con or eBOL on their smartphone, signs with their finger, and submits. Signbee seals the document with a cryptographic SHA-256 signature certificate and posts a document.signed webhook back to your server. Your TMS automatically updates load status to DISPATCHED_LOCKED and attaches the certified PDF.
When managing high-volume operations with dozens or hundreds of concurrent dispatches daily, high throughput is essential. Logistics platforms handling batch dispatches can review our comprehensive guide on using a batch e-signature API for multiple documents to dispatch bulk carrier packets in parallel.
Node.js Implementation: Programmatic Rate Confirmation & Webhooks
Below is a complete Node.js / Express snippet demonstrating how to generate a dynamic Rate Confirmation contract from TMS load data, dispatch it via Signbee's REST API, and handle the real-time completion webhook.
import express from "express";
import crypto from "crypto";
const app = express();
app.use(express.json());
const SIGNBEE_API_KEY = process.env.SIGNBEE_API_KEY!;
const WEBHOOK_SECRET = process.env.SIGNBEE_WEBHOOK_SECRET!;
interface LoadDispatchData {
loadId: string;
carrierName: string;
carrierMc: string;
driverName: string;
driverPhone: string;
driverEmail: string;
origin: string;
destination: string;
pickupTime: string;
lineHaulRate: number;
fuelSurcharge: number;
equipmentType: string;
}
// 1. Generate Markdown Rate Confirmation from TMS Load Data
function buildRateConMarkdown(load: LoadDispatchData): string {
const totalPay = load.lineHaulRate + load.fuelSurcharge;
return `# RATE CONFIRMATION & FREIGHT DISPATCH CONTRACT
**Load ID:** ${load.loadId}
**Date:** ${new Date().toISOString().split("T")[0]}
## 1. Carrier & Driver Information
- **Carrier Legal Name:** ${load.carrierName}
- **MC / DOT Number:** ${load.carrierMc}
- **Assigned Driver:** ${load.driverName}
- **Driver Contact:** ${load.driverPhone}
- **Equipment Specified:** ${load.equipmentType}
## 2. Route & Transit Schedule
- **Origin Loading Facility:** ${load.origin}
- **Scheduled Pickup Window:** ${load.pickupTime}
- **Destination Delivery Facility:** ${load.destination}
## 3. Financial Agreement & Accessorial Rates
| Component | Amount (USD) |
| :--- | :--- |
| Line-Haul Rate | $${load.lineHaulRate.toFixed(2)} |
| Fuel Surcharge (FSC) | $${load.fuelSurcharge.toFixed(2)} |
| **Total Agreed Rate** | **$${totalPay.toFixed(2)}** |
### Accessorial Terms & Detention Rules
1. **Free Time:** 2 hours free time at pickup and delivery.
2. **Detention Rate:** $75.00/hour thereafter, requiring real-time GPS check-in logs.
3. **Double Brokering Ban:** Re-brokering this load voids payment and incurs a $5,000 penalty fee under FMCSA broker rules.
By signing below, Carrier agrees to transport the described load under these explicit terms.`;
}
// 2. Endpoint: Dispatch Rate Con to Carrier Driver
app.post("/api/tms/dispatch-load", async (req, res) => {
try {
const loadData: LoadDispatchData = req.body;
const markdownContract = buildRateConMarkdown(loadData);
const apiResponse = await fetch("https://signb.ee/api/v1/send", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${SIGNBEE_API_KEY}`,
},
body: JSON.stringify({
markdown: markdownContract,
recipient_name: loadData.driverName,
recipient_email: loadData.driverEmail,
metadata: {
load_id: loadData.loadId,
carrier_mc: loadData.carrierMc,
dispatch_type: "RATE_CONFIRMATION",
},
expires_in_days: 1,
}),
});
if (!apiResponse.ok) {
throw new Error(`Signbee API returned status ${apiResponse.status}`);
}
const { document_id, signing_url } = await apiResponse.json();
// Trigger automated SMS to Driver (via Twilio or internal SMS gateway)
// await sendSms(loadData.driverPhone, `Sign Rate Con for Load ${loadData.loadId}: ${signing_url}`);
res.status(200).json({
success: true,
loadId: loadData.loadId,
documentId: document_id,
signingUrl: signing_url,
});
} catch (error: any) {
res.status(500).json({ error: error.message });
}
});
// 3. Webhook Listener: Process Completed Signatures Real-Time
app.post("/webhooks/signbee-complete", (req, res) => {
const signature = req.headers["x-signbee-signature"] as string;
const hmac = crypto.createHmac("sha256", WEBHOOK_SECRET);
const digest = hmac.update(JSON.stringify(req.body)).digest("hex");
if (signature !== digest) {
return res.status(401).send("Invalid webhook signature HMAC");
}
const { event, data } = req.body;
if (event === "document.signed") {
const loadId = data.metadata.load_id;
const pdfDownloadUrl = data.certified_pdf_url;
const signedAt = data.completed_at;
console.log(`[TMS UPDATE] Load ${loadId} signed by carrier at ${signedAt}.`);
// Update TMS Database Status to DISPATCHED_LOCKED and store PDF URL
// await tmsDb.loads.update({ where: { id: loadId }, data: { status: "DISPATCHED", rateConPdf: pdfDownloadUrl } });
}
res.status(200).json({ received: true });
});
app.listen(3000, () => console.log("TMS Dispatch Server running on port 3000"));Python Implementation: eBOL Generation & Verification
In Python-based logistics backends (FastAPI, Django, or Flask), generating electronic Bills of Lading (eBOLs) for dock terminal drivers and receiving clerks is equally straightforward. Here is a production-ready FastAPI service:
import hmac
import hashlib
import json
import os
import requests
from fastapi import FastAPI, Request, HTTPException, Header
app = FastAPI(title="Logistics eBOL Automation Engine")
SIGNBEE_API_KEY = os.getenv("SIGNBEE_API_KEY", "sb_live_secret_key")
WEBHOOK_SECRET = os.getenv("SIGNBEE_WEBHOOK_SECRET", "whsec_logistics_secret")
def render_ebol_markdown(bol_data: dict) -> str:
"""Renders FMCSA-compliant eBOL markdown payload."""
return f"""# ELECTRONIC BILL OF LADING (eBOL)
**eBOL Reference Number:** {bol_data['bol_number']}
**Date of Issuance:** {bol_data['ship_date']}
## 1. Shipping & Receiving Facilities
- **Consignor (Shipper):** {bol_data['shipper_name']}, {bol_data['shipper_address']}
- **Consignee (Receiver):** {bol_data['consignee_name']}, {bol_data['consignee_address']}
- **Carrier Name:** {bol_data['carrier_name']} (USDOT #{bol_data['usdot_num']})
- **Trailer / Container Number:** {bol_data['trailer_num']}
## 2. Commodity & Cargo Specification
| Item | Handling Units | Package Type | Weight (lbs) | Hazmat |
| :--- | :--- | :--- | :--- | :--- |
| {bol_data['commodity']} | {bol_data['pallets']} | Pallets | {bol_data['weight_lbs']} | NO |
## 3. Shipper Certification & Carrier Receipt
RECEIVED, subject to individually determined rates or contracts, the property described above in apparent good order.
*Shipper Signature (Pre-Signed at Gate):* {bol_data['shipper_name']}
*Driver Signature Required Upon Dock Departure below:*
"""
@app.post("/api/v1/ebol/create")
async def create_and_dispatch_ebol(payload: dict):
bol_markdown = render_ebol_markdown(payload)
headers = {
"Authorization": f"Bearer {SIGNBEE_API_KEY}",
"Content-Type": "application/json"
}
body = {
"markdown": bol_markdown,
"recipient_name": payload["driver_name"],
"recipient_email": payload["driver_email"],
"metadata": {
"bol_number": payload["bol_number"],
"load_id": payload["load_id"],
"doc_type": "ELECTRONIC_BOL"
},
"expires_in_days": 2
}
response = requests.post("https://signb.ee/api/v1/send", headers=headers, json=body)
if response.status_code != 200:
raise HTTPException(status_code=500, detail=f"Signbee API error: {response.text}")
res_data = response.json()
return {
"status": "DISPATCHED",
"bol_number": payload["bol_number"],
"document_id": res_data.get("document_id"),
"signing_url": res_data.get("signing_url")
}
@app.post("/webhooks/ebol-status")
async def handle_ebol_webhook(request: Request, x_signbee_signature: str = Header(None)):
raw_body = await request.body()
# Compute HMAC SHA-256 verification signature
expected_sig = hmac.new(
WEBHOOK_SECRET.encode('utf-8'),
raw_body,
hashlib.sha256
).hexdigest()
if not x_signbee_signature or not hmac.compare_digest(expected_sig, x_signbee_signature):
raise HTTPException(status_code=401, detail="Invalid HMAC signature")
event_data = json.loads(raw_body.decode('utf-8'))
if event_data.get("event") == "document.signed":
doc_meta = event_data["data"]["metadata"]
certified_pdf = event_data["data"]["certified_pdf_url"]
print(f"eBOL {doc_meta['bol_number']} signed! Certified PDF: {certified_pdf}")
# Execute internal warehouse dispatch release workflow...
return {"status": "SUCCESS"}Compliance & Legal Framework under FMCSA and DOT
Electronic freight contract signatures are backed by strict federal statutory frameworks. Understanding these regulations ensures your automated contract platform remains legally unassailable during DOT audits, cargo claim disputes, or rate litigation:
- 49 CFR § 371.3 (Records of Freight Brokers): Federal regulations require freight brokers to maintain complete records of every transaction for at least 3 years. Mandatory items include the name of the carrier, consignor/consignee, gross freight charges, and broker commission. Signbee's automated engine logs these fields into tamper-proof PDF audit certificates, meeting FMCSA record retention requirements automatically.
- 49 CFR § 373.101 (Bills of Lading Mandate): Mandates that every motor carrier issuing a Bill of Lading must capture essential shipping details (consignor, consignee, origin, destination, commodity description, piece counts, and weights). In 2018, the FMCSA updated regulatory guidance confirming that electronic signatures on eBOLs fully satisfy physical paper requirements, provided documents can be produced electronically upon request by DOT enforcement officers.
- ESIGN Act (15 U.S.C. § 7001) & UETA: Federal law establishes that contracts and signatures cannot be denied legal validity or enforceability solely because they are in electronic format. Rate Confirmations signed on mobile touchscreens hold identical legal standing to ink signatures on paper.
- Carmack Amendment (49 U.S.C. § 14706): Governs interstate motor carrier cargo liability. Having a time-stamped eBOL with SHA-256 cryptographic proof establishes exact cargo condition upon receipt, shielding brokers and carriers against fraudulent cargo loss or damage claims. For a deeper look into cryptographic verification, review our breakdown on how SHA-256 signing certificates work.
For a comprehensive breakdown of international signature validity across global supply chains, see our detailed guide on E-Signature Law: eIDAS, ESIGN, and the ECA.
Economic Analysis: Legacy Portals vs. Signbee API Automation
Legacy e-signature platforms (such as DocuSign or Adobe Sign) charge per-envelope pricing models designed for slow sales cycles rather than high-frequency logistics dispatches. When applied to 5,000 spot loads per month, per-envelope fees severely erode brokerage margins.
| Operational Metric | Legacy E-Sig Portals (DocuSign) | Signbee API Automation |
|---|---|---|
| Pricing Structure | $25.00 – $40.00 / envelope | $0.50 / document (or volume tier) |
| Monthly Cost (5,000 Loads) | $125,000 / month | $2,500 / month (98% savings) |
| Dispatch Turnaround Time | 30 – 60 minutes manual lag | < 15 seconds automated API flow |
| Mobile Signing Experience | App download or heavy webview | Instant mobile web deep link (0 install) |
| Template Configuration | Fragile drag-and-drop coordinate fields | Dynamic Markdown text rendering |
Logistics Performance Impact
For a broader comparison of API options across provider tiers, see our in-depth evaluation of the DocuSign vs Signbee API architecture.
Frequently Asked Questions
How do electronic Bills of Lading (eBOLs) satisfy FMCSA 49 CFR § 373.101 requirements on mobile devices?
Under Federal Motor Carrier Safety Administration (FMCSA) regulations (49 CFR § 373.101), motor carriers transporting freight must issue a receipt or Bill of Lading containing specific mandatory terms, including names of consignor/consignee, origin/destination points, commodity descriptions, piece counts, and freight weights. The FMCSA explicitly permits electronic generation, transmission, and signature of eBOLs provided the document remains accessible to drivers, law enforcement officers, and DOT inspectors upon demand. When using Signbee's API, the eBOL is rendered as a mobile-optimized document with a SHA-256 cryptographic certificate detailing exact timestamps, GPS coordinates (where authorized), and IP signatures. This satisfies all federal motor carrier record-keeping mandates under 49 CFR § 371.3 without physical paper receipts.
What happens if a truck driver or dock worker lacks cellular service when signing a Rate Confirmation or BOL?
Offline loading docks and remote freight terminals are a common operational challenge in long-haul trucking. To prevent dispatch delays when connectivity is intermittent, modern TMS platforms leverage Signbee's asynchronous signing workflow and mobile SDK webviews. The signature interface can capture the driver's signature gesture, timestamp, and metadata locally within an offline-capable web worker or progressive web app container. As soon as the driver's device reconnects to cellular data or Wi-Fi (e.g., leaving the terminal gate), the payload automatically synchronizes with the Signbee API. The API verifies the cryptographic hash against the original document payload, issues the certified PDF, and dispatches a completion webhook to the broker's TMS to unlock load tracking.
How do automated rate confirmations prevent rate disputes and double brokering in spot freight transactions?
Double brokering and post-haul rate disputes cost the U.S. freight brokerage industry hundreds of millions of dollars annually. Automated rate confirmations mitigate these risks by binding rate terms dynamically before dispatch occurs. By integrating Signbee's API into your TMS workflow, rate confirmations are programmatically generated with immutable load IDs, driver carrier MC/DOT numbers, equipment types, line-haul rates, and explicit accessorial policies (detention, layover, lumper fees). When the carrier clicks the signing link sent via SMS or email, Signbee captures device metadata, IP address, and time-stamped signature before issuing a SHA-256 certified contract. Because the document hash is immutable and verified via webhooks before tender, unauthorized carrier reassignment or rate renegotiation after load pickup is strictly prevented.
Automate your freight dispatches and Rate Confirmations in minutes — 5 documents/month free, no credit card required.
Last updated: July 9, 2026 · Michael Beckett is the founder of Signbee and B2bee Ltd.