---
title: "Connect a carrier account"
method: POST
path: "/v2/connections/carriers/{carrier_name}"
tags: ["connections"]
---

# Connect a carrier account

`POST /v2/connections/carriers/{carrier_name}`

## Request

- Base URL: `https://api.shipstation.com`
- URL: `https://api.shipstation.com/v2/connections/carriers/{carrier_name}`
- Auth: API key in header `api-key`

<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 access__plan--off">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 access__plan--off">Standard</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan access__plan--off">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 carrier account

## Request body

- union
  - ConnectAccessWorldwideRequestBody: An Access Worldwide account information request body
    - `nickname` string, required: The nickname associated with the carrier connection
    - `username` string, required: Access Worldwide Username
    - `password` string, required: Access Worldwide Password
  - ConnectAmazonBuyShippingRequestBody: An Amazon account information request body
    - `nickname` string, required: Nickname to be associated with the account connection
    - `merchant_seller_id` string, required
    - `mws_auth_token` string, required
    - `email` string, email, required: An email address.
  - ConnectAmazonShippingUk: An Amazon Shipping UK account information request body
    - `nickname` string, required: The nickname associated with the carrier connection
    - `auth_code` string, required: Amazon UK Shipping auth code.
  - ConnectApcRequestBody: An APC account information request body
    - `nickname` string, required: The nickname for the APC account
    - `username` string, required: The username for the APC account
    - `password` string, required: The password for the APC account
  - ConnectAsendiaRequestBody: An Asendia account information request body
    - `nickname` string, required: The nickname of the Asendia account
    - `account_number` string, required: Asendia account number
    - `username` string, required: Asendia username
    - `password` string, required: Asendia password
    - `api_key` string, required: Asendia api_key
    - `processing_location` string, required: Asendia processing location, one of: 'MIA', 'JFK', 'ORD', 'PHL', 'SFO', 'LAX', 'SLC', 'TOR', 'BUF', 'CAL'
    - `sub_account_number` string: Asendia sub account number
  - ConnectAustraliaPostRequestBody: An Australia Post account information request body
    - `account_number` string, required: Account number
    - `api_key` string, required: API key
    - `api_secret` string, required: API secret
    - `nickname` string, required: Nickname
  - ConnectCanadaPostRequestBody: A Canada Post account information request body
    - `nickname` string, required: Nickname
    - `api_key` string, required: Canada Post Account API Key
    - `api_secret` string, required: Canada Post Account API Secret
    - `account_number` string, required: Canada Post Account Number
    - `contract_id` string, required: Canada Post Account Contract ID
  - ConnectDhlEcommerceRequestBody: A DHL Ecommerce account information request body
    - `nickname` string, required: A nickname to help you identify this account
    - `client_id` string, required: The client id
    - `username` string, required: The account username
    - `password` string, required: The account password
    - `pickup_number` string, required: The pickup number
    - `distribution_center` string, required: The distribution center
    - `api_key` string: The DHL E-Commerce API key. This field is optional, but if not set you will not be able to get rates for this account.
    - `api_secret` string: The DHL E-Commerce API secret. This field is optional, but if not set you will not be able to get rates for this account.
    - `ancillary_endorsement` 'none' | 'return_service_requested' | 'forwarding_service_requested' | 'address_service_requested' | 'change_service_requested' | 'leave_if_no_response': [Ancillary service endorsements](https://pe.usps.com/text/qsg300/Q507.htm) are used by mailers to request an addressee's new address and to provide the carrier with instructions on how to handle packages that are undeliverable as addressed. | Ancillary Service Endorsement | Description |--------------------------------|----------------------------------------------------- | `none` | No ancillary service is requested. Depending on the carrier servive, the package may be forwarded, returned, or discarded. | `return_service_requested` | The package is returned to the sender. If possible, notification of the new address is is included with the returned package. | `forwarding_service_requested` | Forward the package to the new address, if possible; otherwise, return it to the sender. | `address_service_requested` | Forward the package to the new address, if possible; otherwise, return it to the sender. This is similar to `forwarding_service_requested`, but different restrictions and charges may apply. | `change_service_requested` | The package is discarded. If possible, notification of the new address is sent to the sender. | `leave_if_no_response` |
    - `account_number` string: Account number
    - `ftp_username` string: FTP username
    - `ftp_password` string: FTP password
    - `sold_to` string: Sold To field
    - `registration_id` string
    - `software_name` string
  - ConnectDhlExpressRequestBody: A DHL express account information request body
    - `nickname` string, required: Nickname
    - `account_number` string, required: Account number
    - `site_id` string: Required if password is provided
    - `password` string: Required if site id is provided
    - `country_code` string: A two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
  - ConnectDhlExpressAuRequestBody: A DHL Express AU account information request body
    - `nickname` string, required: Nickname
    - `account_number` string, required: Account number
  - ConnectDhlExpressCaRequestBody: A DHL Express CA account information request body
    - `nickname` string, required: Nickname
    - `account_number` string, required: Account number
  - ConnectDhlExpressUkRequestBody: A DHL Express UK account information request body
    - `account_number` string, required: Account number
    - `site_id` string, required: A string that uniquely identifies a ShipStation resource, such as a carrier, label, shipment, etc.
    - `password` string, required: Password
    - `nickname` string, required: Nickname
  - ConnectDpdRequestBody: A DPD account information request body
    - `account_number` string, required: Account number
    - `password` string, required: Password
    - `nickname` string, required: Nickname
  - ConnectEndiciaRequestBody: An Endicia account information request body
    - `nickname` string, required: Nickname
    - `account` string, required: Account
    - `passphrase` string, required: Passphrase
  - ConnectEpgShippingRequestBody: An EPG (ePost Global) account information request body
    - `nickname` string, required: Nickname
    - `token` string, required: Token
  - ConnectFedexRequestBody: A Fedex account information request body
    - `account_number` string, required: Account number
    - `address1` string, required: Address
    - `address2` string: Address
    - `city` string, required: The city
    - `company` string: The company
    - `country_code` string, required: Country code
    - `email` string, email, required: An email address.
    - `first_name` string, required: First name
    - `last_name` string, required: Last name
    - `phone` string, required: Phone number
    - `postal_code` string, required: Postal Code
    - `state` string, required: State
    - `nickname` string, required: Nickname
    - `agree_to_eula` boolean, required: Boolean signaling agreement to the Fedex End User License Agreement
    - `meter_number` string: Meter number
  - ConnectFedexUkRequestBody: A Fedex UK account information request body
    - `account_number` string, required: Account number
    - `address1` string, required: Address
    - `address2` string: Address
    - `city` string, required: The city
    - `company` string: The company
    - `country_code` string, required: Country code
    - `email` string, email, required: An email address.
    - `first_name` string, required: First name
    - `last_name` string, required: Last name
    - `phone` string, required: Phone number
    - `postal_code` string, required: Postal Code
    - `state` string, required: State
    - `nickname` string, required: Nickname
    - `agree_to_eula` boolean, required: Boolean signaling agreement to the Fedex End User License Agreement
    - `meter_number` string: Meter number
  - ConnectFirstmileRequestBody: A First Mile account information request body
    - `nickname` string, required: Nickname
    - `mailer_id` string, required: A string that uniquely identifies a ShipStation resource, such as a carrier, label, shipment, etc.
    - `profile_name` string: Profile name
    - `password` string, required: Password
  - ConnectImexRequestBody: An Imex account information request body
    - `nickname` string, required: Nickname
    - `username` string, required: Username
    - `password` string, required: Password
  - ConnectLasershipRequestBody: A Lasership account information request body
    - `nickname` string, required: Nickname
    - `web_services_id` string, required: Web Service ID (WSID)
    - `web_services_key` string, required: Web Service Key (WSKey)
    - `customer_branch` string, required: Customer Branch
    - `Address` string, required: Address
    - `Address2` string: Address2
    - `PostalCode` string, required: PostalCode
    - `City` string, required: City
    - `State` string, required: State
    - `country` string: Country
    - `Phone` string: Phone
    - `Email` string: Email
    - `instructions` string: Instructions
    - `facility_code` string: Facility Code
    - `lasership_critical_pull_time` string, required: Critical Pull Time (local time)
    - `lasership_critical_entry_time` string, required: Critical Entry Time (local time)
    - `declare_piece_attributes_separately_for_every_shipment` boolean: Declare piece attributes separately for every shipment, overrides individual attribute below.
    - `AttrAlcohol` boolean: Set this to true if your shipments will always contain Alcohol
    - `AttrDryIce` boolean: Set this to true if your shipments will always contain DryIce
    - `AttrHazmat` boolean: Set this to true if your shipments will always contain Hazmat
    - `AttrTwoPersons` boolean: Set this to true if your shipments will always require Two Persons
    - `AttrExplosive` boolean: Set this to true if your shipments will always contain Explosives
    - `AttrControlledSubstance` boolean: Set this to true if your shipments will always contain Controlled Substances
    - `AttrRefrigerated` boolean: Set this to true if your shipments will always require Refrigeration
    - `AttrPerishable` boolean: Set this to true if your shipments will always be Perishable
    - `AttrNoRTS` boolean: Set this to true if your shipments will always use "No Return To Sender"
  - ConnectNewgisticsRequestBody: A Newgistics account information request body
    - `merchant_id` integer: Merchant id
    - `mailer_id` integer: Mailer id
    - `induction_site` string, required: Induction site
    - `nickname` string, required: Nickname
  - ConnectOntracRequestBody: An Ontrac account information request body
    - `nickname` string, required: Nickname
    - `account_number` string, required: Account number
    - `password` string, required: Password
  - ConnectPurolatorRequestBody: A Purolator account information request body
    - `account_number` string, required: Account number
    - `activation_key` string, required: Activation key
    - `nickname` string, required: Nickname
  - ConnectRoyalMailRequestBody: A Royal Mail account information request body
    - `account_number` string, required: Account number
    - `oba_email` string, email: An email address.
    - `contact_name` string, required: Contact name
    - `email` string, email: An email address.
    - `company_name` string: Company name
    - `street_line1` string: Street line1
    - `street_line2` string: Street line2
    - `street_line3` string: Street line3
    - `city` string, required: City
    - `postal_code` string, required: Postal code
    - `phone` string: Phone
    - `nickname` string, required: Nickname
  - ConnectSekoRequestBody: A SEKO account information request body
    - `nickname` string, required: Nickname
    - `access_key` string, required: Seko Account Access Key
  - ConnectSendleRequestBody: A Sendle account information request body
    - `nickname` string, required: Nickname
    - `sendle_id` string, required: A string that uniquely identifies a ShipStation resource, such as a carrier, label, shipment, etc.
    - `api_key` string, required: API key
  - ConnectStampsRequestBody: A Stamps account information request body
    - `nickname` string, required: Nickname
    - `username` string, required: Username
    - `password` string, required: Password
  - ConnectUpsRequestBody: A UPS account information request body. The location header from this call should be used to redirect to UPS for sign in.
    - `nickname` string, required: Nickname
    - `account_number` string, required: Account number
    - `account_postal_code` string, required: Account Postal Code
    - `account_country_code` string, required: Account Country Code

## Response `200`

The request was a success.

- ConnectCarrierResponseBody: A connect account response body
  - `carrier_id` string, required: A string that uniquely identifies a ShipStation resource, such as a carrier, label, shipment, etc.

## Other responses

- `400`: The request contained errors.
- `404`: The specified resource does not exist.
- `500`: An error occurred on ShipStation API's side.

## Changes

- **2026-10-22** `4e29670aa28d`: 6 warning
  - added the new `bring_your_own_label_not_supported` enum value to the `errors/items/error_code` response property for the response status `400`
  - added the new `bring_your_own_label_not_supported` enum value to the `errors/items/error_code` response property for the response status `404`
  - added the new `multiple_sales_orders` enum value to the `errors/items/error_code` response property for the response status `400`
  - added the new `multiple_sales_orders` enum value to the `errors/items/error_code` response property for the response status `404`
  - …2 more
- **2026-10-21** `0e292ac1c5f3`: 1 breaking, 1 info
  - removed `#/components/schemas/connect_rr_donnelley_request_body` from the request body `anyOf` list
  - added `#/components/schemas/connect_epg_shipping_request_body` to the request body `anyOf` list
- …earlier changes not shown

[Operation history](https://skmtc.dev/shipstation/apis/shipstation-api-v2/changes/v2/connections/carriers/:carrier_name/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/43d0f3c948ca?raw)
