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