> ## Documentation Index
> Fetch the complete documentation index at: https://www.zippendo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect FedEx

> Connect FedEx from Carriers → All Carriers — API Key, API Secret, Account Number, and optional Sandbox Mode.

**FedEx** books worldwide express and ground labels from Zippendo, with customs documents, tracking, and pickups. The catalog card copy is: **Connect FedEx for worldwide express and ground shipping — labels, customs documents, tracking and pickups built in.** Catalog slug: `fedex`.

This page is the FedEx connect form. Shared chrome for every carrier: [Carrier credentials](/docs/how-to/carrier-credentials). Inventory of every connector: [Connect a carrier or integration](/docs/how-to/connect-index). Walkthrough: [Carriers](/docs/tutorials/carriers).

<Info>
  You do **not** pick a sender address on this form. Add addresses under **Manage → Addresses**. The address is chosen on the shipment or on a [shipping rule](/docs/how-to/shipping-rule-fields).
</Info>

## Prerequisites

* A **FedEx** shipping account number (billed on every shipment and pickup).
* An app on the **FedEx Developer Portal** with an **API Key (Client ID)** and **API Secret (Client Secret)**. The form helpers name that portal; Zippendo does not open it for you.
* Sandbox bookings need **sandbox** Client ID / Secret from that portal — they only work against the FedEx test host.
* Permission to create carriers in the organization. You can connect FedEx more than once if each connection has its own **Carrier name**.

## Connect from All Carriers

