Connect FedEx Freight: get LTL rates and track freight shipments
Get a Client ID and Client Secret from the FedEx Developer Portal, fill them in with your Freight Account Number in Integration, test with sandbox credentials first, then switch test_mode to production for live LTL rates and tracking.
The FedEx Freight connector is for less-than-truckload (LTL) freight. It gets LTL rate quotes and tracks freight shipments by tracking number or PRO number, returning the scan events. It does not create shipping labels and it is not the small-parcel FedEx connection: it uses its own fields and your FedEx Freight account. The connection uses the sandbox environment by default, so read the test step carefully before you switch to production.
Prerequisites#
- An app in the FedEx Developer Portal, so you can read its Client ID and Client Secret.
- Your FedEx Freight Account Number — the Freight account used for LTL quoting and billing. A small-parcel FedEx account is a different account for this connection.
- A clear choice of environment for the first test: sandbox credentials with the sandbox environment, or production credentials with production. The connection uses sandbox by default, and sandbox and production credentials do not mix.
- At least one real shipment lane you can quote, and a tracking number or PRO number from a past freight shipment, to verify rates and tracking after the test.
Get your credentials#
- Sign in to the FedEx Developer Portal and open your app.
- In your app, read the Client ID and the Client Secret. The two values form one OAuth2 pair and belong together — take both from the same app.
- Note your FedEx Freight Account Number, the Freight account used for LTL quoting and billing.
- Decide which credential set you will test with first. Sandbox credentials are tested against the sandbox address https://apis-sandbox.fedex.com; production credentials against https://apis.fedex.com. Note which set you picked — the test_mode field must match it.
Fill it into Integration#
- Open Integration, pick FedEx Freight, and start a new connection.
- client_id — required, Client ID: the Client ID from FedEx Developer Portal → your app, in the form l7xxxxxx and the following characters. Copy it from the same app as the secret below.
- client_secret — required, Client Secret: the Client Secret from the same app in the FedEx Developer Portal. It is stored as a secret.
- account_number — required, Freight Account Number: your FedEx Freight account number, for example in the form 123456789. This is the Freight account used for LTL quoting and billing, not a parcel account.
- test_mode — optional, Test Mode: fill in true to use the sandbox environment https://apis-sandbox.fedex.com, which is also the default when the field is left empty. Fill in false to use production https://apis.fedex.com. The value must match the credentials you filled in: sandbox credentials with true, production credentials with false.
Test the connection#
Click Test connection. What happens depends on what you filled in. If any of client_id, client_secret or account_number is missing, the test sends no request to FedEx: it runs a local trial check with sample data and reports success for that trial only. Read the result detail — a trial success does not prove your credentials. When all three values are present, the test runs for real in two steps: first it exchanges your client_id and client_secret for an OAuth2 token, then it sends one small LTL rate quote call with your Freight account. A 401 or 403 answer counts as an authentication failure; other answers from the quote endpoint count as reachable. A real success reads like: OAuth2 authentication passed for the environment address, and the Freight quote endpoint is reachable. The test allows up to 12 seconds.
Mapping / pick a template#
Pick the FedEx Freight standard template for LTL quoting and tracking. Rate quotes go out with your Freight Account Number, and tracking lookups accept a tracking number or a PRO number and bring back the scan events. After the test passes for real, run one quote on a lane you know and compare the returned rate and service with what you expect for that lane, then look up one past shipment by its PRO number and compare the scan events. Only activate when both checks look right.
Activate#
After activation, the connection gets live LTL rate quotes with your Freight account and tracks freight shipments by tracking number or PRO number. To move from testing to live work, set test_mode to false and make sure the client_id and client_secret in the connection are your production app values — a connection left on sandbox keeps returning sandbox results. Watch the first quotes and tracking lookups in Runs / Logs before leaving the connection unattended.
What this connection does not do: it does not create or buy shipping labels, and it does not handle small-parcel FedEx shipping. For parcel rates and labels, use the separate small-parcel FedEx connection with its own credentials and account.
FAQ#
Test fails with 401 or 403
FedEx refused the authentication: the OAuth2 token request or the quote call was rejected with 401 or 403. The connection treats 401 and 403 as authentication failure, so the client_id, the client_secret, or the environment they belong to does not match.
Copy client_id and client_secret again from the same app in FedEx Developer Portal → your app, check test_mode matches that credential set (sandbox credentials with true, production credentials with false), then test again.
Production credentials fail the test right away
The connection still points at the sandbox. test_mode defaults to the sandbox environment https://apis-sandbox.fedex.com when it is empty or set to true, and production credentials are not valid in the sandbox — so a correct production Client ID and Secret still fail.
Set test_mode to false so the test runs against production https://apis.fedex.com, keep the production client_id and client_secret in place, save, and test again. To test in the sandbox instead, keep test_mode as true and use sandbox credentials.
The test says success, but no real quote was made
One of the three required values was empty when you tested. With client_id, client_secret or account_number missing, the test sends no request to FedEx and only runs a local trial check with sample data — its success message says the check ran without real credentials and without a real request.
Fill in all three values — client_id and client_secret from FedEx Developer Portal → your app, and your Freight Account Number in account_number — save, and test again. Only a success that names the environment address and the Freight quote endpoint counts as a real credential test.
Quotes work, but tracking returns nothing for a shipment
The number you used is not a FedEx Freight tracking number or PRO number for this account, or the shipment has no scan events yet. Tracking on this connection reads freight shipments by tracking number or PRO number — a small-parcel tracking number will not return freight events.
Copy the PRO number or tracking number from the freight shipment paperwork for a shipment already picked up, check it digit by digit, and look it up again. If a known picked-up shipment still returns nothing, confirm the shipment moved under the same Freight account as the connection.
Can this connection create FedEx Freight labels?
No. This connection covers LTL rate quotes and freight tracking only — there is no label creation in it. Looking for a label step in this connection will not find one, because the Freight work here is quoting and tracking.
Use this connection for the quote and the tracking of the freight shipment, and keep the label and tender work in the channel where you book the freight. For small-parcel FedEx labels, use the separate small-parcel FedEx connection instead.