Public APIs for Price List (PL)

B2B/Wholesale Pricing List Public API for Shopify Stores

These APIs are REST APIs. You can use them to manage customer pricing rules, calculate variants' prices based on rules, search for customers, get products, etc. Detailed instructions on how to do it are shown below:

How to get the access key

After you install B2B/Wholesale Solution Shopify app. Go to the Public API page, and click on the Copy button.

Rule endpoints

There are fields of rule, you need to understand: - priority: decides whether a rule is prioritized over another or not. - status:

0: inactive
1: active

- apply_to:

0: All customers
1: Logged-in customers
2: Not-logged-in customers
3: Specific customers
4: Customer tags

-apply_at:

0: Product level
1: Variant level

-exc_product_type:

0: None
4: Exclude specific variants

- exclude_from:

0: none 
1: customer tags
2: specific customers

- discount_type:

0: Apply a price to selected products
1: Decrease a fixed amount of the original prices of selected products
2: Decrease the original prices of selected products by a percentage (%)

Get rules by domain

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/get-by-domain

Headers

NameValue

Content-Type

application/json

Body

{ 
  "domain": "abc.myshopify.com", 
  "accessKey": "xxx" 
}

Response

{
    "success": true,
    "rules": [
        {
            "id": 186827,
            "shop_id": 16109,
            "name": "Pricelist_1",
            "priority": 0,
            "status": 1,
            "apply_to": 0,
            "apply_at": 0,
            "customer_ids": "",
            "customer_tags": "",
            "exc_customer_tags": "",
            "exclude_from": 0,
            "start_date": "2024-06-25T08:23:09.000Z",
            "end_date": "2024-06-25T08:23:09.000Z",
            "exc_customers": "",
            "start_time": "15:23:00",
            "end_time": "15:23:00",
            "enable_end_date": 0,
            "file_theme_index": null,
            "exc_product_collections": "",
            "exc_product_tags": "",
            "exc_product_type": 4,
            "exc_product_variants": "40201792192587,40201792225355",
            "exc_specific_products": "",
            "createdAt": "2024-06-25T08:23:11.000Z",
            "updatedAt": "2024-06-25T08:23:11.000Z",
            "deletedAt": null
        },
        {
            "id": 186828,
            "shop_id": 16109,
            "name": "Pricelist_2",
            "priority": 0,
            "status": 1,
            "apply_to": 4,
            "apply_at": 1,
            "customer_ids": "",
            "customer_tags": "b2b",
            "exc_customer_tags": "",
            "exclude_from": 0,
            "start_date": "2024-06-25T08:53:01.000Z",
            "end_date": "2024-06-25T08:53:01.000Z",
            "exc_customers": "",
            "start_time": "15:53:00",
            "end_time": "15:53:00",
            "enable_end_date": 0,
            "file_theme_index": null,
            "exc_product_collections": "",
            "exc_product_tags": "",
            "exc_product_type": 0,
            "exc_product_variants": "",
            "exc_specific_products": "",
            "createdAt": "2024-06-25T08:53:02.000Z",
            "updatedAt": "2024-06-25T08:53:02.000Z",
            "deletedAt": null
        }
    ]
}

Get rules by id

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/get-by-id

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com", 
  "accessKey": "xxx",
  "id": 7
}

Response

{
    "success": true,
    "rule": {
        "id": 186827,
        "name": "Pricelist_1",
        "priority": 0,
        "status": 1,
        "apply_to": 0,
        "apply_at": 0,
        "exclude_from": 0,
        "exc_product_type": 4,
        "start_date": "2024-06-25T08:23:09.000Z",
        "end_date": "2024-06-25T08:23:09.000Z",
        "customer_ids": [],
        "customer_tags": [],
        "exc_customer_tags": [],
        "exc_customers": [],
        "exc_product_collections": [],
        "exc_product_tags": [],
        "exc_product_variants": [
            "40201792192587",
            "40201792225355"
        ],
        "exc_specific_products": [],
        "start_time": "15:23:00",
        "end_time": "15:23:00",
        "enable_end_date": 0,
        "selected_products": [
            {
                "product_id": "6909579886667",
                "discount_type": 0,
                "discount_value": 111
            },
            {
                "product_id": "6909579558987",
                "discount_type": 0,
                "discount_value": 300
            },
            {
                "product_id": "6909579919435",
                "discount_type": 0,
                "discount_value": 505
            },
            {
                "product_id": "6909579853899",
                "discount_type": 0,
                "discount_value": 333
            },
            {
                "product_id": "6909579690059",
                "discount_type": 0,
                "discount_value": 333
            }
        ],
        "selected_variants": []
    }
}