<Steps>
  <Step title="Open All Carriers">
    Sidebar **Carriers**. Page title **Carriers / Integrations**. Header tabs: **My Carriers** (`?tab=my-carriers`) and **All Carriers** (`?tab=all-carriers`).
  </Step>

  <Step title="Find FedEx">
    Card title **FedEx**. Buttons: **Connect** and **Learn more** (opens [fedex.com](https://www.fedex.com) in a new tab).
  </Step>

  <Step title="Click Connect">
    Modal id `connect-carrier-modal`. Title **Create new carrier**. Subtitle **Fill out the information below to create a new carrier**.
  </Step>

  <Step title="Fill required fields">
    Shared fields first, then **Carrier Configuration → Required Fields**. Scroll **Optional Fields** for **Sandbox Mode**. Empty required values make **Create** return without saving.
  </Step>

  <Step title="Create">
    Click **Create** (shows **Creating…** while the request runs) or **Cancel**. Success toast: **Carrier created successfully**. Failure copy in the modal: **Failed to create carrier. Please try again.**
  </Step>
</Steps>

<Frame caption="FedEx on All Carriers — Connect and Learn more">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/01-all-carriers-card-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=4dce880d560894a0494c694914584ca6" alt="All Carriers grid with the FedEx card, Connect, and Learn more" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-fedex/01-all-carriers-card-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/01-all-carriers-card-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=344d564b490d4c53026c0b6d3f7b1305" alt="All Carriers grid with the FedEx card, Connect, and Learn more" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-fedex/01-all-carriers-card-dark.png" />
</Frame>

<Frame caption="Create new carrier for FedEx — API Key, API Secret, Account Number">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/02-connect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=9d5504e5c9a7d66d684c84cff9af52ed" alt="Create new carrier dialog for FedEx with required API Key, API Secret, and Account Number" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-fedex/02-connect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/02-connect-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=04e153c6642ebf30408fe9f9a08a0344" alt="Create new carrier dialog for FedEx with required API Key, API Secret, and Account Number" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-fedex/02-connect-modal-dark.png" />
</Frame>

## Shared fields

These appear on every connect dialog, including FedEx.

| Field               | Required | What it is                                                                                                                                                                                             |
| ------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Carrier name \*** | Yes      | Display name in **My Carriers** and on shipments. Placeholder **Enter carrier name**. Defaults to **FedEx**. Empty blocks **Create**.                                                                  |
| **Brand**           | No       | Only when the organization has [brands](/docs/how-to/create-a-brand). Label **Brand**. Helper: **Only this brand can use this carrier.** Leave unset for organization-wide. Hidden when you have no brands. |

## FedEx credentials

**Carrier Configuration** splits into **Required Fields** and **Optional Fields**. **API Secret** uses a password input because the label contains “Secret”. Each helper is catalog copy. Placeholder on text fields is the same helper.

| Field              | Required | Control                                                                                                          | Where you get it                                                                 | Format   | Sandbox vs live                                                      |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------- |
| **API Key**        | Yes      | Text. Helper: **FedEx API Key (Client ID) from your FedEx Developer Portal**                                     | FedEx Developer Portal app — Client ID (`client_id` on the OAuth token request). | String.  | Sandbox Client ID only works against the sandbox host.               |
| **API Secret**     | Yes      | Password. Helper: **FedEx API Secret (Client Secret) from your FedEx Developer Portal**                          | The matching Client Secret (`client_secret`).                                    | String.  | Pair with the same environment as **API Key**.                       |
| **Account Number** | Yes      | Text. Helper: **Your FedEx account number (used to bill shipments and pickups)**                                 | Your FedEx shipping account.                                                     | String.  | Same field. Booking fails without it (`CARRIER_CONFIG_INVALID`).     |
| **Sandbox Mode**   | No       | Checkbox, default off. Helper: **Use the FedEx test environment (sandbox credentials + apis-sandbox.fedex.com)** | Zippendo checkbox.                                                               | Boolean. | On: `https://apis-sandbox.fedex.com`. Off: `https://apis.fedex.com`. |

FedEx uses OAuth: Zippendo exchanges **API Key** + **API Secret** for a bearer token, then bills the **Account Number**.

Creating the app (Client ID / Client Secret) is on the FedEx Developer Portal after **Sign Up / Log In**. The public Getting started page below is the step we can show.

<Frame caption="FedEx Developer Portal Getting started — Sign Up / Log In in your own account to create API Key and API Secret">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/10-fedex-developer-get-started.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=d3069d0fab6059f74e19f500c409c7dc" alt="FedEx Developer Portal Getting started page with FedEx Shipper and FedEx Integrator Provider options" width="2880" height="2200" data-path="images/how-to/connect-fedex/10-fedex-developer-get-started.png" />
</Frame>

<Frame caption="FedEx optional fields — Sandbox Mode">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/03-optional-fields-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=d56cc227c175a1fbbc95c568088261fb" alt="FedEx connect form scrolled to Optional Fields and the Sandbox Mode checkbox" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-fedex/03-optional-fields-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-fedex/03-optional-fields-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=e30d4a37ad47b103418fd1ae33dc4a8c" alt="FedEx connect form scrolled to Optional Fields and the Sandbox Mode checkbox" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-fedex/03-optional-fields-dark.png" />
</Frame>

<Warning>
  Leave **Sandbox Mode** off for live orders. A sandbox key against production (or a live key against `apis-sandbox.fedex.com`) fails at send time. Details: [Sandbox mode](/docs/how-to/sandbox-mode).
</Warning>

## After you connect

The connection appears on **My Carriers** with a **Connected** badge and **Edit Carrier**. Products are **not** on this form — they appear when you [create a shipment](/docs/how-to/send-a-shipment) or save a [shipping rule](/docs/how-to/shipping-rule-fields). See [Carrier products and services](/docs/how-to/carrier-products-and-services).

Outbound products include **FedEx International Priority Express**, **FedEx International Priority**, **FedEx International Economy**, **FedEx International Connect Plus**, **FedEx International First**, **FedEx Regional Economy**, **FedEx Europe First International Priority**, **FedEx First Overnight**, **FedEx Priority Overnight**, **FedEx Standard Overnight**, **FedEx 2Day**, **FedEx 2Day A.M.**, **FedEx Express Saver**, **FedEx Ground**, and **FedEx Ground Home Delivery**. Inbound **Return** variants exist for services that support returns. Extra services can include **Hold at Location**, **Saturday Delivery**, and signature options. Additional options include **Pickup Type** (**Drop off at FedEx location**, **Use scheduled pickup**, **Contact FedEx to schedule**) and **Label Format** (**PDF (4x6)** / **ZPL (thermal)**).

Hold-at-Location products can ask for a **Hold at Location ID** from the service-point search — [Pick a service point](/docs/how-to/pick-a-service-point).

FedEx does **not** appear in **Pickups**. That list is Bring and PostNord only — [Schedule a pickup](/docs/how-to/schedule-a-pickup). Shipment **Pickup Type** is an additional option on the product, not that screen.

Tracking is pulled on a schedule. There is no tracking-webhook field on **Edit your carrier** — [Carrier tracking webhooks](/docs/how-to/tracking-webhooks).

FedEx generates customs documents and commercial invoices for international shipments — [Customs and documents](/docs/how-to/customs-and-documents).

## Edit

On **My Carriers**, click **Edit Carrier**. Page title: **Edit your carrier**. URL `/dashboard/carriers/:id`.

Two cards:

* **General** — **Carrier name** (helper: **Update the name of your carrier**), plus **Brand** when brands exist.
* **Carrier settings** — the same FedEx fields as connect, including **Sandbox Mode**.

Header actions: **Delete** and **Save** (pending **Saving…**). Success toast: **Carrier updated successfully**. Loading: **Loading carrier…**. Load failure: **Failed to load carrier. Please try again.** Save failure: **Failed to update carrier. Please try again.**

On edit, credential strings are plain text inputs (not password). Shared delete chrome: [Carrier credentials](/docs/how-to/carrier-credentials).

## Delete

On **Edit your carrier**, click **Delete**. Modal id `global-delete-modal`. Title **Delete Carrier**. Subtitle **You are about to delete carrier "\{\{name}}".** Body: **This will permanently delete carrier "\{\{name}}". This action cannot be undone.** Type the carrier name in **uppercase** to enable **Delete**. Toast: **Carrier deleted successfully**. Failure: **Failed to delete carrier**.

Booked shipments keep their labels and tracking.

## Common errors

| When                            | Copy                                                                                                                                     |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Required field empty on connect | **Create** does nothing until **Carrier name**, **API Key**, **API Secret**, and **Account Number** have values.                         |
| Connect request fails           | **Failed to create carrier. Please try again.**                                                                                          |
| Plan / resource cap             | **You have reached your plan limit for this resource.** / **You have exceeded your plan limits. Please upgrade or remove excess items.** |
| Send with bad credentials       | **The carrier rejected your API credentials. Update the carrier's API key or secret in Carrier settings.**                               |
| Booking rejected                | **FedEx could not book the shipment.**                                                                                                   |
| Missing account at send         | **The carrier configuration is invalid.**                                                                                                |
| Product vs countries            | **The selected carrier product does not ship between these countries. Choose a different product.**                                      |
| Carrier down                    | **The carrier service is currently unavailable.** / **The carrier rejected the request.**                                                |

Auth failures after send: [Carrier authentication failures](/docs/knowledge-base/carrier-authentication-failures).

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index)
* [Carrier credentials](/docs/how-to/carrier-credentials)
* [Sandbox mode](/docs/how-to/sandbox-mode)
* [Carrier products and services](/docs/how-to/carrier-products-and-services)
* [Connect an integration](/docs/how-to/connect-an-integration)
* [Request a carrier integration](/docs/how-to/request-carrier-integration)
* [Carriers](/docs/tutorials/carriers)
