Price Level API
Create, read, update, and delete price level records using the NetSuite REST API.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/priceLevel | List all price levels |
GET | /record/v1/priceLevel/{id} | Get specific price level |
POST | /record/v1/priceLevel | Create 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
| Field | Type | Description | Required |
|---|---|---|---|
id | string | Internal ID (read-only) | - |
name | string | Price level name | Yes |
isInactive | boolean | Inactive flag | No |
isOnline | boolean | Available for online store | No |
Pricing Configuration
| Field | Type | Description | Required |
|---|---|---|---|
discountPercent | number | Discount percentage | No |
updateExistingPrices | boolean | Update existing item prices | No |
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=trueto make price level available for web store customers - Online price levels are visible in customer-facing interfaces
Updating Existing Prices
- Use
updateExistingPrices=trueto 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
- Customer - Assign price levels to customers
- Inventory Item - Set item-specific pricing
- Price Book - Advanced pricing with price books
- Pricing Group - Group items for pricing