curl --request POST \
--url https://api.arcuserp.com/v1/pricing-policies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"product_id": "550e8400-e29b-41d4-a716-446655440000",
"pricing_level_id": "660e8400-e29b-41d4-a716-446655440001",
"min_quantity": 1,
"sell_price": 49.99,
"pricing_type": "regular"
}
'import requests
url = "https://api.arcuserp.com/v1/pricing-policies"
payload = {
"product_id": "550e8400-e29b-41d4-a716-446655440000",
"pricing_level_id": "660e8400-e29b-41d4-a716-446655440001",
"min_quantity": 1,
"sell_price": 49.99,
"pricing_type": "regular"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
product_id: '550e8400-e29b-41d4-a716-446655440000',
pricing_level_id: '660e8400-e29b-41d4-a716-446655440001',
min_quantity: 1,
sell_price: 49.99,
pricing_type: 'regular'
})
};
fetch('https://api.arcuserp.com/v1/pricing-policies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcuserp.com/v1/pricing-policies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'product_id' => '550e8400-e29b-41d4-a716-446655440000',
'pricing_level_id' => '660e8400-e29b-41d4-a716-446655440001',
'min_quantity' => 1,
'sell_price' => 49.99,
'pricing_type' => 'regular'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/pricing-policies"
payload := strings.NewReader("{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/pricing-policies")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/pricing-policies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}"
response = http.request(request)
puts response.read_body{
"data": {}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Create a pricing policy
Creates a sell-side pricing policy (product_pricing_policies row) for a product.
Each policy defines one qty-break tier on a pricing level or as a per-account override.
Required: product_id AND one of (pricing_level_id | account_id).
The combination of (product_id, pricing_level_id, account_id, variant_id, min_quantity)
must be unique for active policies. Duplicate scope returns 422 duplicate_pricing_policy_for_scope.
Public field min_quantity maps to the canonical qty_break column.
Hard cap: max 100 nested policy rules per request (returns 413 if exceeded).
Idempotent via Idempotency-Key header.
Requires products:write scope.
curl --request POST \
--url https://api.arcuserp.com/v1/pricing-policies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"product_id": "550e8400-e29b-41d4-a716-446655440000",
"pricing_level_id": "660e8400-e29b-41d4-a716-446655440001",
"min_quantity": 1,
"sell_price": 49.99,
"pricing_type": "regular"
}
'import requests
url = "https://api.arcuserp.com/v1/pricing-policies"
payload = {
"product_id": "550e8400-e29b-41d4-a716-446655440000",
"pricing_level_id": "660e8400-e29b-41d4-a716-446655440001",
"min_quantity": 1,
"sell_price": 49.99,
"pricing_type": "regular"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
product_id: '550e8400-e29b-41d4-a716-446655440000',
pricing_level_id: '660e8400-e29b-41d4-a716-446655440001',
min_quantity: 1,
sell_price: 49.99,
pricing_type: 'regular'
})
};
fetch('https://api.arcuserp.com/v1/pricing-policies', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcuserp.com/v1/pricing-policies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'product_id' => '550e8400-e29b-41d4-a716-446655440000',
'pricing_level_id' => '660e8400-e29b-41d4-a716-446655440001',
'min_quantity' => 1,
'sell_price' => 49.99,
'pricing_type' => 'regular'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/pricing-policies"
payload := strings.NewReader("{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/pricing-policies")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/pricing-policies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"product_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"pricing_level_id\": \"660e8400-e29b-41d4-a716-446655440001\",\n \"min_quantity\": 1,\n \"sell_price\": 49.99,\n \"pricing_type\": \"regular\"\n}"
response = http.request(request)
puts response.read_body{
"data": {}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Body
Product this policy applies to
Pricing level UUID. Required if account_id not provided.
Account-specific price override. Required if pricing_level_id not provided.
Scope to a specific variant (omit for product-wide)
'regular' = absolute sell_price; 'multiplier' = sell_price derived from list_price * adjustment
regular, multiplier Minimum order qty to activate this tier. Must be unique per scope.
x >= 1Absolute sell price (pricing_type='regular')
List price snapshot (pricing_type='multiplier')
Multiplier adjustment (pricing_type='multiplier')
Margin percentage for reference
Mark as the default price for this product
Source system identifier (e.g. 'versa', 'bubble')
ID in the source system
Response
Created pricing policy
Was this page helpful?

