Skip to content

Public APIs for Uploading

These public endpoints allow you to upload pricing and discount rules from an external system directly into your Shopify store using the BSS B2B Solution app.

When a request is made, the app automatically uploads all enabled rules to your active theme, keeping your storefront pricing logic up-to-date.


  1. Generate your API Access Key in the app dashboard under API Integration → Public APIs.
  2. Security Note: Your Secret Key is displayed only once upon generation for enhanced security. Copy and store it in a secure password manager or server environment variable immediately.
  3. Include the key in your request payload or header for authentication.

All requests require an Access Key generated in your app. You can include it either way:

  • In the request body, as accessKey (see the examples below), or
  • As a header:
x-bss-b2b-api-key: <accessKey>

⚠️ Important: Each endpoint has a rate limit of 1 request per module per 5 minutes.
Exceeding this limit returns a 429 Too Many Requests response.


Upload all active Custom Pricing rules from your app or system to Shopify.

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/upload
Field Type Required Description
domain String ✅ Your store’s myshopify.com domain
accessKey String ✅ API Access Key generated from the BSS B2B Solution app
Terminal window
curl -X POST "https://b2b-solution-public-api.bsscommerce.com/api/v1/rule/upload" \
-H "Content-Type: application/json" \
-d '{
"domain": "bsscommerce-store.myshopify.com",
"accessKey": "YOUR_ACCESS_KEY"
}'
Code Meaning Notes
200 OK Upload successful All enabled rules were applied to the active theme
429 Too Many Requests Rate limit exceeded Wait 5 minutes before sending another request

Upload all active Quantity-based or Volume-based rules to your store.

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/qb/rule/upload
Field Type Required Description
domain String ✅ Your store’s myshopify.com domain
accessKey String ✅ API Access Key generated from the app
Terminal window
curl -X POST "https://b2b-solution-public-api.bsscommerce.com/api/v1/qb/rule/upload" \
-H "Content-Type: application/json" \
-d '{
"domain": "bsscommerce-store.myshopify.com",
"accessKey": "YOUR_ACCESS_KEY"
}'
Code Meaning Notes
200 OK Rules uploaded successfully Quantity/Amount Breaks were synced
429 Too Many Requests Rate limit exceeded Wait 5 minutes before retrying

Upload all active Price List rules to your Shopify store.

POST https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/rule/upload
Field Type Required Description
domain String ✅ Your store’s myshopify.com domain
accessKey String ✅ API Access Key generated from the app
Terminal window
curl -X POST "https://b2b-solution-public-api.bsscommerce.com/api/v1/pl/rule/upload" \
-H "Content-Type: application/json" \
-d '{
"domain": "bsscommerce-store.myshopify.com",
"accessKey": "YOUR_ACCESS_KEY"
}'
Code Meaning Notes
200 OK Rules uploaded successfully Price List data has been deployed to the theme
429 Too Many Requests Rate limit exceeded Wait 5 minutes before sending another request

When uploading rules through these APIs, the data is stored in Shopify metafields as JSON.

Specification Details
Maximum metafields 10 keys
Data type JSON
Max size per key 2,000,000 characters
Total max data size ~20,000,000 characters
Exceeding data Any content beyond capacity is safely skipped and reported
Uploaded content Primarily rule data and minimal setting data
Active rules only Only enabled rules are uploaded: inactive ones are ignored

If your uploaded rule dataset exceeds Shopify’s maximum single metafield capacity, the API avoids total failure by persisting all rules that fit within capacity and returning a structured partial report:

{
"success": false,
"status": "partial_success",
"message": "Some rules skipped due to Shopify metafield capacity limits.",
"data": {
"total": 1200,
"uploaded": 950,
"skipped": 250,
"skipReason": "SHOPIFY_METAFIELD_CAPACITY_EXCEEDED",
"skippedRuleIdRange": {
"from": 10951,
"to": 11200
}
}
}

The partial report is returned with HTTP status 200 OK: check status (or success: false) rather than the HTTP code to detect it. The same structure is returned by all three upload endpoints (Custom Pricing, Volume Pricing, Price List).

Field Type Description
success Boolean false when some rules were skipped
status String partial_success
message String Human-readable summary
data.total Number Number of active rules the API tried to upload
data.uploaded Number Number of rules saved to your store
data.skipped Number Number of rules skipped
data.skipReason String Reason for skipping, e.g. SHOPIFY_METAFIELD_CAPACITY_EXCEEDED
data.skippedRuleIdRange Object from / to: the first and last skipped rule ID (numeric)

When this occurs, partition large rule catalogs or prune inactive rules before re-triggering synchronization.

  1. External system (ERP/CRM) updates B2B rules.
  2. System triggers a POST request to the relevant upload API.
  3. BSS B2B Solution validates data and pushes it to the Shopify metafields.
  4. Storefront automatically reflects updated pricing and rule logic.

With these Public Upload APIs, your development team can fully automate pricing rule synchronization: ensuring your B2B store always delivers accurate, real-time pricing without manual updates.