Create or Update a single rule

Limit: You can create a rule of 10,000 products/variants.

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/save

Headers

NameValue

Content-Type

application/json

Body

If there is no ID in the requested data, a new rule will be created. Otherwise, the existing rule with ID will be updated.

{
   "domain": "abc.myshopify.com",
   "accessKey": "xxx",
    "data": {
      "name": "pricelist_3",
      "priority": 3,
      "status": 1,
      "apply_to": 1,
      "apply_at": 1,
      "selected_products":[],
      "selected_variants": [ 
        {
        "product_id": "8174450049309", 
        "variant_id": "44524354928925",
        "discount_type":1, 
        "discount_value": 123 
        },
        {
        "product_id": "8174450049309",
        "variant_id": "44524354961693",
        "discount_type": 2, 
        "discount_value": 10
        } 
        ],
      "customer_ids": [],
      "customer_tags": [],
      "exclude_from": 1,
      "exc_customer_tags": [ "b2b" ],
      "exc_customers": "",
      "exc_product_type": 4,
      "exc_product_variants": [
        39699783614639,
        39699785384111,
        42752015040687,
        39699790430383,
        39699784728751,
        42752028967087,
        40205671989423
      ],
      "start_date": null,
      "end_date": null
    }
 }

Response

{
    "success": true,
    "message": "Created the pricing list rule successfully",
    "payload": {
        "id": 186829
    }
}

Create or Update multiple rules

Limit: You can create a rule of 10,000 products/variants.

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/bulk-save

Headers

NameValue

Content-Type

application/json

Body

If there is no ID in the request data, a new rule will be created. Otherwise, the existing rule with ID will be updated.

{
    "domain": "abc.myshopify.com",
    "accessKey": "xxx",
    "rules": [
        {
            "id": null,
            "name": "Rule name",
            "priority": 3,
            "status": 1,
            "apply_to": 1,
            "apply_at": 0,
            "selected_products": [
                {
                    "product_id": "6701684228181",
                    "discount_type": 1,
                    "discount_value": 123
                },
                {
                    "product_id": "6701683802197",
                    "discount_type": 2,
                    "discount_value": 10
                }
            ],
            "customer_ids": [],
            "customer_tags": [],
            "exc_customer_tags": [
                "Leorio"
            ],
            "exclude_from": 1,
            "exc_customers": [],
            "exc_product_type": 4,
            "exc_product_variants": [
                39699783614639,
                39699785384111,
                42752015040687,
                39699790430383,
                39699784728751,
                42752028967087,
                40205671989423
            ],
            "start_date": "2022-03-08T17:00:00.000Z",
            "end_date": "2022-03-25T17:00:00.000Z"
        },
        {
            "id": 124,
            "name": "Rule name",
            "priority": 3,
            "status": 1,
            "apply_to": 1,
            "apply_at": 1,
            "selected_products": [],
            "selected_variants": [
                {
                    "product_id": "8174450049309",
                    "variant_id": "44524354928925",
                    "discount_type": 1,
                    "discount_value": 123
                },
                {
                    "product_id": "8174450049309",
                    "variant_id": "44524354961693",
                    "discount_type": 2,
                    "discount_value": 10
                }
            ],
            "customer_ids": [],
            "customer_tags": [],
            "exc_customer_tags": [
                "Leorio"
            ],
            "exclude_from": 1,
            "exc_customers": [],
            "exc_product_type": 0,
            "exc_product_variants": [],
            "start_date": "2022-03-08T17:00:00.000Z",
            "end_date": "2022-03-25T17:00:00.000Z"
        }
    ]
}

Response

{
    "success": true,
    "message": [
        "Create new rule 'Rule name' with ID 186830 successfully",
        "Update rule ID 124 successfully"
    ]
}

Delete rule

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/delete

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "id": 6
}

Response

{
     "success": true,
     "message": "Deleted rule successfully"
 }

Delete multiple rules

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/bulk-delete

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [6, 7]
}

Response

{
     "success": true,
     "message": "Deleted multiple rule successfully"
 }

Get Applied Rules for Products

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/get-products-applied-rules

Headers

NameValue

Content-Type

application/json

Body

If customer_id is null, the system will check Price list Rules which apply to all customers or not-logged-in customers.

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxxx",
  "product_ids": [ 6701683802197, 6701684228181 ],
  "customer_id": 5639955775573
}

Response

