FedEx answers with short error codes and HTTP status numbers, and the plugin writes both to its logs. This page lists every code the plugin documents, what it means in plain English, and which settings tab owns the fix.

Where to find the error

Open WooCommerce → Status → Logs and pick a source from the filter dropdown. Each source becomes its own dated log file. The sources that carry FedEx errors: Without WP_DEBUG, the rate and label logs stay deliberately quiet: one summary line per attempt with the HTTP status and the first FedEx error code. To capture full FedEx responses, enable WP_DEBUG and WP_DEBUG_LOG in wp-config.php. See Logging for the full reference.

Authentication errors: 401, invalid_client, invalid_token, AUTHORIZATION.TOKEN.NOTFOUND, not authorized

What it means. FedEx turned the request away because it does not recognize the credentials — the Client ID and Client Secret don’t match, or the pair is no longer valid. Usual cause. Expired or wrong keys — the most common cause of all FedEx errors. Other causes the docs call out:
  • Keys copied from the wrong environment tab of your FedEx project. Each project has separate test and production keys, and production keys need FedEx approval (3–5 business days) before they work.
  • A sandbox-versus-production mismatch: the Environment dropdown says Production while your keys and account number are test ones, or the reverse. Account numbers are not interchangeable either — mixing them fails authentication on every call.
  • For tracking only: an empty Tracking tab. Tracking uses its own Tracking Client ID and Tracking Client Secret with no fallback to the main keys, so rates and labels keep working while tracking is silently dead.
The fix. Copy the matching key pair from the same tab of your FedEx project and paste it into Client ID and Client Secret on the Authorization tab. On the Account tab, set the Environment dropdown to match your keys, and check the account number belongs to that environment. Then click Save Changes — you do not need to clear anything, because access tokens are cached against your exact credentials and the next request automatically gets a fresh one. The full walkthrough is in Troubleshooting → Authentication errors. If tracking is the only thing failing, paste the tracking key pair into the Tracking tab and save again.
Saving does not test the credentials. A wrong value is discovered the first time the plugin talks to FedEx — usually as missing rates at checkout or a label that fails to create.

FedEx unreachable: 502, 503, 504

What it means. Status codes 502, 503, or 504 in the rate log mean FedEx’s servers were unreachable — an outage or maintenance on their side, not a settings problem. Usual cause. FedEx itself, mid-request. The plugin already waits, retries the price request once, and then shows no FedEx rates rather than an out-of-date price. The fix. Wait a few minutes and test the checkout again. Check WooCommerce → Status → Logs, source teamzlab_fedex_shippnig, for the status codes. See the rates-don’t-appear section in Troubleshooting.

Label errors: SERVICE.UNAVAILABLE and SERVICE.TYPE.INVALID

What it means. FedEx doesn’t offer the selected service on that lane — the origin-to-destination pair for this shipment. Usual cause. The service picked for the order isn’t one FedEx actually runs to that address. The fix. Check the Shipping Methods list on the plugin’s Shipping tab and confirm it contains services FedEx actually offers for your lanes. If the list only shows services you ticked, a missing tick can also hide services from checkout — see the service-disappeared section in Troubleshooting.

NOT.FOUND.ERROR

What it means. FedEx can’t find what the request points at. In this plugin it typically means the account and the environment don’t match. Usual cause. A sandbox account used with Environment set to Production, or a production account in Sandbox. The label log (teamz_shipment_create) or the order note shows the code. The fix. Open the Account tab and make the Environment dropdown match your keys and your account number: test account in Sandbox, production account in Production. A real account number is rejected in sandbox and a test account number in production — see Going live and Troubleshooting → Label creation fails.
Never share your Client Secret or your Webhook Shared Secret with anyone, including support. Real support will never ask for them.

Troubleshooting

Plain-English fixes for missing rates, failed labels, and silent tracking.

FedEx credentials

Create FedEx keys and connect the right environment.

Going live

Switch from sandbox to production without surprises.

Logging

Every log source in detail, for your developer.