# Table of Contents - [Shipbubble API | Shipbubble API Documentation](#shipbubble-api-shipbubble-api-documentation) - [Get started | Shipbubble API Documentation](#get-started-shipbubble-api-documentation) - [Authentication | Shipbubble API Documentation](#authentication-shipbubble-api-documentation) - [Request and Responses | Shipbubble API Documentation](#request-and-responses-shipbubble-api-documentation) - [Request wallet fund | Shipbubble API Documentation](#request-wallet-fund-shipbubble-api-documentation) - [Wallet | Shipbubble API Documentation](#wallet-shipbubble-api-documentation) - [Postman | Shipbubble API Documentation](#postman-shipbubble-api-documentation) - [Pagination | Shipbubble API Documentation](#pagination-shipbubble-api-documentation) - [Get shipping wallet balance | Shipbubble API Documentation](#get-shipping-wallet-balance-shipbubble-api-documentation) - [Errors | Shipbubble API Documentation](#errors-shipbubble-api-documentation) - [Rate Limiting | Shipbubble API Documentation](#rate-limiting-shipbubble-api-documentation) - [Addresses | Shipbubble API Documentation](#addresses-shipbubble-api-documentation) - [Get single address details | Shipbubble API Documentation](#get-single-address-details-shipbubble-api-documentation) - [Edit address details | Shipbubble API Documentation](#edit-address-details-shipbubble-api-documentation) - [Cash on delivery | Shipbubble API Documentation](#cash-on-delivery-shipbubble-api-documentation) - [Package dimensions | Shipbubble API Documentation](#package-dimensions-shipbubble-api-documentation) - [Get validated addresses | Shipbubble API Documentation](#get-validated-addresses-shipbubble-api-documentation) - [Couriers | Shipbubble API Documentation](#couriers-shipbubble-api-documentation) - [Insurance | Shipbubble API Documentation](#insurance-shipbubble-api-documentation) - [Validate address (global) | Shipbubble API Documentation](#validate-address-global-shipbubble-api-documentation) - [Package categories | Shipbubble API Documentation](#package-categories-shipbubble-api-documentation) - [Rates | Shipbubble API Documentation](#rates-shipbubble-api-documentation) - [Shipments | Shipbubble API Documentation](#shipments-shipbubble-api-documentation) - [Edit request token details | Shipbubble API Documentation](#edit-request-token-details-shipbubble-api-documentation) - [View courier coverage areas | Shipbubble API Documentation](#view-courier-coverage-areas-shipbubble-api-documentation) - [Get Insurance Rates | Shipbubble API Documentation](#get-insurance-rates-shipbubble-api-documentation) - [Returns | Shipbubble API Documentation](#returns-shipbubble-api-documentation) - [Tracking | Shipbubble API Documentation](#tracking-shipbubble-api-documentation) - [View courier integrations | Shipbubble API Documentation](#view-courier-integrations-shipbubble-api-documentation) - [Marketplaces | Shipbubble API Documentation](#marketplaces-shipbubble-api-documentation) - [Cancel shipment | Shipbubble API Documentation](#cancel-shipment-shipbubble-api-documentation) - [Webhooks | Shipbubble API Documentation](#webhooks-shipbubble-api-documentation) - [Webhook simulator (sandbox) | Shipbubble API Documentation](#webhook-simulator-sandbox-shipbubble-api-documentation) - [Stores | Shipbubble API Documentation](#stores-shipbubble-api-documentation) - [Get stores | Shipbubble API Documentation](#get-stores-shipbubble-api-documentation) - [Request shipping rates | Shipbubble API Documentation](#request-shipping-rates-shipbubble-api-documentation) - [Get rates for a return shipment request | Shipbubble API Documentation](#get-rates-for-a-return-shipment-request-shipbubble-api-documentation) - [Create store | Shipbubble API Documentation](#create-store-shipbubble-api-documentation) - [Create shipment | Shipbubble API Documentation](#create-shipment-shipbubble-api-documentation) - [Delete store | Shipbubble API Documentation](#delete-store-shipbubble-api-documentation) - [Request shipping rates from selected couriers | Shipbubble API Documentation](#request-shipping-rates-from-selected-couriers-shipbubble-api-documentation) - [Products | Shipbubble API Documentation](#products-shipbubble-api-documentation) - [Get multiple specific shipments | Shipbubble API Documentation](#get-multiple-specific-shipments-shipbubble-api-documentation) - [Get shipments | Shipbubble API Documentation](#get-shipments-shipbubble-api-documentation) - [Update store product | Shipbubble API Documentation](#update-store-product-shipbubble-api-documentation) - [Create variable product | Shipbubble API Documentation](#create-variable-product-shipbubble-api-documentation) - [Get store products | Shipbubble API Documentation](#get-store-products-shipbubble-api-documentation) - [Delete store products | Shipbubble API Documentation](#delete-store-products-shipbubble-api-documentation) - [Create single product | Shipbubble API Documentation](#create-single-product-shipbubble-api-documentation) --- # Shipbubble API | Shipbubble API Documentation Shipbubble provides you with hassle-free powerful shipping APIs for you to add end-to-end shipping functionality to any of your platforms (e.g Website, e-commerce store, ERP, etc). You can get rates, create & track shipments, and so much more without having to leave your main platform. Shipbubble APIs offer you access to most of the features available on your dashboard and allow you to customize them for use in your desired application. It is a **RESTful** API. [NextGet startedchevron-right](https://docs.shipbubble.com/get-started) Last updated 3 days ago --- # Get started | Shipbubble API Documentation All API endpoints listed in this documentation are relative to **https://api.shipbubble.com/v1** circle-info **Before you get started, you will need to:** 1. Create an account here - https://app.shipbubble.com/register 2. Visit the API keys & Webhook tab in the settings section of the dashboard. 3. Generate an API Key on your dashboard, we will provide you with a test key that you can use to make API calls in your test environment. 4. Enable API access for your account. 5. Your API keys carry many privileges, so keep them secure. Do not share your API keys in publicly accessible platforms such as repositories / client-side code. ![](https://docs.shipbubble.com/~gitbook/image?url=https%3A%2F%2F3904898644-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FvF1eLsxw82OLaOzpmxX4%252Fuploads%252FM6Lmd6PndBqSzvidjQsq%252FChatGPT%2520Image%2520Apr%252010%252C%25202025%252C%252002_04_38%2520PM.png%3Falt%3Dmedia%26token%3Dd093fc06-1ba3-41fc-a8fe-8a862db7039b&width=768&dpr=3&quality=100&sign=3a64ca33&sv=2) circle-exclamation **Shipbubble APIs currently only support shipping from your account's country of origin** If your application accepts orders from many countries, you must register a Shipbubble account for each one and obtain a unique API key. [PreviousShipbubble APIchevron-left](https://docs.shipbubble.com/) [NextAuthenticationchevron-right](https://docs.shipbubble.com/get-started/authentication) Last updated 11 months ago --- # Authentication | Shipbubble API Documentation Shipbubble uses API keys to authenticate requests. Test mode API keys have the prefix **sb\_sandbox** and Live mode API keys have the prefix **sb\_prod**. Shipbubble uses the Bearer Authentication header to authenticate requests. You will need to include Authorization: Bearer **API\_KEY** in the header for all requests. **Sample header** Authorization: Bearer sb\_sandbox\_uirgtrutghr57495 [PreviousGet startedchevron-left](https://docs.shipbubble.com/get-started) [NextRequest and Responseschevron-right](https://docs.shipbubble.com/get-started/request-and-responses) Last updated 4 years ago --- # Request and Responses | Shipbubble API Documentation JSON is used to format both the request body and the returned data (response). Application/JSON will always be the content type for responses. In general, all responses will be formatted as follows: Field Datatype Description status _String_ Helps differentiate responses, it either returns '**success**' or '**failed**' message _String_ Gives a description of the status returned (do not use for your checks) data _Object_ Contains actionable result of a successfully processed request if present errors _Array_ Contains errors pertaining to a request body (e.g invalid parameter submitted) [PreviousAuthenticationchevron-left](https://docs.shipbubble.com/get-started/authentication) [NextErrorschevron-right](https://docs.shipbubble.com/get-started/errors) Last updated 4 years ago --- # Request wallet fund | Shipbubble API Documentation circle-exclamation This endpoint only works when requesting with your production key `POST` `https://api.shipbubble.com/v1/shipping/wallet/fund` **Body** Name Type Description `amount` number Amount to be funded **Response** 200 400 Copy { "status": "success", "message": "Retrieved successfully", "data": { "payment_url": "https://checkout.paystack.com/un58cepyzok34gj" } } Copy { "status": "failed", "message": "Invalid amount provided" } [PreviousGet shipping wallet balancechevron-left](https://docs.shipbubble.com/api-reference/wallet/get-shipping-wallet-balance) [NextAddresseschevron-right](https://docs.shipbubble.com/api-reference/addresses) Last updated 1 year ago --- # Wallet | Shipbubble API Documentation [Get shipping wallet balancechevron-right](https://docs.shipbubble.com/api-reference/wallet/get-shipping-wallet-balance) [Request wallet fundchevron-right](https://docs.shipbubble.com/api-reference/wallet/request-wallet-fund) [PreviousPostmanchevron-left](https://docs.shipbubble.com/get-started/postman) [NextGet shipping wallet balancechevron-right](https://docs.shipbubble.com/api-reference/wallet/get-shipping-wallet-balance) Last updated 1 year ago --- # Postman | Shipbubble API Documentation [https://documenter.getpostman.com/view/23593729/2sAYJ9AJJrarrow-up-right](https://documenter.getpostman.com/view/23593729/2sAYJ9AJJr) [PreviousPaginationchevron-left](https://docs.shipbubble.com/get-started/pagination) [NextWalletchevron-right](https://docs.shipbubble.com/api-reference/wallet) Last updated 1 year ago --- # Pagination | Shipbubble API Documentation Whenever you try to retrieve a list (e.g shipping labels list), the pagination property is added to their response by default We include the following as query parameters to limit our queries. `GET` `/example_list_url?Page=1&PerPage=1` #### [hashtag](https://docs.shipbubble.com/get-started/pagination#query-parameters) Query Parameters Name Type Description PerPage number This is the maximum number of records that will be returned after the request. This can be modified by passing a new value into the query parameter. **Default is 50** Page number This is current `page` to be returned per request. **Default: 1** 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "results": [], "pagination": { "current": 1, "perPage": 1, "previous": 0, "next": 7, "total": 8 } } } [PreviousRate Limitingchevron-left](https://docs.shipbubble.com/get-started/rate-limiting) [NextPostmanchevron-right](https://docs.shipbubble.com/get-started/postman) Last updated 4 years ago --- # Get shipping wallet balance | Shipbubble API Documentation `GET` `https://api.shipbubble.com/v1/shipping/wallet/balance` 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "balance": 80124.2, "currency": "NGN" } } [PreviousWalletchevron-left](https://docs.shipbubble.com/api-reference/wallet) [NextRequest wallet fundchevron-right](https://docs.shipbubble.com/api-reference/wallet/request-wallet-fund) Last updated 1 year ago --- # Errors | Shipbubble API Documentation Shipbubble APIs uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Code “200” indicates success. Codes in the 4xx range indicate an error that failed given the information provided (e.g. a required parameter was omitted, invalid request body, etc.). Codes in the 5xx range indicate an error with Shipbubbles' servers (these are rare). Below is a description of our error codes: Response code Description 400 Invalid request, account error (eg no kyc, insufficient wallet balance etc), description is usually included in message property 401 No valid API key provided 403 API key does not have permission to perform request 404 Requested resource is not found 422 Invalid data values sumbitted in the request body 429 Too many requests, rate limit reached 500 Our servers cannot process request at the moment (**These are rare**) 503 Third-party service unavailable (**please contact us as soon as you see this error**) [PreviousRequest and Responseschevron-left](https://docs.shipbubble.com/get-started/request-and-responses) [NextRate Limitingchevron-right](https://docs.shipbubble.com/get-started/rate-limiting) Last updated 3 years ago --- # Rate Limiting | Shipbubble API Documentation Rate limiting is applied on an API key basis. You will be restricted once you make the maximum amount of requests until the new window begins. [PreviousErrorschevron-left](https://docs.shipbubble.com/get-started/errors) [NextPaginationchevron-right](https://docs.shipbubble.com/get-started/pagination) Last updated 3 years ago --- # Addresses | Shipbubble API Documentation To prevent failed deliveries and address correction fees during an order, validate your addresses through our API before you create shipping labels. The Address Validation APIs allow you to create and manage addresses & recipients on your integration. On creating your account, you will be given **50** free address validation credits after which you will be charged **NGN5.00** for every successful address validated. [PreviousRequest wallet fundchevron-left](https://docs.shipbubble.com/api-reference/wallet/request-wallet-fund) [NextValidate address (global)chevron-right](https://docs.shipbubble.com/api-reference/addresses/validate-address-global) Last updated 2 years ago --- # Get single address details | Shipbubble API Documentation `GET` `https://api.shipbubble.com/v1/shipping/address/:address_code` #### [hashtag](https://docs.shipbubble.com/api-reference/addresses/get-single-address-details#path-parameters) Path Parameters Name Type Description address\_code\* String address code of required address 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "name": "Abon Ayodeji", "email": "[email protected]", "street_no": "1", "street": "Teslim Balogun Stadium, Alh. Masha Road, Lagos, Nigeria", "phone": "+2347079657900", "formatted_address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria", "country": "Nigeria", "country_code": "NG", "city": "Surulere", "city_code": "Surulere", "state": "Lagos", "state_code": "LA", "postal_code": "101241", "latitude": 6.499872799999999, "longitude": 3.3609343 } } [PreviousEdit address detailschevron-left](https://docs.shipbubble.com/api-reference/addresses/edit-address-details) [NextPackage categorieschevron-right](https://docs.shipbubble.com/api-reference/package-categories) Last updated 3 years ago --- # Edit address details | Shipbubble API Documentation `PATCH` `https://api.shipbubble.com/v1/shipping/address/:address_code` #### [hashtag](https://docs.shipbubble.com/api-reference/addresses/edit-address-details#path-parameters) Path Parameters Name Type Description address\_code\* String address code of address to be edited #### [hashtag](https://docs.shipbubble.com/api-reference/addresses/edit-address-details#request-body) Request Body Name Type Description name\* String name of address holder email\* String email of address holder phone\* String phone number of address holder 200: OK Copy { "status": "success", "message": "Address updated successfully", "data": { "name": "Abon Ayodeji", "email": "[email protected]", "street_no": "15", "street": "Babatunde Jose Street", "phone": "+2347079657900", "formatted_address": "15 Babatunde Jose St, Victoria Island 106104, Lagos, Nigeria", "country": "Nigeria", "country_code": "NG", "city": "Lagos", "city_code": "Lagos", "state": "Lagos", "state_code": "LA", "postal_code": "106104", "latitude": 6.436058, "longitude": 3.433361 } } [PreviousGet validated addresseschevron-left](https://docs.shipbubble.com/api-reference/addresses/get-validated-addresses) [NextGet single address detailschevron-right](https://docs.shipbubble.com/api-reference/addresses/get-single-address-details) Last updated 4 years ago --- # Cash on delivery | Shipbubble API Documentation Shipbubble provides seamless logistics solutions for merchants, including cash-on-delivery services that enhance customer satisfaction by offering flexible payment options and ensuring timely payment collection of merchant goods. **To begin** 1. Kindly log into your shipbubble dashboard app.shipbubble.com/login. 2. Locate cash on delivery tab on the sidebar menu. 3. Setup your profile, if you haven't set it up. 4. Once your profile is set up, you can enable cash on delivery on your check via the toggle switch provided on the page. 5. You can proceed to [fetch rates](https://docs.shipbubble.com/api-reference/rates) to learn more about how you identify COD shipping rates. [PreviousEdit request token detailschevron-left](https://docs.shipbubble.com/api-reference/rates/edit-request-token-details) [NextInsurancechevron-right](https://docs.shipbubble.com/api-reference/insurance) Last updated 11 months ago --- # Package dimensions | Shipbubble API Documentation In order to help determine the dimension of your shipment package, we have provided a list of possible package item dimensions, all you need to do is a filter for the one that **matches/is** similar to your package dimension. `GET` `https://api.shipbubble.com/v1/shipping/labels/boxes` 200: OK height (CM), width (CM), length(CM), weight (KG) Copy { "status": "success", "message": "Retrieved successfully", "data": [\ {\ "box_size_id": 27459899,\ "name": "tiny box",\ "description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1635776054/package_boxes/tiny_box_ie9dob.jpg",\ "height": 2,\ "width": 5,\ "length": 5,\ "max_weight": 5\ },\ {\ "box_size_id": 44174253,\ "name": "medium box",\ "description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1635776059/package_boxes/medium_box_v1oisg.png",\ "height": 10,\ "width": 20,\ "length": 20,\ "max_weight": 20\ },\ {\ "box_size_id": 42172412,\ "name": "big box",\ "description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1635776049/package_boxes/big_box_wrcubo.png",\ "height": 2,\ "width": 40,\ "length": 40,\ "max_weight": 40\ }\ ] } [PreviousPackage categorieschevron-left](https://docs.shipbubble.com/api-reference/package-categories) [NextCourierschevron-right](https://docs.shipbubble.com/api-reference/couriers) Last updated 3 years ago --- # Get validated addresses | Shipbubble API Documentation `GET` `https://api.shipbubble.com/v1/shipping/address` 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "results": [\ {\ "address_code": 18266419,\ "address_data": {\ "name": "Lebron James",\ "email": "[email protected]",\ "street_no": "1",\ "street": "Teslim Balogun Stadium, Alh. Masha Road, Lagos, Nigeria",\ "phone": "+2348057575855",\ "formatted_address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria",\ "country": "Nigeria",\ "country_code": "NG",\ "city": "Surulere",\ "city_code": "Surulere",\ "state": "Lagos",\ "state_code": "LA",\ "postal_code": "101241",\ "latitude": 6.499872799999999,\ "longitude": 3.3609343\ }\ },\ {\ "address_code": 32235981,\ "address_data": {\ "name": "Lebron James",\ "email": "[email protected]",\ "street_no": "4",\ "street": "4 Michael Olawale-Cole Dr, Phase 1 105102, Lekki",\ "phone": "+2348057575855",\ "formatted_address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria",\ "country": "Nigeria",\ "country_code": "NG",\ "city": "Lagos",\ "city_code": "Lagos",\ "state": "Lagos",\ "state_code": "LA",\ "postal_code": "106104",\ "latitude": 6.459056599999999,\ "longitude": 3.4769383\ }\ }\ ], "pagination": { "current": 0, "perPage": 50, "next": 1, "total": 1 } } } [PreviousValidate address (global)chevron-left](https://docs.shipbubble.com/api-reference/addresses/validate-address-global) [NextEdit address detailschevron-right](https://docs.shipbubble.com/api-reference/addresses/edit-address-details) Last updated 1 year ago --- # Couriers | Shipbubble API Documentation [View courier integrationschevron-right](https://docs.shipbubble.com/api-reference/couriers/view-courier-integrations) [View courier coverage areaschevron-right](https://docs.shipbubble.com/api-reference/couriers/view-courier-coverage-areas) [PreviousPackage dimensionschevron-left](https://docs.shipbubble.com/api-reference/package-dimensions) [NextView courier integrationschevron-right](https://docs.shipbubble.com/api-reference/couriers/view-courier-integrations) Last updated 4 months ago --- # Insurance | Shipbubble API Documentation [Get Insurance Rateschevron-right](https://docs.shipbubble.com/api-reference/insurance/get-insurance-rates) [PreviousCash on deliverychevron-left](https://docs.shipbubble.com/api-reference/cash-on-delivery) [NextGet Insurance Rateschevron-right](https://docs.shipbubble.com/api-reference/insurance/get-insurance-rates) Last updated 11 months ago --- # Validate address (global) | Shipbubble API Documentation Verifies an address by checking whether we have a matching verified deliverable address. circle-exclamation For high-accuracy results, we suggest including the address, state, and country in the address string, e.g., Landmark Towers, Victoria Island, Lagos, Nigeria. **If address latitude and longitude are provided in the request, it will be used to validate the address, disregarding the address string provided.** `POST` `https://api.shipbubble.com/v1/shipping/address/validate` #### [hashtag](https://docs.shipbubble.com/api-reference/addresses/validate-address-global#request-body) Request Body Name Type Description name\* String name of address holder email\* String email address of address holder phone\* String phone number of address holder address\* String address name to be validated latitude Number address latitude (if available) longitude Number address longitude (if available) 200: OK The address code is used to uniquely identify each verified address entry 422: Unprocessable Entity Copy { "status": "success", "message": "Validation successful", "data": { "name": "Lebron James", "email": "[email protected]", "phone": "+2348057575855", "formatted_address": "15 Babatunde Jose St, Victoria Island 106104, Lagos, Nigeria", "country": "Nigeria", "country_code": "NG", "city": "Lagos", "city_code": "Lagos", "state": "Lagos", "state_code": "LA", "postal_code": "106104", "latitude": 6.436058, "longitude": 3.433361, "address_code": 98794022 } } Copy { "status": "failed", "message": "Invalid request parameters", "errors": [\ "Recipient full name is required",\ "Recipient valid email address is required",\ "Recipient phone number is required",\ "Recipient address is required"\ ] } [PreviousAddresseschevron-left](https://docs.shipbubble.com/api-reference/addresses) [NextGet validated addresseschevron-right](https://docs.shipbubble.com/api-reference/addresses/get-validated-addresses) Last updated 1 year ago --- # Package categories | Shipbubble API Documentation Items categories help us streamline your search of rates to the **exact couriers** that can handle them. `GET` `https://api.shipbubble.com/v1/shipping/labels/categories` 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": [\ {\ "category_id": 90097994,\ "category": "Accessories"\ },\ {\ "category_id": 3035980,\ "category": "Electronics"\ },\ {\ "category_id": 70830897,\ "category": "Electronic gadgets"\ },\ {\ "category_id": 66484941,\ "category": "Jewelry"\ },\ {\ "category_id": 69709726,\ "category": "Food"\ },\ {\ "category_id": 98246239,\ "category": "Fashion wears"\ }\ ] } [PreviousGet single address detailschevron-left](https://docs.shipbubble.com/api-reference/addresses/get-single-address-details) [NextPackage dimensionschevron-right](https://docs.shipbubble.com/api-reference/package-dimensions) Last updated 3 years ago --- # Rates | Shipbubble API Documentation [Request shipping rateschevron-right](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates) [Request shipping rates from selected courierschevron-right](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates-from-selected-couriers) [Edit request token detailschevron-right](https://docs.shipbubble.com/api-reference/rates/edit-request-token-details) [PreviousView courier coverage areaschevron-left](https://docs.shipbubble.com/api-reference/couriers/view-courier-coverage-areas) [NextRequest shipping rateschevron-right](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates) Last updated 1 year ago --- # Shipments | Shipbubble API Documentation [Create shipmentchevron-right](https://docs.shipbubble.com/api-reference/shipments/create-shipment) [Cancel shipmentchevron-right](https://docs.shipbubble.com/api-reference/shipments/cancel-shipment) [PreviousGet Insurance Rateschevron-left](https://docs.shipbubble.com/api-reference/insurance/get-insurance-rates) [NextCreate shipmentchevron-right](https://docs.shipbubble.com/api-reference/shipments/create-shipment) Last updated 4 years ago --- # Edit request token details | Shipbubble API Documentation You can utilize this endpoint to edit the details of your request token after you have fetched rates. `PATCH` `https://api.shipbubble.com/v1/shipping/fetch_rates/request_token` #### [hashtag](https://docs.shipbubble.com/api-reference/rates/edit-request-token-details#request-body) Request Body Name Type Description request\_token\* String Request token gotten from fetching rates sender\_name\* String Sender's name sender\_phone\* String Sender's phone reciever\_name\* String Receiver's name reciever\_phone\* String Receiver's phone 200: OK Copy { "status": "success", "message": "Request token details updated successfully" } [PreviousRequest shipping rates from selected courierschevron-left](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates-from-selected-couriers) [NextCash on deliverychevron-right](https://docs.shipbubble.com/api-reference/cash-on-delivery) Last updated 2 years ago --- # View courier coverage areas | Shipbubble API Documentation `POST` `https://api.shipbubble.com/v1/shipping/couriers/:service_code/coverage` **Path Parameters** Name Value service\_code service code of courier. **Response** 200 Copy { "status": "success", "message": "Retrieved successfully", "data": [\ {\ "country": "Nigeria",\ "country_code": "NG",\ "pickup_states": [\ "Abuja",\ "Lagos"\ ],\ "delivery_states": [\ "Abuja",\ "Lagos",\ "Ogun",\ "Oyo"\ ]\ },\ {\ "country": "Ghana",\ "country_code": "GH",\ "pickup_states": [],\ "delivery_states": [\ "Greater Accra Region"\ ]\ },\ {\ "country": "United States",\ "pickup_states": [],\ "delivery_states": [\ "California",\ "Massachusetts"\ ]\ },\ {\ "country": "United Kingdom",\ "pickup_states": [\ "England"\ ],\ "delivery_states": [\ "England"\ ]\ }\ ] } [PreviousView courier integrationschevron-left](https://docs.shipbubble.com/api-reference/couriers/view-courier-integrations) [NextRateschevron-right](https://docs.shipbubble.com/api-reference/rates) Last updated 4 months ago --- # Get Insurance Rates | Shipbubble API Documentation `GET` `https://api.shipbubble.com/v1/shipping/insurance_rates` #### [hashtag](https://docs.shipbubble.com/api-reference/insurance/get-insurance-rates#query-parameters) Query Parameters Name Type Description request\_token\* String Request token from **Fetch Rates API** 200: OK You get a list of trusted insurance partners and their rates. Copy { "status": "success", "message": "Retrieved successfully", "data": [\ {\ "code": "git-retail-x0",\ "insurer": "AXA MANSARD",\ "currency": "NGN",\ "insure_percentage": 0.002,\ "amount": 1650,\ "policy_condition": "GIT for goods worth 0-500,000"\ },\ {\ "code": "git-retail-x2",\ "insurer": "AXA MANSARD",\ "currency": "NGN",\ "insure_percentage": 0.0025,\ "amount": 1650,\ "policy_condition": "For retail goods valued between 500,001 - 1,000,000"\ }\ ] } [PreviousInsurancechevron-left](https://docs.shipbubble.com/api-reference/insurance) [NextShipmentschevron-right](https://docs.shipbubble.com/api-reference/shipments) Last updated 3 years ago --- # Returns | Shipbubble API Documentation [Get rates for a return shipment requestchevron-right](https://docs.shipbubble.com/api-reference/returns/get-rates-for-a-return-shipment-request) [PreviousCancel shipmentchevron-left](https://docs.shipbubble.com/api-reference/shipments/cancel-shipment) [NextGet rates for a return shipment requestchevron-right](https://docs.shipbubble.com/api-reference/returns/get-rates-for-a-return-shipment-request) Last updated 2 years ago --- # Tracking | Shipbubble API Documentation Each order comes with a tracking URL which you can share with your customers to track their orders. [PreviousGet rates for a return shipment requestchevron-left](https://docs.shipbubble.com/api-reference/returns/get-rates-for-a-return-shipment-request) [NextGet shipmentschevron-right](https://docs.shipbubble.com/api-reference/tracking/get-shipments) Last updated 4 years ago --- # View courier integrations | Shipbubble API Documentation `GET``https://api.shipbubble.com/v1/shipping/couriers` **Response** 200 Copy { "status": "success", "message": "Retrieved successfully", "data": [\ {\ "name": "Kwik",\ "service_code": "kwik",\ "pin_image": "https://res.cloudinary.com/delivry/image/upload/v1637023902/courier_images/avxsur.jpg",\ "origin_country": "NG",\ "international": false,\ "domestic": true,\ "express": false,\ "status": "not-operational",\ "package_categories": [\ {\ "id": "90097994",\ "category": "accessories"\ },\ {\ "id": "3035980",\ "category": "accessories"\ }\ ]\ },\ {\ "name": "Redstar",\ "service_code": "red_star_courier",\ "pin_image": "https://res.cloudinary.com/delivry/image/upload/v16370/courier_images/avxsur.jpg",\ "origin_country": "NG",\ "international": false,\ "domestic": true,\ "express": false,\ "status": "operational",\ "package_categories": [\ {\ "id": "90097994",\ "category": "accessories"\ },\ {\ "id": "3035980",\ "category": "accessories"\ }\ ]\ },\ {\ "name": "Shap Shap",\ "service_code": "shap_shap",\ "pin_image": "https://res.cloudinary.com/delivry/image/upload/v16372/courier_images/avxsur.jpg",\ "origin_country": "NG",\ "international": false,\ "domestic": true,\ "express": false,\ "status": "not-operational",\ "package_categories": [\ {\ "id": "90097994",\ "category": "accessories"\ },\ {\ "id": "3035980",\ "category": "accessories"\ }\ ]\ }\ ] } [PreviousCourierschevron-left](https://docs.shipbubble.com/api-reference/couriers) [NextView courier coverage areaschevron-right](https://docs.shipbubble.com/api-reference/couriers/view-courier-coverage-areas) Last updated 4 months ago --- # Marketplaces | Shipbubble API Documentation [PreviousWebhook simulator (sandbox)chevron-left](https://docs.shipbubble.com/api-reference/webhooks/webhook-simulator-sandbox) [NextStoreschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores) Last updated 2 days ago --- # Cancel shipment | Shipbubble API Documentation You can utilize this endpoint to cancel **only a scheduled shipment** i.e a shipment that has been processed for a future date. It will be canceled once the date for processing has not passed. `POST` `https://api.shipbubble.com/v1/shipping/labels/cancel/:order_id` #### [hashtag](https://docs.shipbubble.com/api-reference/shipments/cancel-shipment#path-parameters) Path Parameters Name Type Description order\_id\* String shipment order id 200: OK 400: Bad Request Copy { "status": "success", "message": "Shipment successfully cancelled" } Copy { "status": "failed", "message": "Shipment label already processed" } [PreviousCreate shipmentchevron-left](https://docs.shipbubble.com/api-reference/shipments/create-shipment) [NextReturnschevron-right](https://docs.shipbubble.com/api-reference/returns) Last updated 1 year ago --- # Webhooks | Shipbubble API Documentation Shipbubble sends a payload to notify your application each time there is a status change on any of your labels (shipment). The payload for each webhook event will include information about the related API response. Your provided endpoint should be set up to receive an HTTP POST request and must always return a 200 HTTP response within 15 seconds of the request; otherwise, it will be marked as failed. In the case of a failed webhook, we’ll send a webhook every 5 minutes for the first 5 tries. circle-info #### [hashtag](https://docs.shipbubble.com/api-reference/webhooks#verifying-webhooks-with-shipbubble-signature) VERIFYING WEBHOOKS WITH SHIPBUBBLE SIGNATURE To prevent your application from a replay attack, we recommend that you verify all webhook events by checking for our unique signature, **x-ship-signature**, in the request headers of our webhooks. We hash each webhook message that we send to your URL using HMAC (Hash-based Message Authentication Code) with SHA512 algorithm and SECRET\_KEY as a key of the hash ### [hashtag](https://docs.shipbubble.com/api-reference/webhooks#events) Events Shipbubble provides various webhook events to notify you about changes in your shipment process. Copy { "event": "shipment.label.created" "order_id": "SB-6BAD4363F17C", "status": "pending", "courier": { "name": "Darum NG", "email": "[email protected]", "phone": "010000038198", "tracking_code": "2232", "tracking_message": "Tracking code: 14815206", "rider_info": null }, "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Teslim Balogun Stadium, Alh. Masha Road, Lagos, Nigeria" }, "ship_to": { "name": "Lebron James", "email": "[email protected]", "phone": "+2348057575855", "address": "Teslim Balogun Stadium, Alh. Masha Road, Lagos, Nigeria" }, "to_be_processed": "2022-09-11T12:03:46.000Z", "payment": { "shipping_fee": 630, "currency": "NGN" }, "package_status": [{\ "status": "Pending",\ "datetime": "2022-09-11T12:03:46.000Z"\ }], "insurance": null, "events": [], "dropoff_station": null, "pickup_station": null, "tracking_url": "http://localhost:3000/orders/tracking/SB-6BAD4363F17C", "waybill_document": null, "date": "2022-09-11T12:03:46.000Z" } Here are some of the event types we send, the list will be updated as we release more actions in the future**.** Event Description shipment.label.created When a new shipping label is created. shipment.status.changed When the status of your shipment changes shipment.cancelled When your shipment is cancelled shipment.cod.remitted When payment for a cash-on-delivery order has been remitted to your account [PreviousGet multiple specific shipmentschevron-left](https://docs.shipbubble.com/api-reference/tracking/get-multiple-specific-shipments) [NextWebhook simulator (sandbox)chevron-right](https://docs.shipbubble.com/api-reference/webhooks/webhook-simulator-sandbox) Last updated 11 months ago --- # Webhook simulator (sandbox) | Shipbubble API Documentation `POST` `https://api.shipbubble.com/v1/shipping/labels/webhooks/:order_id` #### [hashtag](https://docs.shipbubble.com/api-reference/webhooks/webhook-simulator-sandbox#path-parameters) Path Parameters Name Type Description order\_id\* string sandbox order id #### [hashtag](https://docs.shipbubble.com/api-reference/webhooks/webhook-simulator-sandbox#request-body) Request Body Name Type Description status\_code\* string status code of order which could either be '**pending**', '**confirmed**', '**picked\_up**', '**in\_transit**', '**completed**', '**cancelled**'. 200: OK A payload will be sent to your Test Webhook URL whenever you get a successful response. Copy { "status": "success", "message": "Webhook sent successfully" } #### [hashtag](https://docs.shipbubble.com/api-reference/webhooks/webhook-simulator-sandbox#sample-webhook-payload) Sample webhook payload Copy { "order_id": "SB-244512FE8276", "status": "pending", "courier": { "name": "Test courier 2", "email": "[email protected]", "phone": "08012345678", "tracking_code": "725478", "tracking_message": "Tracking code: 725478", "rider_info": null }, "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "F9X6+W9V, Alh. Masha Rd, Surulere 101241, Lagos, Nigeria" }, "ship_to": { "name": "Lebron James", "email": "[email protected]", "phone": "+2348057575855", "address": "F9X6+W9V, Alh. Masha Rd, Surulere 101241, Lagos, Nigeria" }, "to_be_processed": "2022-07-13T21:42:32.000Z", "payment": { "shipping_fee": 2250, "currency": "NGN" }, "package_status": [\ {\ "status": "Pending",\ "datetime": "2022-07-13 22:42:32"\ }\ ], "events": [], "dropoff_station": null, "pickup_station": null, "tracking_url": "http://localhost:3000/orders/tracking/SB-244512FE8276", "waybill_document": "https://storage.googleapis.com/get-web-app-assets/test-waybills/TEST-WAYBILL-DOCUMENT.pdf", "date": "2022-07-13T21:42:32.000Z" } [PreviousWebhookschevron-left](https://docs.shipbubble.com/api-reference/webhooks) [NextMarketplaceschevron-right](https://docs.shipbubble.com/api-reference/marketplaces) Last updated 1 year ago --- # Stores | Shipbubble API Documentation [Create storechevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/create-store) [Get storeschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/get-stores) [Delete storechevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/delete-store) [PreviousMarketplaceschevron-left](https://docs.shipbubble.com/api-reference/marketplaces) [NextCreate storechevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/create-store) --- # Get stores | Shipbubble API Documentation `GET``https://api.shipbubble.com/v1/external/stores` **Response** 200 Copy { "status": "success", "message": "Stores retrieved successfully", "data": [\ {\ "store_id": "f6a1e7015297",\ "store_name": "New Store",\ "url": "https://brand-new-store.com"\ }\ ] } [PreviousCreate storechevron-left](https://docs.shipbubble.com/api-reference/marketplaces/stores/create-store) [NextDelete storechevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/delete-store) Last updated 3 days ago --- # Request shipping rates | Shipbubble API Documentation Things to note: * Shipment rates requested after 6 PM (GMT +1) will be scheduled for processing the following day. * You can only request a shipment for a maximum of 7 days from the current date of request. * The successful rate response will indicate which courier is the cheapest, fastest, and best value for money, which is a combination of speed, price, and reliability. * A rate request token expires after 7 days of generation. circle-exclamation **For your package items** Strive to be as accurate as possible when shipping! The more accurate your information is, the better the rate quote you will receive from the couriers. Additionally, if the shipping information is incorrect, most carriers will follow up with a charge to make up the difference. `POST` `https://api.shipbubble.com/v1/shipping/fetch_rates` #### [hashtag](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates#request-body) Request Body Name Type Description sender\_address\_code\* int address code of label pickup (gotten from **Addresses API**) reciever\_address\_code\* int address code of label pickup (gotten from **Addresses API**) pickup\_date\* string specified date for shipment processing(format: "**yyyy-mm-dd**") category\_id\* int package item category package\_items\* Array An array of items to be shipped, a sample package item object looks like `**{ name:'Jameson', description:'Too sweet', unit_weight:'0.002', unit_amount:'5000', quantity:'2' }**`, all object items are required, item weight unit is in **KG** service\_type string filter rates by their service types ex. **dropoff** or **pickup** delivery\_instructions string additional delivery instructions for package package\_dimension\* Object Dimension pf package to be delivered (in **CM**), if you are not sure of your dimension, you can make use of the **Package Dimensions API** { "length":12, "width":10, "height":10 } 200: OK request\_token is used to uniquely identify each rates API request #### [hashtag](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates#some-key-fields-returned-in-the-courier-rates-array) Some key fields returned in the courier rates array Field Name Description rate\_card\_amount The amount to be displayed to your customer as shipping cost. It's always the same value as the total field, only in cases where the courier account chosen is your connected courier. total The amount that will be charged from your shipping wallet for the delivery. pickup\_eta\_time Estimated time frame within which the package will be picked up. delivery\_eta\_time Estimated time frame within which the package will be delivered. is\_cod\_available Indicates if cash on delivery option is available for the rate returned. If true, **cod\_fee** will contain a service charge of the cod offering. tracking\_level Indicates how responsive the tracking systems of the courier rates are, ranging from 1 - 10. circle-info There are currently two service delivery types: **pickup** and **dropoff**. If a service type is marked as **pickup**, it means the selected courier would pick up the package at the sender's address and deliver it to the receiver's address If a service type is marked as **dropoff**, the sender must deliver the package to a courier **dropoff** station. In this case, a **dropoff station** and **pickup station** object will be included in the response. it will contain the name and address of the dropoff station. Check the example response for object definition [PreviousRateschevron-left](https://docs.shipbubble.com/api-reference/rates) [NextRequest shipping rates from selected courierschevron-right](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates-from-selected-couriers) Last updated 11 months ago Copy { "status": "success", "message": "Retrieved successfully", "data": { "request_token": "b724643e35047b44bf6499ce32dec6bf44b4de88859c03198a6f5714e026173b", "couriers": [\ {\ "courier_id": "cora",\ "courier_name": "Cora",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1659021064/courier_images/topship_ixpqdt.jpg",\ "service_code": "cora",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 10,\ "symbol": "%",\ "discounted": 0\ },\ "service_type": "pickup",\ "waybill": false,\ "on_demand": false,\ "is_cod_available": false,\ "cod_remit_days": 2,\ "tracking_level": 7,\ "ratings": 3,\ "votes": 1,\ "connected_account": false,\ "rate_card_amount": 3063,\ "rate_card_currency": "NGN",\ "pickup_eta": "Within 3 hours",\ "pickup_eta_time": "2025-04-10 15:44:06",\ "dropoff_station": null,\ "pickup_station": null,\ "delivery_eta": "Within 23 hrs",\ "delivery_eta_time": "2025-04-11 12:44:06",\ "info": null,\ "currency": "NGN",\ "vat": 188,\ "total": 3063,\ "tracking": {\ "bars": 4,\ "label": "Good"\ }\ },\ {\ "courier_id": 1,\ "courier_name": "Routely (Express Standard)",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1659021064/courier_images/topship_ixpqdt.jpg",\ "service_code": "routely",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 10,\ "symbol": "%",\ "discounted": 270\ },\ "service_type": "dropoff",\ "waybill": false,\ "on_demand": false,\ "is_cod_available": false,\ "tracking_level": 7,\ "ratings": 3,\ "votes": 1,\ "connected_account": false,\ "rate_card_amount": 12451.04,\ "rate_card_currency": "NGN",\ "pickup_eta": "Within 1 day(s)",\ "pickup_eta_time": "2025-04-11 12:44:06",\ "dropoff_station": {\ "name": "Find your nearest Routely dropoff location here",\ "address": "https://www.routely.co/",\ "phone": "+2349080777728"\ },\ "pickup_station": {\ "name": "Find your nearest Routely pickup location here",\ "address": "https://www.routely.co/",\ "phone": "+2349080777728"\ },\ "delivery_eta": "Within 1 - 4 working days",\ "delivery_eta_time": "2025-04-15 12:44:06",\ "info": null,\ "currency": "NGN",\ "vat": 834,\ "total": 12451.04,\ "tracking": {\ "bars": 4,\ "label": "Good"\ }\ }\ ], "fastest_courier": { "courier_id": 2, "courier_name": "Routely (Express Premium)", "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1659021064/courier_images/topship_ixpqdt.jpg", "service_code": "routely", "insurance": { "code": "not available", "fee": 0 }, "discount": { "percentage": 10, "symbol": "%", "discounted": 270 }, "service_type": "pickup", "waybill": false, "on_demand": false, "is_cod_available": false, "tracking_level": 7, "ratings": 3, "votes": 1, "connected_account": false, "rate_card_amount": 3308, "rate_card_currency": "NGN", "pickup_eta": "Within 2 hour(s)", "pickup_eta_time": "2025-04-10 16:44:06", "dropoff_station": null, "pickup_station": null, "delivery_eta": "Within 9 hrs", "delivery_eta_time": "2025-04-10 22:44:06", "info": null, "currency": "NGN", "vat": 203, "total": 3308, "tracking": { "bars": 4, "label": "Good" } }, "cheapest_courier": { "courier_id": "dellyman", "courier_name": "Dellyman", "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1697995461/courier_images/dellyman_logo_ckd6z8.png", "service_code": "dellyman", "insurance": { "code": "not available", "fee": 0 }, "discount": { "percentage": 0, "symbol": "%", "discounted": 0 }, "service_type": "pickup", "waybill": false, "on_demand": false, "is_cod_available": false, "tracking_level": 6, "ratings": 3, "votes": 1, "connected_account": true, "rate_card_amount": 1830, "rate_card_currency": "NGN", "pickup_eta": "Within 24 hours", "pickup_eta_time": "2025-04-11 12:44:06", "dropoff_station": null, "pickup_station": null, "delivery_eta": "Within 1 - 2 working days", "delivery_eta_time": "2025-04-13 12:44:06", "info": null, "currency": "NGN", "vat": 0, "total": 400, "tracking": { "bars": 3, "label": "Average" } }, "checkout_data": { "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Teslim Balogun Stadium, Alh. Masha Road, Lagos, Nigeria" }, "ship_to": { "name": "Burger King", "phone": "+2347072377527", "email": "[email protected]", "address": "brt bus oshodi terminal, oshodi, Lagos, Nigeria" }, "currency": "NGN", "package_amount": 801500, "package_weight": 8.5, "pickup_date": "April 10th 2025", "is_invoice_required": false } } } --- # Get rates for a return shipment request | Shipbubble API Documentation circle-exclamation Return requests can only be processed within 7 days after a shipment has been completed. `POST` `https://api.shipbubble.com/v1/shipping/returns/:order_id/fetch_rates` #### [hashtag](https://docs.shipbubble.com/api-reference/returns/get-rates-for-a-return-shipment-request#path-parameters) Path Parameters Name Type Description order\_id\* String order id of shipment to be returned #### [hashtag](https://docs.shipbubble.com/api-reference/returns/get-rates-for-a-return-shipment-request#request-body) Request Body Name Type Description pickup\_date\* String specified date for shipment processing(format: "**yyyy-mm-dd**") delivery\_instructions String additional delivery instructions for package sender\_phone String New sender phone number in case of a change reciever\_phone String New receiver phone number in case of a change 200: OK request\_token is used to uniquely identify each rates API request 400: Bad Request Copy { "status": "success", "message": "Retrieved successfully", "data": { "request_token": "b6130ff493a30a6065f677a45b0ee1dd92edd07e80e473837248e99edaa029cd", "couriers": [\ {\ "courier_id": "sendstack",\ "courier_name": "Sendstack",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1653144587/courier_images/sendstack_ijfbxw.png",\ "service_code": "sendstack",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 10,\ "symbol": "%",\ "discounted": 95\ },\ "service_type": "pickup",\ "waybill": false,\ "tracking_level": 7,\ "pickup_eta": "Next day pickup",\ "pickup_eta_time": "2022-07-26 11:29:53",\ "dropoff_station": null,\ "pickup_station": null,\ "delivery_eta": "Next day delivery",\ "delivery_eta_time": "2022-07-27 11:29:53",\ "info": [\ "Shipment will be processed by Sendstack for next day pickup July 26th 2022 ",\ "Shipment estimated delivery time is 24hrs (July 27th 2022) from day of pickup"\ ],\ "currency": "NGN",\ "vat": 71,\ "ratings": 4.4,\ "total": 1121\ },\ {\ "courier_id": "N",\ "courier_name": "DHL Nigeria",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1639728337/courier_images/dhl.png",\ "service_code": "dhl-nigeria",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 50,\ "symbol": "%",\ "discounted": 5835\ },\ "service_type": "pickup",\ "waybill": true,\ "tracking_level": 7,\ "pickup_eta": "Before 17:00 (GMT +1) July 25th 2022",\ "pickup_eta_time": "2022-07-25 17:01:00",\ "dropoff_station": null,\ "pickup_station": null,\ "delivery_eta": "Estimated 1 day (s)",\ "delivery_eta_time": "2022-07-26 10:00:00",\ "info": [\ "Shipment placed after 4 PM (GMT +1) will be processed to the next day",\ "Download waybill document from shipments page after shipment has been processed",\ "Attach waybill document to your packaged items",\ "Items to be shipped must be wrapped or packaged before pickup"\ ],\ "currency": "NGN",\ "vat": 437.63,\ "ratings": 4.6,\ "total": 6272.63\ }\ ], "fastest_courier": { "courier_id": "N", "courier_name": "DHL Nigeria", "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1639728337/courier_images/dhl.png", "service_code": "dhl-nigeria", "insurance": { "code": "not available", "fee": 0 }, "discount": { "percentage": 50, "symbol": "%", "discounted": 5835 }, "service_type": "pickup", "waybill": true, "tracking_level": 7, "pickup_eta": "Before 17:00 (GMT +1) July 25th 2022", "pickup_eta_time": "2022-07-25 17:01:00", "dropoff_station": null, "pickup_station": null, "delivery_eta": "Estimated 1 day (s)", "delivery_eta_time": "2022-07-26 10:00:00", "info": [\ "Shipment placed after 4 PM (GMT +1) will be processed to the next day",\ "Download waybill document from shipments page after shipment has been processed",\ "Attach waybill document to your packaged items",\ "Items to be shipped must be wrapped or packaged before pickup"\ ], "currency": "NGN", "vat": 437.63, "ratings": 4.6, "total": 6272.63 }, "cheapest_courier": { "courier_id": "N", "courier_name": "DHL Nigeria", "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1639728337/courier_images/dhl.png", "service_code": "dhl-nigeria", "insurance": { "code": "not available", "fee": 0 }, "discount": { "percentage": 50, "symbol": "%", "discounted": 5835 }, "service_type": "pickup", "waybill": true, "tracking_level": 7, "pickup_eta": "Before 17:00 (GMT +1) July 25th 2022", "pickup_eta_time": "2022-07-25 17:01:00", "dropoff_station": null, "pickup_station": null, "delivery_eta": "Estimated 1 day (s)", "delivery_eta_time": "2022-07-26 10:00:00", "info": [\ "Shipment placed after 4 PM (GMT +1) will be processed to the next day",\ "Download waybill document from shipments page after shipment has been processed",\ "Attach waybill document to your packaged items",\ "Items to be shipped must be wrapped or packaged before pickup"\ ], "currency": "NGN", "vat": 437.63, "ratings": 4.6, "total": 6272.63 }, "checkout_data": { "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria" }, "ship_to": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Kafayat Abdulrasaq Street, Lekki Phase I 106104, Logos, Nigeria" }, "package_amount": "₦1,510,000", "package_weight": "2.00KG", "pickup_time": "December 19th 2022, 10:57:44 PM" } } } [PreviousReturnschevron-left](https://docs.shipbubble.com/api-reference/returns) [NextTrackingchevron-right](https://docs.shipbubble.com/api-reference/tracking) Last updated 2 days ago Copy { "status": "failed", "message": "Return for shipment must be processed within 7 days of completion" } --- # Create store | Shipbubble API Documentation `POST` `https://api.shipbubble.com/v1/external/stores` **Request Body** Name Type Description `store_name` string Name of store e.g Allure Clothing `url` string Store public URL (https only) **Response** 200 Copy { "status": "success", "message": "New Store connected successfully", "data": { "store_id": "c9b46190c4764dfb989b", "store_name": "New Store", "platform_id": "https://brand-new-store.cu" } } [PreviousStoreschevron-left](https://docs.shipbubble.com/api-reference/marketplaces/stores) [NextGet storeschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/stores/get-stores) Last updated 3 days ago --- # Create shipment | Shipbubble API Documentation `POST` `https://api.shipbubble.com/v1/shipping/labels` #### [hashtag](https://docs.shipbubble.com/api-reference/shipments/create-shipment#request-body) Request Body Name Type Description request\_token\* String request token gotten from **Rates API**, each request token is tied to a particular rate request service\_code\* String service code of selected courier rate courier\_id\* String courier\_id of selected courier rate insurance\_code String To be included if insurance wants to be purchased with shipment. Insurance code can be gotten from **Get Insurance Rates API.** is\_cod\_label Boolean To be included if request is meant to be a cash on delivery shipment. 200: OK Each successfully shipment comes with details of assigned contact details of selected and also a tracking link to track shipment process Copy { "status": "success", "message": "Order successfully routed to Darum NG", "data": { "order_id": "SB-2CF48224272", "courier": { "name": "Darum NG", "email": "[email protected]", "phone": "010000038198" }, "status": "pending", "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Obafemi Awolowo Way, Alausa 101233, Ojodu, Nigeria", "latitude": 6.6143564, "longitude": 3.3581327 }, "ship_to": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria", "latitude": 6.459056599999999, "longitude": 3.4769383 }, "payment": { "shipping_fee": 2785, "type": "wallet", "status": "completed", "currency": "NGN" }, "items": [\ {\ "name": "Jameson",\ "description": "The drink dey shak die",\ "weight": 0.004,\ "amount": "5000",\ "quantity": "2",\ "total": 10000\ },\ {\ "name": "Hennesy",\ "description": "Bad boys flow",\ "weight": 2,\ "amount": "150000",\ "quantity": "10",\ "total": 1500000\ }\ ], "tracking_url": "https://localhost:5000/orders/tracking/GET-2CF48272", "date": "2021-12-19 01:23:19" } } [PreviousShipmentschevron-left](https://docs.shipbubble.com/api-reference/shipments) [NextCancel shipmentchevron-right](https://docs.shipbubble.com/api-reference/shipments/cancel-shipment) Last updated 11 months ago --- # Delete store | Shipbubble API Documentation circle-exclamation Once a store is deleted, every associated data tied to the store will be deleted as well `DELETE` `https://api.shipbubble.com/v1/external/stores/:store_id` **Params** Name Type Description `store_id` string Store ID of the store to be deleted **Response** 200 Copy { "status": "success", "message": "Store deleted successfully" } [PreviousGet storeschevron-left](https://docs.shipbubble.com/api-reference/marketplaces/stores/get-stores) [NextProductschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products) Last updated 3 days ago --- # Request shipping rates from selected couriers | Shipbubble API Documentation You can get shipping rates from your preferred couriers by using this endpoint `POST` `https://api.shipbubble.com/v1/shipping/fetch_rates/:service_codes` The request body for this endpoint is the same as that of the Rates API #### [hashtag](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates-from-selected-couriers#path-parameters) Path Parameters Name Type Description service\_codes\* String Service codes of couriers to be queried, use comma **(,)** to separate each courier service code. e.g kwik,dhl 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "request_token": "1feff032e536b3a87b4f428f958a6570fe434add4d00bd63338e6d49abf7d200", "couriers": [\ {\ "courier_id": "darum",\ "courier_name": "Darum NG",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1639332277/courier_images/darum_orxysd.png",\ "service_code": "darum",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 0,\ "symbol": "%",\ "discounted": 0\ },\ "service_type": "pickup",\ "waybill": false,\ "delivery_eta": "Same day delivery",\ "currency": "₦",\ "vat": 191,\ "total": 2785\ },\ {\ "courier_id": "gigl",\ "courier_name": "GIG logistics",\ "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1638640741/courier_images/gig_logo_wsxvwb.png",\ "service_code": "gigl",\ "insurance": {\ "code": "not available",\ "fee": 0\ },\ "discount": {\ "percentage": 5,\ "symbol": "%",\ "discounted": 138\ },\ "service_type": "pickup",\ "waybill": true,\ "delivery_eta": "Same day delivery",\ "currency": "₦",\ "vat": 189,\ "total": 2750\ }\ ], "cheapest_courier": { "courier_id": "gigl", "courier_name": "GIG logistics", "courier_image": "https://res.cloudinary.com/delivry/image/upload/v1638640741/courier_images/gig_logo_wsxvwb.png", "service_code": "gigl", "insurance": { "code": "not available", "fee": 0 }, "discount": { "percentage": 5, "symbol": "%", "discounted": 138 }, "service_type": "pickup", "waybill": true, "delivery_eta": "Same day delivery", "currency": "₦", "vat": 189, "total": 2750 }, "checkout_data": { "ship_from": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Obafemi Awolowo Way, Alausa 101233, Ojodu, Nigeria" }, "ship_to": { "name": "Lebron James", "phone": "+2348057575855", "email": "[email protected]", "address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria" }, "package_amount": "₦1,510,000", "package_weight": "2.00KG", "pickup_time": "December 19th 2022, 8:00:43 PM" } } } [PreviousRequest shipping rateschevron-left](https://docs.shipbubble.com/api-reference/rates/request-shipping-rates) [NextEdit request token detailschevron-right](https://docs.shipbubble.com/api-reference/rates/edit-request-token-details) Last updated 2 years ago --- # Products | Shipbubble API Documentation [Get store productschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/get-store-products) [Create single productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product) [Create variable productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product) [Update store productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product) [Delete store productschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/delete-store-products) [PreviousDelete storechevron-left](https://docs.shipbubble.com/api-reference/marketplaces/stores/delete-store) [NextGet store productschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/get-store-products) --- # Get multiple specific shipments | Shipbubble API Documentation You can use this endpoint to get details about multiple specific shipments. The **maximum** number of shipments per request is **50** `GET` `https://api.shipbubble.com/v1/shipping/labels/list/:order_ids` #### [hashtag](https://docs.shipbubble.com/api-reference/tracking/get-multiple-specific-shipments#path-parameters) Path Parameters Name Type Description order\_ids\* string use comma **(,)** to separate each with your order IDs. Ex: SB-6B211535C528,SB-FA9ABC09A876 200: OK Copy { "status": "success", "message": "Retrieved successfully", "data": { "results": [\ {\ "order_id": "SB-6B211535C528",\ "status": "picked_up",\ "courier": {\ "name": "Redstar (pickup)",\ "email": "[email protected]",\ "phone": "08023374847",\ "tracking_code": "SA01203663",\ "tracking_message": "WaybillNumber: SA01203663",\ "rider_info": null\ },\ "ship_from": {\ "name": "Lebron James",\ "phone": "+2348057575855",\ "email": "[email protected]",\ "address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria",\ "latitude": 6.459056599999999,\ "longitude": 3.4769383\ },\ "ship_to": {\ "name": "Lebron James",\ "email": "[email protected]",\ "phone": "+2348057575855",\ "address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria",\ "latitude": 6.499872799999999,\ "longitude": 3.3609343\ },\ "package_status": [\ {\ "status": "Pending",\ "datetime": "2022-02-14 22:58:02"\ }\ ],\ "events": [],\ "waybill_document": null,\ "dropoff_station": null,\ "pickup_station": null,\ "tracking_url": "https://localhost:5000/orders/tracking/GET-BB7EDE9F",\ "date": "2022-01-28T01:17:46.000Z"\ }\ ] } } [PreviousGet shipmentschevron-left](https://docs.shipbubble.com/api-reference/tracking/get-shipments) [NextWebhookschevron-right](https://docs.shipbubble.com/api-reference/webhooks) Last updated 3 days ago --- # Get shipments | Shipbubble API Documentation circle-info Some couriers require that a waybill document be attached to the package before pickup or collection. In that case, we would include a **waybill\_document** property which contains a downloadable URL for the requested document. `GET` `https://api.shipbubble.com/v1/shipping/labels` 200: OK check below for the types of order status codes Copy { "status": "success", "message": "Retrieved successfully", "data": { "results": [\ {\ "order_id": "SB-BB7EDE9F",\ "status": "picked_up",\ "courier": {\ "name": "Kwik",\ "email": "[email protected]",\ "phone": "08029274847",\ "tracking_code": "12106AF828-2898",\ "tracking_message": null,\ "rider_info": null\ },\ "ship_from": {\ "name": "Lebron James",\ "phone": "+2348057575855",\ "email": "[email protected]",\ "address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria",\ "latitude": 6.459056599999999,\ "longitude": 3.4769383\ },\ "package_status": [\ {\ "status": "Pending",\ "datetime": "2022-02-14 22:58:02"\ }\ ],\ "ship_to": {\ "name": "Lebron James",\ "email": "[email protected]",\ "phone": "+2348057575855",\ "address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria",\ "latitude": 6.499872799999999,\ "longitude": 3.3609343\ },\ "dropoff_station": null,\ "pickup_station": null,\ "waybill_document": null,\ "events": [],\ "tracking_url": "https://localhost:5000/orders/tracking/GET-BB7EDE9F",\ "date": "2022-01-28T01:17:46.000Z"\ },\ {\ "order_id": "SB-SSS7EDE9F",\ "status": "picked_up",\ "courier": {\ "name": "DHL",\ "email": "[email protected]",\ "phone": "08029274847",\ "tracking_code": "12106AF828-2898",\ "tracking_message": null,\ "rider_info": null\ },\ "ship_from": {\ "name": "Lebron James",\ "phone": "+2348057575855",\ "email": "[email protected]",\ "address": "Phase 1, 4 Michael Olawale-Cole Dr, Lekki Phase I 106104, Lagos, Nigeria",\ "latitude": 6.459056599999999,\ "longitude": 3.4769383\ },\ "ship_to": {\ "name": "Lebron James",\ "email": "[email protected]",\ "phone": "+2348057575855",\ "address": "Alh. Masha Rd, Surulere 101241, Lagos, Nigeria",\ "latitude": 6.499872799999999,\ "longitude": 3.3609343\ },\ "package_status": [\ {\ "status": "Pending",\ "datetime": "2022-02-14 22:58:02"\ }\ ],\ "dropoff_station": null,\ "pickup_station": null,\ "events": [\ {\ "location": "IBADAN GATEWAY",\ "message": "Shipment Departs Collation Center",\ "captured": "2022-06-10T11:16:20.337"\ }\ ],\ "waybill_document":"https://storage.googleapis.com/get-web-app-assets/1274529970.pdf",\ "tracking_url": "https://localhost:5000/orders/tracking/GET-BB7EDE9F",\ "date": "2022-01-28T01:17:46.000Z"\ }\ ], "pagination": { "current": 1, "perPage": 1, "previous": 0, "next": 7, "total": 8 } } } ### [hashtag](https://docs.shipbubble.com/api-reference/tracking/get-shipments#shipment-status-definitions) **Shipment status definitions** circle-exclamation **pending**: the shipment request has been processed to the selected courier service circle-info **confirmed**: the shipment request has been acknowledged and accepted by the courier. circle-info **picked\_up**: the shipment package has been picked up from the sender's location by the courier. circle-info **in\_transit**: the shipment package is on its way to the receiver's location. circle-check **completed**: the shipment package has been delivered to the receiver's location by the courier. triangle-exclamation **cancelled**: the shipment request has been cancelled [PreviousTrackingchevron-left](https://docs.shipbubble.com/api-reference/tracking) [NextGet multiple specific shipmentschevron-right](https://docs.shipbubble.com/api-reference/tracking/get-multiple-specific-shipments) Last updated 4 days ago --- # Update store product | Shipbubble API Documentation Copy PATCH /v1/external/marketplace/{store_id}/products/{product_id} circle-info Note: This is a partial update — only the fields provided in the request body will be modified. Fields not included will remain unchanged. [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#path-parameters) Path Parameters ------------------------------------------------------------------------------------------------------------------------------------ Parameter Type Required Description `store_id` string Yes Your unique marketplace store ID `product_id` string Yes The ID of the product to update [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#request-body) Request Body ------------------------------------------------------------------------------------------------------------------------------ Parameter Type Required Description `name` string No Updated product name `image_1` string No Updated URL of the primary product image `price` number No Updated product price in the store's configured currency `is_active` boolean No Set to `false` to deactivate or `true` to activate [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#response) Response ---------------------------------------------------------------------------------------------------------------------- Copy { "status": "success", "message": "Product updated successfully", "data": { "product_id": "a4714f92f8db", "name": "Classic Tees Updated", "description": "A comfortable everyday t-shirt", "type": "single", "sku": "GEN-CLAS-DF5D4", "currency": "NGN", "images": [\ "https://updatedtesse.com/tees.jpg"\ ], "category": "Tees", "total_stock": 0, "is_active": true, "captured": "2026-03-12T13:37:24.000Z", "price": 12000, "dimensions": { "length_cm": 30, "width_cm": 20, "height_cm": 5 } } } [PreviousCreate variable productchevron-left](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product) [NextDelete store productschevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/delete-store-products) Last updated 3 days ago * [Path Parameters](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#path-parameters) * [Request Body](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#request-body) * [Response](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product#response) --- # Create variable product | Shipbubble API Documentation Copy POST /v1/external/marketplace/{store_id}/products/variable circle-info Each variation must have at least one attribute. Attributes are used to distinguish variations from one another — ensure `name` and `value` Combinations are unique across variations within the same product. [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#path-parameters) Path Parameters --------------------------------------------------------------------------------------------------------------------------------------- Parameter Type Required Description `store_id` string Yes Your unique marketplace store ID [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#request-body) Request Body --------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#top-level-fields) Top-level Fields Parameter Type Required Description `name` string Yes Product name `description` string Yes Short product description `currency` string Yes Currency code e.g. `NGN`, `USD`, `GBP` `image_1` string Yes URL of the primary product image `variations` array Yes List of product variations (at least one required) `category_name` string Yes Product category e.g. `Shoes`, `Dresses`, `Tees` `store_product_id` string Yes Your unique identifer for the product on your ### [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#variation-object) Variation Object Each object in the `variations` array supports the following fields: Parameter Type Required Description `price` number Yes Price of this variation in the specified currency `kg_weight` number Yes Weight of this variation in kilograms `dimensions` object Yes Physical dimensions of this variation `dimensions.length_cm` number Yes Length in centimetres `dimensions.width_cm` number Yes Width in centimetres `dimensions.height_cm` number Yes Height in centimetres `image` string Yes URL of the image for this specific variation `attributes` array Yes List of attribute objects defining this variation `store_variation_id` string Yes Your unique identifer for the product variant on your ### [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#attribute-object) Attribute Object Each object in the `attributes` array supports the following fields: Parameter Type Required Description `name` string Yes Attribute name e.g. `Size`, `Color`, `Material` `value` string Yes Attribute value e.g. `42`, `Red`, `Cotton` [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#response) Response ------------------------------------------------------------------------------------------------------------------------- [PreviousCreate single productchevron-left](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product) [NextUpdate store productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product) Last updated 2 days ago * [Path Parameters](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#path-parameters) * [Request Body](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#request-body) * [Top-level Fields](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#top-level-fields) * [Variation Object](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#variation-object) * [Attribute Object](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#attribute-object) * [Response](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product#response) Copy { "status": "success", "message": "Classic Sneakers created successfully", "data": { "product_id": "88049e93357d", "name": "Classic Sneakers", "description": "Available in multiple sizes", "type": "variable", "sku": "GEN-CLAS-DFCFB", "currency": "NGN", "images": [\ "https://example.com/sneakers.jpg"\ ], "category": "Shoes", "total_stock": 0, "is_active": true, "captured": "2026-03-12T13:32:05.000Z", "variants": [\ {\ "variation_id": "1acca52c37fd",\ "sku": "GEN-CLAS-DFCFB-AEC3",\ "price": 15000,\ "dimensions": {\ "length_cm": 35,\ "width_cm": 20,\ "height_cm": 15\ },\ "total_stock": 0,\ "available_stock": 0,\ "is_active": true,\ "image": "https://example.com/sneakers-red.jpg",\ "attributes": [\ {\ "variation_id": "1acca52c37fd",\ "name": "Size",\ "value": "42"\ },\ {\ "variation_id": "1acca52c37fd",\ "name": "Color",\ "value": "Red"\ }\ ]\ },\ {\ "variation_id": "ef914eedf36b",\ "sku": "GEN-CLAS-DFCFB-F9EC",\ "price": 15000,\ "dimensions": {\ "length_cm": 35,\ "width_cm": 20,\ "height_cm": 15\ },\ "total_stock": 0,\ "available_stock": 0,\ "is_active": true,\ "image": "https://example.com/sneakers-blue.jpg",\ "attributes": [\ {\ "variation_id": "ef914eedf36b",\ "name": "Size",\ "value": "43"\ },\ {\ "variation_id": "ef914eedf36b",\ "name": "Color",\ "value": "Blue"\ }\ ]\ }\ ] } } --- # Get store products | Shipbubble API Documentation `GET` `https://api.shipbubble.com/v1/external/marketplace/:store_id/products` **Params** Name Type Description `store_id` string Store ID of the store **Response** 200 Copy { "status": "success", "message": "Products retrieved successfully", "data": { "results": [\ {\ "product_id": "a4c37e530875",\ "name": "Classic White Tee",\ "description": "A comfortable everyday t-shirt",\ "type": "single",\ "sku": "GEN-CLAS-B4268S32",\ "currency": "NGN",\ "images": [\ "https://example.com/tee.jpg"\ ],\ "category": "Tees",\ "total_stock": 0,\ "is_active": true,\ "captured": "2026-03-12T12:09:24.000Z",\ "price": 7500,\ "dimensions": {\ "length_cm": 30,\ "width_cm": 20,\ "height_cm": 5\ }\ },\ {\ "product_id": "108509f1e2ea",\ "name": "Classic White Tee",\ "description": "A comfortable everyday t-shirt",\ "type": "single",\ "sku": "GEN-CLAS-B4268",\ "currency": "NGN",\ "images": [\ "https://example.com/tee.jpg"\ ],\ "category": "Tees",\ "total_stock": 0,\ "is_active": true,\ "captured": "2026-03-12T11:59:33.000Z",\ "price": 7500,\ "dimensions": {\ "length_cm": 30,\ "width_cm": 20,\ "height_cm": 5\ }\ },\ {\ "product_id": "864da2052939",\ "name": "Classic White Tee",\ "description": "A comfortable everyday t-shirt",\ "type": "single",\ "sku": "GEN-CLAS-F0B52",\ "currency": "NGN",\ "images": [\ "https://example.com/tee.jpg"\ ],\ "category": "Tees",\ "total_stock": 0,\ "is_active": true,\ "captured": "2026-03-12T11:59:27.000Z",\ "price": 7500,\ "dimensions": {\ "length_cm": 30,\ "width_cm": 20,\ "height_cm": 5\ }\ },\ {\ "product_id": "9fb53bbbf520",\ "name": "Classic White Tee",\ "description": "A comfortable everyday t-shirt",\ "type": "single",\ "sku": "GEN-CLAS-C3021",\ "currency": "NGN",\ "images": [\ "https://example.com/tee.jpg"\ ],\ "category": "Tees",\ "total_stock": 0,\ "is_active": true,\ "captured": "2026-03-12T11:59:18.000Z",\ "price": 7500,\ "dimensions": {\ "length_cm": 30,\ "width_cm": 20,\ "height_cm": 5\ }\ }\ ], "pagination": { "current": 0, "perPage": 50, "next": 1, "total": 1, "total_results": 4 } } } [PreviousProductschevron-left](https://docs.shipbubble.com/api-reference/marketplaces/products) [NextCreate single productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product) Last updated 3 days ago --- # Delete store products | Shipbubble API Documentation `DELETE` `https://api.shipbubble.com/v1/external/marketplace/:store_id/products` **Params** Name Type Description `store_id` string Store ID of the store `product_ids` string Product ids of products to be deleted, use comma **(,)** to separate each with your product IDs e.g a4c37e530875,6782tr72gdada **Response** 200 Copy { "status": "success", "message": "Products deleted successfully" } [PreviousUpdate store productchevron-left](https://docs.shipbubble.com/api-reference/marketplaces/products/update-store-product) Last updated 3 days ago --- # Create single product | Shipbubble API Documentation Copy POST /v1/external/marketplace/{store_id}/products/single circle-info Note: Supported currencies are based on your store's configured zones. Contact support if your currency is not available. [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#path-parameters) Path Parameters ------------------------------------------------------------------------------------------------------------------------------------- Parameter Type Required Description `store_id` string Yes Your unique marketplace store ID [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#request-body) Request Body ------------------------------------------------------------------------------------------------------------------------------- Parameter Type Required Description `name` string Yes Product name `description` string Yes Short product description `currency` string Yes Currency code e.g. `NGN`, `USD`, `GBP` `image_1` string Yes URL of the primary product image `price` number Yes Product price in the specified currency `store_product_id` string Yes Your unique identifer for the product on your store `kg_weight` number Yes Product weight in kilograms `dimensions` object Yes Product dimensions `dimensions.length_cm` number Yes Length in centimetres `dimensions.width_cm` number Yes Width in centimetres `dimensions.height_cm` number Yes Height in centimetres `category_name` string Yes Product category e.g. `Tees`, `Dresses`, `Shoes` [hashtag](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#response) Response ----------------------------------------------------------------------------------------------------------------------- [PreviousGet store productschevron-left](https://docs.shipbubble.com/api-reference/marketplaces/products/get-store-products) [NextCreate variable productchevron-right](https://docs.shipbubble.com/api-reference/marketplaces/products/create-variable-product) Last updated 2 days ago * [Path Parameters](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#path-parameters) * [Request Body](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#request-body) * [Response](https://docs.shipbubble.com/api-reference/marketplaces/products/create-single-product#response) Copy { "status": "success", "message": "Classic White Tee created successfully", "data": { "product_id": "108509f1e2ea", "name": "Classic White Tee", "description": "A comfortable everyday t-shirt", "type": "single", "sku": "GEN-CLAS-B4268", "currency": "NGN", "images": [\ "https://example.com/tee.jpg"\ ], "category": "Tees", "total_stock": 0, "is_active": true, "captured": "2026-03-12T11:59:33.000Z", "price": 7500, "dimensions": { "length_cm": 30, "width_cm": 20, "height_cm": 5 } } } ---