{
     "success": true,
     "productsAppliedRule": [
         {
             "id": "6701683802197",
             "discount_type": 2,
             "value": "10.00",
             "name": "Rule name"
         },
         {
             "id": "6701684228181",
             "discount_type": 1,
             "value": "123.00",
             "name": "Rule name"
         }
     ]
 }

Get Price List of Variants based on Applied Rules

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/get-variants-price-list

Headers

NameValue

Content-Type

application/json

Body

If customer_id is null, the system will check Price list Rules which applied for all customers or not-logged-in customers.

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxxx",
  "product_ids": [ 6701683802197, 6701684228181 ],
  "customer_id": 5639955775573
}

Response

{
     "success": true,
     "priceList": [
         {
             "id": "6701683802197",
             "discount_type": 2,
             "value": "10.00",
             "name": "Rule name",
             "variants": [
                 {
                     "id": "39878990823509",
                     "price": "30",
                     "compareAtPrice": null,
                     "appliedRulePrice": 27
                 },
                 {
                     "id": "39878990856277",
                     "price": "30",
                     "compareAtPrice": null,
                     "appliedRulePrice": 27
                 }
             ]
         },
         {
             "id": "6701684228181",
             "discount_type": 1,
             "value": "123.00",
             "name": "Rule name",
             "variants": [
                 {
                     "id": "39878991315029",
                     "price": "619",
                     "compareAtPrice": null,
                     "appliedRulePrice": 496
                 }
             ]
         }
     ]
 }

Product endpoints

Search products

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/search

Headers

NameValue

Content-Type

application/json

Body

Index is a cursor value, where you want to start searching. If afterIndex is null, the system will search products from the beginning. For example:

afterIndex: "eyJsYXN0X2lkIjo2NjU1NDU2Mzc5MDUzLCJsYXN0X3ZhbHVlIjo2NjU1NDU2Mzc5MDUzfQ=="
{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "ocean"
}

Response

{
   "success":true,
   "productList":{
      "edges":[
         {
            "node":{
               "id":"gid://shopify/Product/6586580271277",
               "title":"Ocean Blue Shirt",
               "handle":"ocean-blue-shirt",
               "productType":"",
               "totalVariants":1,
               "hasOnlyDefaultVariant":true,
               "priceRange":{
                  "minVariantPrice":{
                     "currencyCode":"VND",
                     "amount":"50.0"
                  },
                  "maxVariantPrice":{
                     "currencyCode":"VND",
                     "amount":"50.0"
                  }
               },
               "featuredImage":{
                  "transformedSrc":"https://cdn.shopify.com/s/files/1/0538/3874/1677/products/young-man-in-bright-fashion_925x_5251bcfa-6939-4d7a-9287-dd9bf058ed03.jpg?v=1616405807"
               },
               "onlineStoreUrl":null
            },
            "cursor":"eyJsYXN0X2lkIjo2NTg2NTgwMjcxMjc3LCJsYXN0X3ZhbHVlIjo2NTg2NTgwMjcxMjc3fQ=="
         },
         {
            "node":{
               "id":"gid://shopify/Product/6655456379053",
               "title":"Riri Bracelet",
               "handle":"riri-bracelet-rose",
               "productType":"women's bracelets",
               "totalVariants":1,
               "hasOnlyDefaultVariant":false,
               "priceRange":{
                  "minVariantPrice":{
                     "currencyCode":"VND",
                     "amount":"68.0"
                  },
                  "maxVariantPrice":{
                     "currencyCode":"VND",
                     "amount":"68.0"
                  }
               },
               "featuredImage":{
                  "transformedSrc":"https://cdn.shopify.com/s/files/1/0538/3874/1677/products/2015-04-20_Accessories_31_23500_21376.jpg?v=1619597977"
               },
               "onlineStoreUrl":null
            },
            "cursor":"eyJsYXN0X2lkIjo2NjU1NDU2Mzc5MDUzLCJsYXN0X3ZhbHVlIjo2NjU1NDU2Mzc5MDUzfQ=="
         }
      ],
      "pageInfo":{
         "hasNextPage":false,
         "hasPreviousPage":false
      }
   }
}

Get Product Tags

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-tags

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx"
}

Response

{
   "success":true,
   "productTags":{
      "tags":[
         "cotton blouse",
         "Couch",
         "cowl",
         "cpace",
         "Crane",
         "cream",
         "crepe wool",
         "crew",
         "crew neck",
         "crewneck",
         "crisp"
      ],
      "last_cursor":"Y3Jpc3A="
   }
}

Get Products by Tags

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-tags

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "tags": ["tag1","tags2","t3"],
  "operation": "AND" 
}

