Public API v2: Upload
Writes are saved in the app only. Upload sends a module’s enabled rules to the storefront, as the Upload button of the app does. The body is empty; the call returns when the upload is done.
Upload API endpoints
Section titled “Upload API endpoints”| Module | Route |
|---|---|
| Custom Pricing | POST /api/v2/custom-pricing/rules/upload |
| Price List | POST /api/v2/price-list/rules/upload |
| Volume Pricing | POST /api/v2/volume-pricing/rules/upload |
| Order Limit | POST /api/v2/order-limit/rules/upload |
| Quantity Increment | POST /api/v2/quantity-increment/rules/upload |
| Extra Fee | POST /api/v2/extra-fee/rules/upload |
| Shipping Rate | POST /api/v2/shipping-rate/rules/upload |
| Discount Code | POST /api/v2/discount-code/rules/upload |
| Tax Display | POST /api/v2/tax-display/rules/upload |
| Buy X Get Y | POST /api/v2/bogo/rules/upload |
| Net Terms | POST /api/v2/net-terms/rules/upload |
Upload API example
Section titled “Upload API example”POST /net-terms/rules/upload 200
curl -X POST "https://solution-public-api.bss-b2b.solutions/api/v2/net-terms/rules/upload" \ -H "X-API-Key: $B2B_API_KEY" \ -H "X-Shop-Domain: your-store.myshopify.com"{ "success": true, "status": "success", "data": { "status": "uploaded", "skipped": { "capacity_exceeded": 0, "write_failed": 0, "rule_id_range": null } }, "meta": { "timestamp": "2026-10-21T09:34:46.663Z", "version": "v2", "request_id": "db2079e7-e134-412e-9943-e2c2b29a9e8c", "rate_limit": { "cost": 20, "limit": 600, "remaining": 580, "restore_rate": 10 } }}Upload API response fields
Section titled “Upload API response fields”| Field | Notes |
|---|---|
status |
uploaded, or partial_success when some rules did not reach the storefront. |
skipped.capacity_exceeded |
Rules that did not fit in the storefront’s storage (Custom Pricing, Price List, Volume Pricing). Reduce the number or size of rules. |
skipped.write_failed |
Rules Shopify did not save (Custom Pricing, Price List). Upload again. |
skipped.rule_id_range |
{{from, to}} of the rule ids left out, or null. |
- Needs
<module>:write; costs 20 points; one upload or bulk request per store at a time (409otherwise). - Custom Pricing and Volume Pricing also update checkout prices at this step, and Order Limit its checkout limits.
502 UPSTREAM_UNAVAILABLEmeans Shopify did not save the rules (Order Limit, Quantity Increment, Shipping Rate, Discount Code, Tax Display, Buy X Get Y); upload again.- Auto Tag has no upload: its rules apply as soon as they are saved.
- Public API v2: Authentication & keysCreate Public API v2 keys with per-module permissions, send them with every request, and keep them safe.
- Public API v2: Auto TagRules that tag customers and orders, add notes or mark a customer tax exempt when an event happens.
- Public API v2: Buy X Get YBuy X Get Y offers: what the customer buys, what they get, and the discount on it.
- Public API v2: Bulk & idempotencyCreate, replace or delete up to 250 rules in one Public API v2 request, and retry POST requests safely.