---
title: "Add a Shippo carrier account"
method: POST
path: "/carrier_accounts/register/new"
tags: ["Carrier Accounts"]
---

# Add a Shippo carrier account

`POST /carrier_accounts/register/new`

Adds a Shippo carrier account

## Headers

- `SHIPPO-API-VERSION` string

## Request body

- union
  - CarrierAccountCanadaPostCreateRequest
    - `carrier` 'canada_post', required
    - `parameters` CarrierAccountCanadaPostCreateParameters, required
      - `canada_post_terms` boolean, required — Whether or not the user agrees to Canada Post's terms. If passed in as false, request will fail with error 400
      - `company` string, required
      - `email` string, required
      - `full_name` string, required
      - `phone` string, required — Needs to be a valid phone number and cannot be null
  - CarrierAccountChronopostCreateRequest
    - `carrier` 'chronopost', required
    - `parameters` object, required
  - CarrierAccountColissimoCreateRequest
    - `carrier` 'colissimo', required
    - `parameters` object, required
  - CarrierAccountCorreosCreateRequest
    - `carrier` 'correos', required
    - `parameters` object, required
  - CarrierAccountDeutschePostCreateRequest
    - `carrier` 'deutsche_post', required
    - `parameters` object, required
  - CarrierAccountDHLExpressCreateRequest
    - `carrier` 'dhl_express', required
    - `parameters` CarrierAccountDHLExpressCreateRequestParameters, required
      - `user_accepted_terms_and_conditions` boolean, required — Whether or not the user agrees to the DHL Express Terms and Conditions. If passed in as false, request will fail with error 400
  - CarrierAccountDpdDeCreateRequest
    - `carrier` 'dpd_de', required
    - `parameters` object, required
  - CarrierAccountDPDUKCreateRequest
    - `carrier` 'dpd_uk', required
    - `parameters` object, required
  - CarrierAccountFedExCreateRequest
    - `carrier` 'fedex', required
    - `parameters` object, required
  - CarrierAccountHermesUKCreateRequest
    - `carrier` 'hermes_uk', required
    - `parameters` object, required
  - CarrierAccountMondialRelayCreateRequest
    - `carrier` 'mondial_relay', required
    - `parameters` object, required
  - CarrierAccountPosteItalianeCreateRequest
    - `carrier` 'poste_italiane', required
    - `parameters` object, required
  - CarrierAccountUPSCreateRequest
    - `carrier` 'ups', required
    - `parameters` CarrierAccountUPSCreateRequestParameters
      - `billing_address_city` string, required
      - `billing_address_country_iso2` string, required
      - `billing_address_state` string, required
      - `billing_address_street1` string, required
      - `billing_address_street2` string — Empty string acceptable for billing_address_street2
      - `billing_address_zip` string, required
      - `company` string — Company name. Full name is acceptable in this field if the user has no company name
      - `email` string
      - `full_name` string
      - `phone` string — Needs to be a valid phone number and cannot be null
      - `pickup_address_city` string, required — User's pickup address city.
      - `pickup_address_country_iso2` string, required — User's pickup street 1.
      - `pickup_address_same_as_billing_address` boolean
      - `pickup_address_state` string, required — User's pickup address state.
      - `pickup_address_street1` string, required — User's pickup address street 1.
      - `pickup_address_street2` string — User's pickup street 2.
      - `pickup_address_zip` string, required — User's pickup address zip code.
      - `ups_agreements` boolean, required — Whether the user agrees to the UPS terms and conditions or not. Error 400 will be returned if passed in as false
  - CarrierAccountUSPSCreateRequest
    - `carrier` 'usps', required
    - `parameters` object, required
  - CarrierAccountRoyalMailCreateRequest
    - `carrier` 'royal_mail', required
    - `parameters` CarrierAccountRoyalMailCreateRequestParameters, required
      - `client_id` string, required — The client ID assigned to the user
      - `client_secret` string, required — The secret that corresponds to the supplied client ID
      - `partner_token` string, required — A unique identifier for your OBA account
  - CarrierAccountRoyalMailSfCreateRequest
    - `carrier` 'royal_mail_sf', required
    - `parameters` CarrierAccountRoyalMailSfCreateRequestParameters, required
      - `royal_mail_sf_agreements` boolean, required

## Response `201`

Carrier account

