Finance teams at 3PLs and logistics operators live and die by the accuracy and timeliness of their accruals, invoices, and audit trails. Yet the actual cost drivers behind a truckload or container movement—fuel surcharges, lane-based market rates, port slowdowns that trigger accessorials, and carrier compliance states—are scattered across disconnected systems. The result is an error-prone, manual reconciliation workflow: exported carrier invoices in one tab, rate tables in another, fuel indexes in a third, and ad hoc emails about “weather delays” or “port congestion” that may or may not be real.
This post shows how to build an audit-ready carrier invoice reconciliation engine that your finance operations can trust. We will use FreightPulse, a single REST API that consolidates the data finance and operations teams need: national and regional fuel prices, live US full-truckload rate quotes, port congestion metrics, carrier verification data, and natural-disruption alerts. Our goal is simple: automate the matching of invoices to verifiable, time-stamped market and risk context, and archive those facts in a consistent JSON schema for clean auditability.
We will walk through endpoints that allow you to trace costs back to objective signals in one place, then show how to construct line-level reconciliation logic and attach data evidence to every discrepancy, waiver, and approval. If you run accruals, variance analysis, or closed-period audits for a 3PL or logistics platform, this guide gives you the building blocks to move from “we think these charges are fine” to “each charge is matched, cross-validated, and supported by immutable evidence.”
Introduction
Consider a common scenario: your 3PL receives a weekly batch of FTL invoices. Each invoice contains a base linehaul charge, a fuel surcharge, and occasionally detention or layover fees. Meanwhile, your finance ops team needs to validate—without friction—whether:
- The base linehaul aligns with contemporaneous market quotes for the same lane and pickup window.
- The fuel surcharge calculation matches the prevailing EIA-indexed diesel average used in your contract.
- Accessorials attributed to disruptions or port slowdowns have objective, time-stamped corroboration.
- The carrier is compliant and active at time of pickup, with no safety rating red flags.
Without a unified data source, teams patch together spreadsheets and screenshots from different sites and paid feeds. This creates latency, inconsistent evidence, and risky exceptions. Auditors then have to reverse engineer the story from miscellaneous artifacts.
An audit-ready reconciliation engine pairs each invoice line item with verifiable external signals at time-of-transaction. The keys are coverage (the right data domains in one place), consistency (one JSON schema), and governance (repeatable lookups with logs of what data was consulted). FreightPulse provides these primitives through straightforward endpoints so your engineering team can deliver a finance-grade control surface in days, not months.
Why FreightPulse
FreightPulse consolidates multiple logistics intelligence domains behind one API, which matters for finance in four critical ways:
- Operational truth in one schema: Instead of stitching together separate EIA fuel feeds, a freight-rate quote provider, a port congestion source, a carrier directory, and a weather/disaster feed, FreightPulse gives you cohesive responses with consistent keys. That directly enables an audit log where every “why” behind a charge is attached to the same JSON shape and timestamp semantics.
- Context on the same timeline as your invoices: A single source for live US FTL trucking quotes, weekly fuel benchmarks, and lagged-but-actionable port congestion provides a defensible backbone for variance checks. Finance teams can say “this is the market on the pickup date” with machine-readable evidence.
- Carrier compliance without another integration: Carrier disputes often pivot on DOT status or safety ratings. With US trucking carrier lookups and ocean NVOCC/OTI lookups in the same API as rates and fuel, your reconciliation can block or flag exceptions when carrier verification fails, all without leaving your workflow.
- Risk substantiation for accessorials: Detention, layover, and exception charges often cite storms or seismic activity. FreightPulse’s natural-disruption events stream provides objective signals—cyclones, earthquakes, severe weather—filterable by port radius. That makes it easy to auto-approve charges backed by events, and challenge those without.
From a developer’s perspective, FreightPulse is also ergonomic. One base URL, simple query parameters, and JSON responses that consistently convey success, data, and error messages. This lowers integration time, reduces glue code, and makes it feasible to reconstruct the full rationale for every penny in a ledger.
Quick Start
Base URL:
https://freightpulsehq.com/api/v1
Let’s make a first request to retrieve national and regional fuel prices. This is often step one in reconciling fuel surcharges against a contract indexed to the national diesel average.
curl "https://freightpulsehq.com/api/v1/fuel-prices"
Sample JSON response:
{
"success": true,
"data": {
"timestamp": "2026-07-30T12:00:00Z",
"source": "EIA (U.S. Energy Information Administration)",
"currency": "USD",
"unit": "gallon",
"data": {
"diesel": {
"national_average": 3.847,
"change_week": -0.023,
"change_percent": -0.6,
"regions": {
"east_coast": 3.912,
"midwest": 3.756,
"gulf_coast": 3.623,
"rocky_mountain": 3.891,
"west_coast": 4.456,
"california": 4.892
},
"historical": {
"30d_avg": 3.82,
"90d_avg": 3.75,
"yoy_change_percent": -8.2
}
},
"gasoline": {
"national_average": 3.156,
"historical": {
"30d_avg": 3.1,
"90d_avg": 3.05,
"yoy_change_percent": 1.1
}
}
}
}
}
Key fields for reconciliation:
- data.diesel.national_average: The benchmark many contracts reference for fuel surcharge calculations. Attach this to your invoice line as evidence for the applicable week.
- data.diesel.regions.*: If your contract uses a regional basis, this provides the appropriate PADD-aligned figure.
- timestamp: Use as the “as-of” anchor in your audit log for which benchmark was consulted.
Core Endpoints
1) GET /fuel-prices — Anchor for Fuel Surcharges
Endpoint path:
/fuel-prices
Purpose and business value:
- Validate billed fuel surcharges against objective national or regional diesel averages. Reduce disputes and standardize approvals by making the benchmark explicit in your ledger for each load’s pickup week.
Key response fields:
- data.diesel.national_average: Numerical benchmark in USD per gallon.
- data.diesel.regions: Region-specific values to support PADD-based contracts.
- data.diesel.historical: Rolling averages and YoY percent change for trend and accrual modeling.
- timestamp: Stamp your reconciliation with the exact update time from FreightPulse.
Example cURL:
curl "https://freightpulsehq.com/api/v1/fuel-prices"
Example response (complete):
{
"success": true,
"data": {
"timestamp": "2026-07-30T12:00:00Z",
"source": "EIA (U.S. Energy Information Administration)",
"currency": "USD",
"unit": "gallon",
"data": {
"diesel": {
"national_average": 3.847,
"change_week": -0.023,
"change_percent": -0.6,
"regions": {
"east_coast": 3.912,
"midwest": 3.756,
"gulf_coast": 3.623,
"rocky_mountain": 3.891,
"west_coast": 4.456,
"california": 4.892
},
"historical": {
"30d_avg": 3.82,
"90d_avg": 3.75,
"yoy_change_percent": -8.2
}
},
"gasoline": {
"national_average": 3.156,
"historical": {
"30d_avg": 3.1,
"90d_avg": 3.05,
"yoy_change_percent": 1.1
}
}
}
}
}
Implementation notes:
- Store both the numerical benchmark and the timestamp on each invoice record. This allows deterministic re-checks later, even if the benchmark updates.
- For weekly-close processes, snapshot and cache the fuel-prices response in your data warehouse to produce stable reports for a given fiscal week.
2) GET /freight-rates — Market Validation for Linehaul Charges
Endpoint path:
/freight-rates
Purpose and business value:
- Cross-check billed linehaul vs contemporaneous market quotes for a given origin/destination ZIP and pickup date. This helps detect substantial deviations that warrant contract review or exception handling.
Key parameters:
- mode: trucking (default), ocean, or air.
- origin_zip and destination_zip: Required for trucking quotes.
- pickup_date, qty, total_weight_lb: Optional context to refine the quote.
Example cURL (FTL truckload):
curl "https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210&pickup_date=2026-08-24"
Example response:
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 7207.92,
"transit_days": 4,
"pickup_date": "2026-08-24",
"delivery_date": "2026-08-28"
}
}
Field interpretation for finance:
- price_usd: A contemporaneous market quote. For audit, compare it to the billed linehaul on the same pickup_date. Configure tolerances (e.g., +/- 10–15%) to automatically approve or flag.
- transit_days and delivery_date: Useful to corroborate detention or layover claims if actuals drift well beyond expected timeline.
- mode and service: Store these to ensure apples-to-apples checks for the right service type (e.g., dry van FTL).
Best practice:
- When ingesting invoices, fire an on-demand quote for the original pickup date. Archive both the quoted price and the billing price along with a variance percentage. This becomes a standard line in your reconciliation report.
3) GET /port-congestion — Context for Delay-Related Accessorials
Endpoint path:
/port-congestion
Purpose and business value:
- Substantiate or challenge delay-based accessorials (e.g., detention, demurrage triggers) with objective congestion metrics for relevant ports. Note: These figures are a lagged approximation based on the 7-day average of port calls vs a 90-day baseline, with ~6–7 day data lag. They are not live AIS vessel wait times.
Key parameters:
- port: Name or LOCODE (e.g., USLAX) to target a specific port.
- country or region: Broader filters when investigating systemic slowdowns.
- congestion: Optional filter (low, moderate, high) when scanning.
Example cURL:
curl "https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
Example response:
{
"success": true,
"data": {
"results": [
{
"port": "Los Angeles-Long Beach",
"locode": "US LAX",
"country": "United States",
"congestion": "moderate",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 8.7,
"baseline_avg_portcalls_per_day": 10.2,
"ratio_vs_baseline": 0.85
}
}
]
}
}
Field interpretation:
- congestion: Qualitative label (low, moderate, high) for rapid triage.
- ratio_vs_baseline: A sub-1.00 ratio suggests fewer port calls than typical—potentially indicative of slowdowns or operational shifts.
- as_of: The date the 7-day average ends; record this to make sure you compare the right time window for a given shipment’s coastal leg.
Best practice:
- If an invoice cites “port-related delays,” attach the most recent congestion record to the shipment file for that port around the relevant date. While not a live queue metric, it provides an objective indicator that conditions were tighter or looser than usual.
4) GET /carriers — Compliance and Risk Gate
Endpoint path:
/carriers
Purpose and business value:
- Verify that your carrier was active and in good standing, and optionally correlate safety ratings to exception workflows (e.g., higher scrutiny for carriers with specific safety flags).
Key parameters:
- q: Required query term (DOT number or name for trucking; org number or name for ocean).
- type: trucking (default), ocean, or air (air returns available:false).
Example cURL (trucking lookup by DOT number):
curl "https://freightpulsehq.com/api/v1/carriers?q=54283"
Example response:
{
"success": true,
"data": {
"type": "trucking",
"query": "54283",
"results": [
{
"dot_number": 54283,
"legal_name": "SWIFT TRANSPORTATION COMPANY OF ARIZONA LLC",
"status": "active",
"safety_rating": "S",
"drivers": 12883,
"address": {
"city": "Phoenix",
"state": "AZ",
"country": "US"
}
}
]
}
}
Field interpretation for finance and compliance:
- status: Confirm “active” at time of service. Non-active or missing status should trigger holds.
- safety_rating: Use as a secondary risk signal. Some finance teams configure escalations for specific ratings.
- drivers and address: Useful for master data checks and vendor file hygiene.
5) GET /disruptions — Evidence for Natural-Hazard Exceptions
Endpoint path:
/disruptions
Purpose and business value:
- Confirm whether claimed weather or natural disaster events likely impacted a shipment. This is especially helpful for automatic approval rules when strong evidence exists, or for declining charges when no relevant events are present.
Key parameters:
- type: cyclone, earthquake, flood, volcano, drought, wildfire, severe_weather.
- severity: low, moderate, high to filter to impactful events.
- country, port: Filter by geography. The port filter matches events within a defined radius for fast relevance checks.
Example cURL (high-severity events near USLAX):
curl "https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high"
Example response:
{
"success": true,
"data": {
"results": [
{
"id": "gdacs:TC:1001305",
"type": "cyclone",
"severity": "moderate",
"title": "Tropical Cyclone SAUDEL-26",
"country": "Japan",
"starts_at": "2026-08-18T12:00:00+00:00",
"source": "GDACS"
}
]
}
}
Field interpretation:
- type, severity: Use for rule-based approvals or denials (e.g., high-severity cyclone within X km of port during transit window → auto-approve specific accessorial).
- starts_at: Correlate precisely to the pickup/transit timeframe.
- id and title: Store for human-readable audit notes and unique reference linkage.
6) GET /historical — Trend Context for Accruals and Forecasts
Endpoint path:
/historical
Purpose and business value:
- Build accrual models and forecast surcharges with time series data. Track port congestion trends across curated major global ports to support preemptive accrual adjustments.
Key parameters:
- metric: fuel_price_diesel_national, fuel_price_gasoline_national, or port_congestion:<portid>.
- period: 30d (default), 90d, 1y depending on your modeling horizon.
Example cURL (30-day diesel series):
curl "https://freightpulsehq.com/api/v1/historical?metric=fuel_price_diesel_national&period=30d"
Example response:
{
"success": true,
"data": {
"metric": "fuel_price_diesel_national",
"period": "30d",
"series": [
{ "date": "2026-07-27", "value": 5.257 },
{ "date": "2026-08-03", "value": 5.343 }
]
}
}
Field interpretation:
- series[].date and series[].value: Feed these into your BI tool to power trend charts and accrual logic. Store point-in-time series to reconstruct how you arrived at each accrual.
Designing an Audit-Ready Invoice Reconciliation Engine
An audit-ready engine needs to do more than fetch data. It must encode deterministic rules and leave behind an evidence trail for each decision. Below is a recommended architecture and governance blueprint.
Data flow and control surface
- Ingestion: Parse incoming carrier invoices into normalized line items (base linehaul, fuel surcharge, accessorials). Stamp each line with shipment attributes: origin ZIP, destination ZIP, pickup date, equipment type, carrier DOT, and any declared disruption codes.
- Enrichment: For each line, call the relevant FreightPulse endpoints. For a truckload linehaul: GET /freight-rates with origin_zip, destination_zip, pickup_date. For fuel surcharge: GET /fuel-prices, capturing timestamp and national/regional average. For accessorials citing delays: GET /port-congestion (if port-relevant legs exist) and GET /disruptions filtered by port or country and date window. For carrier checks: GET /carriers by DOT number.
- Decision rules: Define tolerances and rule sets—for example, approve fuel surcharge if |billed – computed| ≤ 1% of computed surcharge; flag if beyond. Approve linehaul if within variance threshold of contemporaneous quote. Require disruption corroboration to greenlight certain delay-related fees.
- Evidence ledger: For each rule evaluation, attach the raw FreightPulse JSON payloads with the request parameters and response timestamp. This produces audit-grade provenance. Save a normalized summary (e.g., “Fuel benchmark 3.847 USD/gal as of 2026-07-30”) and the underlying JSON.
- Operator console: Present finance ops with a side-by-side view: billed value, computed benchmark, variance and threshold, and links to the evidence JSON. Allow one-click approvals or escalations with notes.
Reliability, governance, and observability best practices
- Retries and backoff: Wrap FreightPulse calls with exponential backoff and idempotent request semantics. Capture request/response IDs and timestamps in logs.
- Fallback chains: For non-critical contextual checks (e.g., optional congestion scans), design graceful degradation. If a congestion call is temporarily unavailable, proceed with rate and fuel checks, and mark congestion as “pending” for a retry worker.
- Health checks and circuit breakers: Periodically ping lightweight endpoints to monitor connectivity. If upstream signals transient issues, trip a circuit breaker to prevent cascading failures, queuing requests for background retry.
- Per-app keys and roles: Segment credentials by application component (reconciliation service vs. operator console) to ensure principle of least privilege and simplify audit attribution.
- Audit logs: Log the exact URL, query parameters, response hash, and the applying rule for each decision. Store in write-once or append-only storage to maximize audit defensibility.
- Data locality and compliance: Persist only the data necessary for audit and analytics. Where possible, retain raw JSON in a regionally appropriate store and replicate the minimal normalized fields for reporting.
End-to-End Example: Reconciling a Single Truckload Invoice
Assume a Phoenix, AZ (85001) to Edison, NJ (08817) dry van FTL moved with pickup on 2026-08-24. The invoice shows:
- Linehaul: $7,450
- Fuel Surcharge: $620
- Detention: $175 (citing “severe weather”)
- Carrier DOT: 54283
Reconciliation steps:
- Carrier verification: Query /carriers?q=54283. Confirm status is “active” and capture safety_rating and legal_name to your evidence ledger. If status != active, hold payment and escalate.
- Market validation: Query /freight-rates?mode=trucking&origin_zip=85001&destination_zip=08817&pickup_date=2026-08-24. If FreightPulse returns price_usd around, say, $7,200–$7,400, compute variance vs. $7,450. If within threshold (e.g., 5%), auto-approve; otherwise route to an analyst.
- Fuel surcharge: Query /fuel-prices and read diesel.national_average as of the week of 2026-08-24 (use timestamp for week alignment). Apply contract formula (e.g., a base per-mile index and fuel surcharge per mile above a peg) and compute expected surcharge. Compare to $620; record variance.
- Detention claim: If movement involved a port leg or cross-dock near a port, call /port-congestion?port=USLAX or relevant port to assess systemic slowdowns in the period (remember these metrics are lagged approximations). Also call /disruptions?type=severe_weather&country=US or by port radius for the pickup date range. If no events match time and place, flag for operator review; else record event details and approve per policy.
- Archive evidence: Store all responses, include request URLs and parameters, timestamps, and computed decisions in your ledger. Create a PDF or HTML audit bundle if your auditors prefer human-readable attachments.
Implementation Snippets: Python and JavaScript
Python: validating fuel surcharge and linehaul side by side and storing evidence.
import requests
import hashlib
import json
from datetime import datetime
BASE = "https://freightpulsehq.com/api/v1"
def fetch_json(url):
r = requests.get(url, timeout=15)
r.raise_for_status()
payload = r.json()
if not payload.get("success", False):
raise RuntimeError(f"API error: {payload.get('error')}")
return payload
def evidence_hash(payload):
return hashlib.sha256(json.dumps(payload, sort_keys=True).encode()).hexdigest()
# Example shipment context
origin = "85001"
dest = "08817"
pickup = "2026-08-24"
linehaul_billed = 7450.00
fuel_billed = 620.00
# 1) Fuel prices
fuel_url = f"{BASE}/fuel-prices"
fuel = fetch_json(fuel_url)
diesel = fuel["data"]["data"]["diesel"]["national_average"]
fuel_ts = fuel["data"]["timestamp"]
fuel_hash = evidence_hash(fuel)
# Example contract computation (replace with your formula)
# For demo: assume 2,400 miles, 6 mpg peg, surcharge = miles * (diesel - 3.00) / 6
miles = 2400
peg = 3.00
expected_fuel = max(0, miles * max(0, diesel - peg) / 6)
# 2) Freight rates market check
rate_url = f"{BASE}/freight-rates?mode=trucking&origin_zip={origin}&destination_zip={dest}&pickup_date={pickup}"
rates = fetch_json(rate_url)
market = rates["data"]["price_usd"]
rate_hash = evidence_hash(rates)
# Build reconciliation record
record = {
"shipment": {"origin_zip": origin, "destination_zip": dest, "pickup_date": pickup},
"linehaul": {
"billed": linehaul_billed,
"market_quote": market,
"variance_pct": (linehaul_billed - market) / market * 100.0,
"evidence": {"url": rate_url, "hash": rate_hash}
},
"fuel": {
"billed": fuel_billed,
"benchmark_diesel_usd_per_gal": diesel,
"benchmark_as_of": fuel_ts,
"expected": round(expected_fuel, 2),
"variance_pct": (fuel_billed - expected_fuel) / expected_fuel * 100.0 if expected_fuel else None,
"evidence": {"url": fuel_url, "hash": fuel_hash}
},
"created_at": datetime.utcnow().isoformat() + "Z"
}
print(json.dumps(record, indent=2))
JavaScript (Node.js or browser) for a disruption check tied to a port:
async function fetchJson(url) {
const r = await fetch(url);
if (!r.ok) throw new Error("HTTP " + r.status);
const payload = await r.json();
if (!payload.success) throw new Error(payload.error || "API error");
return payload;
}
async function disruptionsNearPort(portLocode, severity) {
const url = `https://freightpulsehq.com/api/v1/disruptions?port=${encodeURIComponent(portLocode)}&severity=${encodeURIComponent(severity)}`;
const data = await fetchJson(url);
return data.data.results || [];
}
(async () => {
const results = await disruptionsNearPort("USLAX", "high");
console.log("Relevant events:", results.length);
for (const ev of results) {
console.log(`[${ev.severity}] ${ev.type}: ${ev.title} at ${ev.starts_at}`);
}
})().catch(console.error);
Error Handling and Troubleshooting
Every FreightPulse response follows a consistent envelope. When success is false, you receive a human-readable message in the error field. Implement centralized handling to convert these into actionable logs and UI messages.
Common error response shape:
{
"success": false,
"error": "Human-readable message."
}
Examples and guidance:
- Unfulfilled params: For endpoints like /carriers, a missing q parameter yields a validation error. Ensure your integration asserts required params before dispatching calls. For /freight-rates, missing critical params can produce a successful response with "available": false; treat this as a soft failure and prompt users to refine inputs.
- Ambiguous matches: For /carriers with text queries, you may receive multiple results. Choose an unambiguous identifier (e.g., DOT number) whenever possible.
- Data lag expectations: /port-congestion reflects a 7-day average vs a 90-day baseline with ~6–7 day lag. If you’re reconciling near real time, annotate your console to explain that congestion is indicative context, not live wait times.
- Observability: Log the full request URL with query params, timestamp, and an integrity hash (e.g., SHA-256) of the JSON response. This lets you prove exactly what the system saw when a decision was made.
Real-World Use Cases
Fuel Surcharge Calculator and Auto-Approval Engine
Finance teams can build a surcharge calculator that pulls the diesel national average each week from /fuel-prices and applies the contract formula to compute expected surcharges per lane-mile. When invoices arrive, computed vs billed is compared; if within tolerance, the line auto-approves with embedded evidence JSON. Endpoints used: /fuel-prices, optionally /historical for week-over-week forecasting.
Linehaul Variance Checker with Market Evidence
For each truckload invoice, call /freight-rates using origin/destination ZIPs and pickup date to get a contemporaneous market quote. If the billed linehaul diverges materially, trigger a review workflow and attach the quote with service type and expected transit window. Endpoints used: /freight-rates.
Disruption-Aware Accessorial Validation
When a carrier cites weather or port delays for detention, correlate the claim with /disruptions filtered by port or country and date, and with /port-congestion to understand background conditions. Auto-approve when relevant events are present; otherwise route to dispute handling. Endpoints used: /disruptions, /port-congestion.
Carrier Vetting at Invoice Time
Run /carriers for each invoice to confirm active status and safe operating profile. If the carrier is not in good standing at service time, escalate and block payment. Endpoints used: /carriers.
Accrual Modeling with Time Series
Use /historical to load a 90-day diesel series and, where relevant, port congestion trends for major ports tied to your network. This informs accruals and forward-looking expense plans, creating realistic expectations for finance reviews. Endpoints used: /historical (fuel_price_diesel_national, port_congestion:<portid>).
Performance Tips and Best Practices
- Batching and caching: While calls are simple, your reconciliation job likely processes many invoices simultaneously. Cache same-day /fuel-prices responses and identical /port-congestion lookups. Batch by pickup week and port to minimize redundant requests.
- Regional routing and latency: Co-locate your reconciliation workers and cache layer near your primary data warehouse region. This reduces round-trip times for iterative checks in ETL jobs.
- Streaming operator UX: For an operator console that streams results, fetch /freight-rates and /carriers first (fast validation), then enrich with /disruptions and /port-congestion as asynchronous context. Update the UI incrementally to keep analysts productive.
- Circuit breakers and graceful degradation: If contextual endpoints are temporarily slow, don’t block the entire reconciliation. Approve high-confidence lines (e.g., perfect fuel match) and mark others for background completion.
- Governance and roles: Segment internal access so only your reconciliation service writes evidence logs, while the console reads summaries and links to raw JSON. This separation of duties is a common audit expectation.
Comprehensive Endpoint Coverage and Field-by-Field Guidance
/fuel-prices
- Purpose: Provide national and PADD-region fuel benchmarks for surcharge computation and trend analysis.
-
Key fields:
- data.diesel.national_average: USD/gal. Plug into contract formulas.
- data.diesel.regions: PADD breakdowns; map to region-based surcharges.
- data.diesel.historical.*: Short-horizon averages and YoY movement for context.
- timestamp: Evidence anchor for audit bundling.
- Usage scenario: Weekly snapshotting for accruals and deterministic surcharge checks per invoice.
/freight-rates
- Purpose: Provide contemporaneous market quotes for linehaul validation.
-
Parameters:
- mode: trucking (default), ocean, air.
- origin_zip, destination_zip: Required for trucking.
- pickup_date: Align with service date on invoice.
-
Key fields:
- price_usd: Compare against billed linehaul.
- transit_days, delivery_date: Corroborate detention or service anomalies.
- service: Ensure service-type parity in comparisons.
- Edge cases: Missing params may yield "available": false in a successful response. Treat that as a prompt to supplement inputs rather than a hard error.
/port-congestion
- Purpose: Provide lagged congestion context for ports based on 7-day averages vs a 90-day baseline; not live AIS wait times.
-
Parameters:
- port: Name or LOCODE (e.g., USLAX); or filter by country/region.
- congestion: low, moderate, high (optional filter).
-
Key fields:
- congestion: Qualitative label for triage.
- metrics.ratio_vs_baseline: Quantifies deviation from typical activity.
- as_of: Align to shipment event windows for context.
- Usage: Attach to invoices that traverse or dwell near ports; helps decide on delay-related accessorials.
/carriers
- Purpose: Verify carrier status and basic safety/compliance posture in the same system as rate and risk data.
-
Parameters:
- q: DOT number or legal name (trucking), org number/name (ocean).
- type: trucking|ocean|air (air returns available:false).
-
Key fields:
- status: Active/non-active indicator—gate for payment.
- safety_rating: Risk signal for policy-based handling.
- legal_name, address, drivers: Normalize vendor master data.
- Usage: Auto-block payments for non-active carriers and log evidence for auditors.
/disruptions
- Purpose: Natural-hazard evidence (cyclone, earthquake, severe weather, etc.) to substantiate or dispute exceptional accessorials.
-
Parameters:
- type, severity: Filter to meaningful events.
- port, country: Geographic scoping for relevance.
-
Key fields:
- id, title: Referenceable event identifiers.
- starts_at: Time alignment with pickup/transit.
- severity: Decision threshold input for auto-approval policies.
- Usage: Auto-approve when events match time/place and severity criteria; else route to manual review.
/historical
- Purpose: Time series to support accruals, forecasts, and trend dashboards on fuel costs and selected ports.
-
Parameters:
- metric: fuel_price_diesel_national, fuel_price_gasoline_national, or port_congestion:<portid>.
- period: 30d, 90d, 1y horizons.
-
Key fields:
- series[].date and series[].value: Direct inputs for BI, regression, and seasonality analysis.
- Usage: Inform accrual assumptions at month-end close and benchmark variance month-over-month.
Additional Example Responses and Explanations
Freight rates with missing context producing an “available”: false state. Handle gracefully by prompting for required params.
{
"success": true,
"data": {
"available": false,
"mode": "trucking",
"message": "Missing or incomplete lane parameters (origin_zip, destination_zip)."
}
}
Explanation:
- available: false indicates the API could not produce a quote with given inputs. Your UI should prompt users to provide both ZIPs and optionally a pickup_date to improve accuracy.
- message: Display to operators to expedite correction.
Disruption query scoped by type and country for a specific audit window:
curl "https://freightpulsehq.com/api/v1/disruptions?type=severe_weather&country=US"
Sample response (complete):
{
"success": true,
"data": {
"results": [
{
"id": "nws:SW:2026-08-20:CA:LA",
"type": "severe_weather",
"severity": "high",
"title": "Severe Thunderstorm Warning - Los Angeles County",
"country": "United States",
"starts_at": "2026-08-20T22:15:00+00:00",
"source": "NOAA/NWS"
},
{
"id": "usgs:EQ:2026-08-19:36.1:-115.2",
"type": "earthquake",
"severity": "low",
"title": "M3.1 - 25km NW of Las Vegas, NV",
"country": "United States",
"starts_at": "2026-08-19T04:55:00+00:00",
"source": "USGS"
}
]
}
}
Using this:
- Map starts_at to your shipment’s pickup and transit dates. If the event window overlaps with detention time and the county/region aligns, mark “backed by severe weather” in your justification.
Historical port congestion series for a major port (trend analysis):
curl "https://freightpulsehq.com/api/v1/historical?metric=port_congestion:USLAX&period=90d"
Sample response:
{
"success": true,
"data": {
"metric": "port_congestion:USLAX",
"period": "90d",
"series": [
{ "date": "2026-06-01", "value": 0.93 },
{ "date": "2026-06-08", "value": 0.90 },
{ "date": "2026-06-15", "value": 0.88 }
]
}
}
Interpretation:
- value here reflects a ratio-like measure vs baseline; sub-1.00 suggests lower-than-baseline port calls. Watch for multi-week dips signaling systemic slowdowns; factor into accrual assumptions for drayage and dwell-related costs.
FAQ
How often do FreightPulse fuel prices update?
Fuel prices reflect updates that align with official benchmark publishing schedules. Responses include a timestamp; store it alongside your computed surcharge so auditors can see the exact benchmark used at the time of reconciliation.
Can I look up ocean carriers as well as trucking carriers?
Yes. The carriers endpoint supports trucking (DOT-number-based) and ocean NVOCC/OTI lookups in the same API. Pass the appropriate query and type parameter to retrieve the relevant results for your vendor verification workflow.
Does the port congestion data reflect real-time vessel wait times?
No. Port congestion is a lagged approximation: a 7-day average of port calls compared to a 90-day baseline, with about a 6–7 day data lag. It’s valuable context for finance decisions but should not be interpreted as real-time AIS queue measurements.
How should finance teams use disruption data for accessorial approvals?
Correlate event type, severity, and start time with shipment pickup and transit windows, preferably filtered by the relevant port or country. Use deterministic rules—e.g., auto-approve detention when a high-severity event overlaps—so your decisions are consistent and auditable.
What’s the best way to make this audit-ready?
Treat every decision as a function of structured inputs and attach the raw FreightPulse JSON, request URL, and a hash of the response to your evidence ledger. Implement role-based access, append-only logs, and stable weekly snapshots for close processes to ensure repeatable, defensible audits.
Conclusion + CTA
Carrier invoice reconciliation doesn’t have to be a maze of spreadsheets and subjective judgments. By consolidating fuel benchmarks, market rate quotes, port congestion context, carrier verifications, and natural-disruption evidence behind one API, finance teams can automate line-level decisions with clear, portable proofs. The result is faster closes, fewer disputes, tighter accruals, and a durable audit trail that scales with your network.
This post outlined how to wire FreightPulse into a reconciliation engine that finance trusts: use /fuel-prices to anchor surcharges, /freight-rates to benchmark linehaul, /port-congestion and /disruptions to validate exceptions, /carriers to verify vendors, and /historical to power accruals and forecasts. Wrap these in robust retries, logging, and governance—and you’ll have a system that de-risks audits and accelerates approvals.
Start building now with FreightPulse. Explore the endpoints, plug them into your reconciliation workflow, and attach the evidence to every invoice line. Ready to streamline your financial operations and elevate audit readiness? Try FreightPulse for free and ship your first production-grade integration today.