"Operation" is "AND" or "OR". If you use "AND", returned products must contain all tags. If you use "OR", returned products just need to belong to one tag in the array (["tag1","tags2","t3"]).

Response

{
   "success":true,
   "productList":[
      {
         "id":"gid://shopify/Product/6586590625965",
         "title":"Anchor Bracelet Mens",
         "handle":"leather-anchor",
         "productType":"Bracelet",
         "totalVariants":2,
         "hasOnlyDefaultVariant":false,
         "priceRange":{
            "minVariantPrice":{
               "currencyCode":"VND",
               "amount":"55.0"
            },
            "maxVariantPrice":{
               "currencyCode":"VND",
               "amount":"70.0"
            }
         },
         "featuredImage":{
            "transformedSrc":"https://cdn.shopify.com/s/files/1/0538/3874/1677/products/anchor-bracelet-mens_925x_8dcf313c-5c78-41ea-874d-59804d449315.jpg?v=1616407017"
         },
         "onlineStoreUrl":null
      }
   ]
}

Get Products by IDs

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/product/get-by-ids

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [ 6586590625965 ]
}

Response

{
   "success":true,
   "productList":[
      {
         "id":"gid://shopify/Product/6586590625965",
         "title":"Anchor Bracelet Mens",
         "handle":"leather-anchor",
         "productType":"Bracelet",
         "totalVariants":2,
         "hasOnlyDefaultVariant":false,
         "priceRange":{
            "minVariantPrice":{
               "currencyCode":"VND",
               "amount":"55.0"
            },
            "maxVariantPrice":{
               "currencyCode":"VND",
               "amount":"70.0"
            }
         },
         "featuredImage":{
            "transformedSrc":"https://cdn.shopify.com/s/files/1/0538/3874/1677/products/anchor-bracelet-mens_925x_8dcf313c-5c78-41ea-874d-59804d449315.jpg?v=1616407017"
         },
         "onlineStoreUrl":null
      }
   ]
}

Customer endpoints

Search Customers

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/search

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "nta"
}

Response

{
   "success":true,
   "customers":[
      {
         "node":{
            "id":"gid://shopify/Customer/5127974846637",
            "displayName":"nta",
            "email":"abc@gmail.com",
            "firstName":"n",
            "lastName":"ta",
            "phone":null,
            "tags":[
               "wholesale"
            ],
            "note":""
         },
         "cursor":"eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
      }
   ]
}

Get Customer Tags

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-tags

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx"
}

Response

{
   "success":true,
   "customerTags":[
      {
         "node":"wholesale",
         "cursor":"d2hvbGVzYWxl"
      }
   ]
}

Get Customers by IDs

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-ids

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "ids": [5127974846637]
}

Response

{
   "success":true,
   "customerList":[
      {
         "id":"gid://shopify/Customer/5127974846637",
         "displayName":"nta",
         "email":"abc@gmail.com",
         "firstName":"n",
         "lastName":"ta"
      }
   ]
}

Get Customers by Tags

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/get-by-tags

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "tags": ["tag1", "tags2"],
  "operation": "AND" 
}

"Operation" is "AND" or "OR". If you use "AND", returned products must contain all tags. If you use "OR", returned products just need to belong to one tag in the array (["tag1", "tags2"]).

Response

{
   "success":true,
   "customers":[
      {
         "node":{
            "id":"gid://shopify/Customer/5127974846637",
            "displayName":"nta",
            "email":"abc@gmail.com",
            "firstName":"n",
            "lastName":"ta",
            "phone":null,
            "tags":[
               "wholesale"
            ],
            "note":""
         },
         "cursor":"eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
      }
   ]
}

Collection endpoints

Get Collections

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/customer/search

Headers

NameValue

Content-Type

application/json

Body

{
  "domain": "abc.myshopify.com",
  "accessKey": "xxx",
  "afterIndex": null,
  "first": 20,
  "searchQuery": "nta"
}

Response

{
   "success":true,
   "customers":[
      {
         "node":{
            "id":"gid://shopify/Customer/5127974846637",
            "displayName":"nta",
            "email":"abc@gmail.com",
            "firstName":"n",
            "lastName":"ta",
            "phone":null,
            "tags":[
               "wholesale"
            ],
            "note":""
         },
         "cursor":"eyJsYXN0X2lkIjo1MTI3OTc0ODQ2NjM3LCJsYXN0X3ZhbHVlIjo1MTI3OTc0ODQ2NjM3fQ=="
      }
   ]
}

How do we handle your request?

  • We handle one request at a time. Once your request is completed, we will proceed with the next one.

  • In case of a server error, it may take up to 3 minutes to recover and process a new request.

Last updated