- CarrierAccount
  - `account_id` string, required — Unique identifier of the account. Please check the <a href="https://docs.goshippo.com/docs/carriers/carrieraccounts/">carrier accounts tutorial</a> page for the `account_id` per carrier.<br> To protect account information, this field will be masked in any API response.
  - `active` boolean — Determines whether the account is active. When creating a shipment, if no `carrier_accounts` are explicitly passed Shippo will query all carrier accounts that have this field set. By default, this is set to True.
  - `carrier` string, required — Carrier token, see <a href="/shippoapi/public-api/carriers">Carriers</a><br> Please check the <a href="https://docs.goshippo.com/docs/carriers/carrieraccounts/">carrier accounts tutorial</a> page for all supported carriers.
  - `parameters` union
    - unknown
    - FedExConnectExistingOwnAccountParameters — In the case of masked fields, they should be handled carefully. Fields also must consider: - Not providing a *fields* in parameters will not result in a change to any configured value - Providing a value in a *masked field* with ****** (exactly 6 asterisks) will not change the configured value - Providing *field* with null will clear the configured value - Providing *field* with any other value will change the configured value and may affect the behavior of the account.
      - `first_name` string, required — First name of the account holder
      - `last_name` string, required — Last name of the account holder
      - `phone_number` string, required — Phone number of the account holder
      - `from_address_st` string, required — Street address of the account holder
      - `from_address_city` string, required — City of the account holder
      - `from_address_state` string, required — State of the account holder
      - `from_address_zip` string, required — Zip code of the account holder
      - `from_address_country_iso2` string, iso-3166-1-alpha-2, required — Country of the account holder
      - `use_multi_factor_registration` boolean, required — Must be true. FedEx accounts are registered using the multi-factor registration workflow.
      - `verification_option` 'SMS' | 'EMAIL' | 'CALL' | 'INVOICE', required — Determines the verification option to use for the account registration (Enum: SMS, EMAIL, CALL, INVOICE).
      - `verification_pin` string — (optional) The PIN to verify the account.
      - `verification_invoice_number` string — (optional) The invoice number to verify the account.
      - `verification_invoice_amount` string, decimal — (optional) The invoice amount to verify the account.
      - `verification_invoice_date` string, date — (optional) The invoice date to verify the account. In the format `YYYY-MM-DD`.
      - `verification_invoice_currency` string, iso-4217 — (optional) The invoice currency to verify the account.
    - UPSConnectExistingOwnAccountParameters — An array of additional parameters for the account, such as e.g. password or token. Please check the <a href="https://docs.goshippo.com/docs/carriers/carrieraccounts/">carrier accounts tutorial</a> page for the parameters per carrier.<br> To protect account information, this field will be masked in any API response. In the case of masked fields, they should be handled carefully. Fields also must consider: - Not providing a *fields* in parameters will not result in a change to any configured value - Providing a value in a *masked field* with ****** (exactly 6 asterisks) will not change the configured value - Providing *field* with null will clear the configured value - Providing *field* with any other value will change the configured value and may affect the behavior of the account.
      - `account_number` string, required — The UPS account number
      - `aia_country_iso2` string — Only required if has_invoice is true. Country associated with the account that issued the invoice
      - `billing_address_city` string, required
      - `billing_address_country_iso2` string, required
      - `billing_address_state` string, required
      - `billing_address_street1` string, required
      - `billing_address_street2` string — Empty string acceptable for billing_address_street2
      - `billing_address_zip` string, required
      - `collec_country_iso2` string, required
      - `collec_zip` string, required — Zip code of the collection/pickup address
      - `company` string, required — Company name. Full name is acceptable in this field if the user has no company name
      - `currency_code` string — Only required if has_invoice is true. 3-letter currency code associated with invoice_value
      - `email` string, required
      - `full_name` string, required
      - `has_invoice` boolean, required — true if user has been issued a UPS invoice within the past 90 days for the US or Canada; and 45 days for any other countries. User can use data from any of the last 3 invoices
      - `invoice_controlid` string — Only required if aia_country_iso2 is US and has_invoice is true.
      - `invoice_date` string — Only required if has_invoice is true. Date the invoice was issued. yyyymmdd format
      - `invoice_number` string
      - `invoice_value` string — Only required if has_invoice is true. Max 16 digits before decimal and 2 digits after decimal
      - `phone` string, required
      - `title` string, required — User's title, e.g. including but not limited to Manager, Doctor, Artist, Engineer, Mr, Ms, Mrs, Mx
      - `ups_agreements` boolean, required — Whether the user agrees to the UPS terms and conditions or not. Error 400 will be returned if passed in as false
  - `carrier_name` string — Carrier name, see <a href="/shippoapi/public-api/carriers">Carriers</a><br>
  - `is_shippo_account` boolean
  - `metadata` string
  - `object_id` string — Unique identifier of the carrier account object.
  - `object_owner` string — Username of the user who created the carrier account object.
  - `service_levels` CarrierAccountServiceLevel[]
    - `name` string — Service level name, e.g. `Priority Mail` or `FedEx Ground®`. A service level commonly defines the transit time of a Shipment (e.g., Express vs. Standard), along with other properties. These names vary depending on the provider.<br> See <a href="/shippoapi/public-api/service-levels">Service Levels</a>.
    - `token` string — Service level token, e.g. `usps_priority` or `fedex_ground`.<br> See <a href="/shippoapi/public-api/service-levels">Service Levels</a>.
    - `supports_return_labels` boolean — Whether or not the service level supports return labels.
  - `test` boolean — Indicates whether the object has been created in test mode.

## Other responses

- `400` — Bad request

---

[API](https://skmtc.net/goshippo/apis/shippo-external-api.md) · [All operations](https://skmtc.net/goshippo/apis/shippo-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/goshippo/shippo-external-api/versions/7e1ec201b515/schema)
