Shipping Providers
Shipping service providers wishing to offer shipping services and rates to BigCommerce merchants and shoppers can implement BigCommerce Shipping Provider endpoints. Once they implement and accept their service into BigCommerce’s shipping carrier registry, merchants will have access to enable and configure the service through their BigCommerce control panel. Once enabled on a store, BigCommerce will automatically retrieve the service options and rates using the provider’s endpoints and display them to merchants in the store’s control panel and to shoppers on the storefront.
Merchants can also use shipping provider endpoints to retrieve rates from custom shipping tables or an in-house shipping rate calculation service.
Some use cases for the Shipping Provider API are:
- A drop-shipper that requires their own rates
- A merchant that already has a shipping table
- Third-party logistics
- Create a combination of in-store pickup and shipping options for shoppers
This article is a guide to developing an app that will make your shipping rates available to merchants and shoppers on demand.
Prerequisites
- Required OAuth scopes:
Information and Settings - BigCommerce single-click app
Shipping app overview

Single-carrier versus multi-carrier apps
You can only associate one registered shipping carrier with an app. This registered carrier can provide quotes from multiple downstream carriers.
BigCommerce makes a distinction between single-carrier and multi-carrier shipping providers. The primary difference is how the quote displays in the customer’s cart at checkout. If your app is registered as a single carrier, the name of the carrier providing the quote will appear beside the name of the shipping quote in the customer’s list of shipping rate options. The carrier name will not appear in quotes from multi-carrier apps. The following images illustrate the difference:
Single-carrier quote example

Multi-carrier quote example

Carrier configurations
The configurations schema is optional and defines the settings you should provide when setting up a shipping method or carrier connection in a store. BigCommerce then includes these settings in requests it makes to your service.
If you’re unsure about the configurations you may need, leave them unspecified for now and request to add them later.
There are two types of configuration options: “connection” and “settings”. For each configuration option, please provide the following details:
-
Code: An identifier for this option. This identifier and the merchant’s input value for this configuration will be provided on the rate or check and validate connection endpoints.
-
Type: The display element for this option. Valid types include:
text,checkbox,select,multiselect, orpassword. -
Label: Text displayed on the BigCommerce control panel for this option.
-
Description: A concise and clear description explaining the purpose of this option.
-
Required: Indicate whether this option is mandatory or optional.
-
Map[only required if the type is select or multiselect]: If the option type is select or multiselect, provide a key-value pair to send.
Here are examples:
Sign up
When your app is complete, it will be listed in our carrier registry, so that your shipping rates are available for merchants and shoppers to use. Register your app and get a carrier ID to get started.
Register your app
We need your app ID to generate a carrier ID for your shipping service. To get your app ID, create a draft app in Developer Tools, and fill in the information requested on the Step 3: Technical tab. After you save the app, the developer tools control panel will navigate to a URL that includes your app’s unique ID.

