---
title: "Connect a freight provider account"
method: POST
path: "/v2/freight/provider_accounts"
tags: ["freight"]
---

# Connect a freight provider account

`POST /v2/freight/provider_accounts`

<aside class="access" aria-label="Endpoint access">
      <table class="access__table">
        <thead>
          <tr>
            <th class="access__table-header">Products</th>
            <th class="access__table-header">Plans</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td class="access__table-cell access__product">
              <img class="access__logo" src="/static/logos/shipstation-api-logo.svg" alt="ShipStation API Logo" loading="lazy" decoding="async"/>
              <div class="access__sub">Formerly ShipEngine</div>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-free.md" class="access__plan">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Advanced</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Enterprise</a>
            </td>
          </tr>
          <tr>
            <td class="access__table-cell">
              <img class="access__logo" src="/static/logos/shipstation-logo.svg" alt="ShipStation Logo" loading="lazy" decoding="async"/>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Starter</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Standard</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Premium</a>
            </td>
          </tr>
        </tbody>
      </table>
      <footer class="access__footer">
        <a class="access__help" href="/apis/@shipstation-v2/docs/getting-started/products-and-plans.md">
          Learn about products and plans
          <img src="/static/icons/external-link.svg" alt="External Link Icon" style="width: 16px;" loading="lazy" decoding="async"/>
        </a>
      </footer>
    </aside>

Connect a freight account the seller already holds with the provider. Both connectable providers — `speedship` (WWEX) and `unishippers` — authenticate with an OAuth client ID / secret pair issued by the provider.

The credentials are verified against the provider before they are stored, so a `201` means the connection can be quoted against immediately.

A seller may hold one connection per provider. Connecting a provider that is already connected returns `409` with error code `freight_provider_already_connected` and the existing `freight_provider_account_id`. Use `PUT /v2/freight/provider_accounts/{freight_provider_account_id}/credentials` to rotate credentials on the existing connection. Use `DELETE /v2/freight/provider_accounts/{freight_provider_account_id}` to disconnect it.

## Request body

- ConnectFreightProviderAccountRequestBody — A request to connect a freight account the seller already holds with a provider.
  - `freight_provider_code` string, required — The code of the provider to connect. The connectable codes are the `freight_provider_code` values returned by [List freight provider accounts](#operation/list_freight_provider_accounts). Currently supported: `speedship` (WWEX) and `unishippers`.
  - `client_id` string, required — The OAuth client ID issued by the freight provider.
  - `client_secret` string, required — The OAuth client secret issued by the freight provider.
  - `nickname` string, nullable — An optional label for the connection. Echoed back by [List freight provider accounts](#operation/list_freight_provider_accounts).

## Response `201`

The freight provider account was connected successfully.

- FreightProviderAccount — A freight provider account connected to your account.
  - `freight_provider_account_id` string — A string that uniquely identifies a ShipStation resource, such as a carrier, label, shipment, etc.
  - `freight_provider_code` string — The code of the freight provider, such as `UNISHIPPERS` or `WWEX`. This is the same value returned as `freight_provider_code` on quotes, shipments, and tracking.
  - `nickname` string, nullable — The name given to the connection when it was set up, or `null` when it has none.

## Other responses

- `400` — A required field is missing or invalid, or the `freight_provider_code` is not a supported value.
- `409` — The seller already has an active connection to this provider (`freight_provider_already_connected`). The error body includes the existing `freight_provider_account_id`.
- `500` — An error occurred on ShipStation API's side.

## Changes

- **2026-09-05** `17802d3fbe61` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/shipstation/apis/shipstation-api-v2/changes/v2/freight/provider_accounts/post.md)

---

[API](https://skmtc.dev/shipstation/apis/shipstation-api-v2.md) · [All operations](https://skmtc.dev/shipstation/apis/shipstation-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/shipstation/apis/shipstation-api-v2/revisions/5fd397fac417?raw)
