Skip to main content

Price Level API

Create, read, update, and delete price level records using the NetSuite REST API.


Endpoints​

MethodEndpointDescription
GET/record/v1/priceLevelList all price levels
GET/record/v1/priceLevel/{id}Get specific price level
POST/record/v1/priceLevelCreate new price level
PATCH/record/v1/priceLevel/{id}Update existing price level
DELETE/record/v1/priceLevel/{id}Delete price level

Base URL​

https://{account_id}.suitetalk.api.netsuite.com/services/rest/record/v1/priceLevel

Key Fields​

Basic Information​

FieldTypeDescriptionRequired
idstringInternal ID (read-only)-
namestringPrice level nameYes
isInactivebooleanInactive flagNo
isOnlinebooleanAvailable for online storeNo

Pricing Configuration​

FieldTypeDescriptionRequired
discountPercentnumberDiscount percentageNo
updateExistingPricesbooleanUpdate existing item pricesNo

Example: Create Price Level​

POST /record/v1/priceLevel
Content-Type: application/json
Authorization: Bearer {access_token}
{
"name": "Wholesale",
"discountPercent": 15.0,
"isOnline": true,
"isInactive": false
}

Response​

{
"links": [
{
"rel": "self",
"href": "https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/priceLevel/5"
}
],
"id": "5",
"name": "Wholesale",
"discountPercent": 15.0,
"isOnline": true,
"isInactive": false
}

Example: Create Premium Price Level​

POST /record/v1/priceLevel
Content-Type: application/json
{
"name": "Premium VIP",
"discountPercent": 25.0,
"isOnline": true
}

Example: Update Price Level​

PATCH /record/v1/priceLevel/5
Content-Type: application/json
{
"discountPercent": 18.0,
"isOnline": false
}
Partial Updates

With PATCH, only include fields you want to change. All other fields remain unchanged.


Query Filters​

Find Price Levels by Name​

GET /record/v1/priceLevel?q=name LIKE 'Wholesale%'

Find Active Price Levels​

GET /record/v1/priceLevel?q=isInactive=false

Find Online Price Levels​

GET /record/v1/priceLevel?q=isOnline=true

Find Price Levels with Discount > 20%​

GET /record/v1/priceLevel?q=discountPercent > 20

Common Use Cases​

1. Set Customer Price Level​

await patchCustomer(customerId, {
priceLevel: { id: "5" } // Wholesale
});

2. Create Tiered Pricing Structure​

const levels = [
{ name: "Retail", discountPercent: 0 },
{ name: "Wholesale", discountPercent: 15 },
{ name: "Distributor", discountPercent: 25 },
{ name: "VIP", discountPercent: 30 }
];

for (const level of levels) {
await createPriceLevel(level);
}

3. Deactivate Obsolete Price Level​

await patchPriceLevel(levelId, {
isInactive: true
});

Important Notes​

Required Fields​

  • name - Price level name is required
  • All other fields are optional

Pricing Behavior​

  • Price levels can be assigned to customers to automatically apply discounts
  • Discount percentage applies to base item prices
  • Item-specific pricing overrides price level discounts
  • Price levels can be used in combination with price books for advanced pricing

Online Store Integration​

  • Set isOnline=true to make price level available for web store customers
  • Online price levels are visible in customer-facing interfaces

Updating Existing Prices​

  • Use updateExistingPrices=true to retroactively apply discount changes to existing item prices
  • This is a one-time update, not an ongoing sync

Best Practices​

  • Use consistent naming conventions (e.g., "Retail", "Wholesale", "VIP")
  • Organize price levels in hierarchical tiers
  • Document discount percentages in internal documentation
  • Consider using price books for more complex pricing scenarios

See Also​