Request a carrier ID
To get your app set up and request a carrier ID, send an email to shippingproviderapi@bigcommerce.com.
Please include the following information:
- Your name
- Your app’s name
- Your partner ID
- Your app’s ID
- Your email
- A description of the app
- Your service URLs
- Whether you prefer single-carrier or multi-carrier status
- Carrier configurations: Optional. If unsure, leave this out.
Before development
BigCommerce sends requests to your server to get information back about shipping quotes, credential validation, and configuration. To handle these requests smoothly, consider the following:
Your service URLs
Because BigCommerce sends your app requests, you need to provide BigCommerce with a URL that accepts quote requests and, optionally, a URL to check and validate connection options during app registration. These can be any valid HTTPS URLs that use port 443, for example:
https://example.com/rate
Replace example.com and rate with your own host and path.
Routes
You should create a URL to provide shipping quotes on your API and check the available shipping rates. The second URL (optional) checks to ensure the merchant’s connection settings are valid. It can perform any checks necessary to do so, such as looking up credentials in your database or calling a downstream service to verify them.
Request and response bodies
BigCommerce will send and receive data using JSON. The request for rates will always be formatted using the Base Rate Request Model. The response for rates should be formatted using the Carrier Quote Object. Format the request to check for merchant app credentials as Check Connection Options request payload, and the response should be formatted using the Check Connection Options response payload.
Error handling
In the case of errors, include human-readable error messages in the response payload under the messages key.
Example error response
Developing the app
To use the Shipping Provider API to provide shipping quotes, shipping providers must build a BigCommerce single-click app.
Using a BigCommerce app enables shipping providers to promote their solution in the BigCommerce App Marketplace, request merchant authorization of API scopes during app install, and enable configuration of shipping provider settings and/or order fulfillment via an iFrame in the BigCommerce control panel.
For more information, see our Introduction to Building Apps.
Control Panel installation workflow
During the app setup, if you configure the Check Connection Options URL for the carrier, an attempt to connect the carrier via the Shipping Manager UI or the Connect Carrier API causes a request to be made to that URL with the provided options. The resource should respond by indicating if the credentials are valid and explain what is wrong. If you did not configure this URL, this check is not required and the credentials are assumed valid as long as they pass type checks.
Example request to validate connection options
https://example.com/check_connection_options
Example response
Credential validation
It is best practice to authenticate the user and store against your database or the downstream provider service.
Once you install the app, it will be made available for configuration by merchants and API users. A merchant can navigate to the Shipping Manager and enable, configure, and disable the carrier for any defined zone.
API installation workflow
To set up a carrier using the API, first, connect it using the Connect Carrier API. Make a request containing the connection settings required by your carrier. The ID of the carrier is required. The carrier ID will be issued by BigCommerce when your carrier is registered. All connection fields are unique to each carrier. If your carrier doesn’t require any connection settings, send an empty object for the connection settings property.
Once connected, it’s possible to create shipping methods for a connected carrier in any shipping zone. You can query shipping zones using the Shipping Zones resource. For any zone, a request can be made to the Shipping Methods resource using the zone ID from the Shipping Zones resource to create a new method for the connected carrier. You are required to enter the shipping carrier’s ID in the type field.
Returning shipping quotes
Whenever shipping rates are required, BigCommerce checks its internal cache for valid entries. BigCommerce uses valid entries and does not call the shipping carrier. If a valid cache entry does not exist, BigCommerce makes a request to the Quote URL with details of the items to be shipped, the shipping origin, and the shipping destination. If you configured any connection settings or zone settings, include these. The shipping carrier must then respond with zero or more shipping quotes.
If no shipping quotes are available, the shipping carrier will send a response with the following format for the shipping quote:
When you uninstall an app with an associated shipping carrier, you also automatically remove all the shipping methods and connection info for that carrier from the store. You can no longer make quote requests, and users will no longer see shipping quotes for that carrier.
The response payload will display shipping quotes from lowest to highest price.
Incomplete postcodes
Shipping provider integrations should plan to handle incomplete postcodes when handling shipping quotes. Incomplete postcodes can occur when stores use digital wallets as a payment method. Digital wallets truncate postcodes for shipping addresses in the UK and Canada as they only provide the first three characters to shipping provider integrations.
Digital wallets truncate postcodes only when they generate shipping quotes. Complete postcodes are available once a shopper places the order. Shipping providers can read and fetch order data after order placement.
Including product metadata in rate requests
BigCommerce passes carrier-specific product metadata to a carrier service in a rate request via product and variant metafields. This product metadata can be useful if your service depends on specific fields that are not existent on BigCommerce products or variants by default.
To pass metadata in a rate request, the metafield must meet the following requirements:
- it must be a product or variant metafield (you cannot pass category, brand, or other metafields in rate requests)
- the metafield
permission_setmust bereadorwrite - the metafield
namespacemust match this format:shipping_carrier_<carrier_id>(example:shipping_carrier_72)
The carrier registration process described in the Sign up section provides the carrier_id.
For more information on product and variant metafields, see:
- API Reference > Store Management > Catalog > Product Metafields
- API Reference > Store Management > Catalog > Product Variant Metafields
Submitting the app
Before submitting your app, make sure you have the following information.
Single-carrier or multi-carrier
A single-carrier app will offer one service, such as USPS. A multi-carrier app will offer more than one carrier such as USPS, DHL, and Canada Post.
Name and description
Name and description of the shipping carrier or carriers.
Logo
A 70x70 pixel logo that represents the shipping carrier app.
Configuration fields
Any shipping zone-specific or connection-specific fields to be made available to merchants or APIs for configuration. Configuration fields can include which rates to offer, packaging type, or packing method.
To submit your app, send an email to shippingproviderapi@bigcommerce.com.
Definitions
FAQ
Can I publish more than one app at a time?
No, you can only publish one app at a time. The others can be for use as testing or as private apps.