Skip to main content

Pricing Group API

Create, read, update, and delete pricing group records using the NetSuite REST API.


Endpoints

MethodEndpointDescription
GET/record/v1/pricingGroupList all pricing groups
GET/record/v1/pricingGroup/{id}Get specific pricing group
POST/record/v1/pricingGroupCreate new pricing group
PATCH/record/v1/pricingGroup/{id}Update existing pricing group
DELETE/record/v1/pricingGroup/{id}Delete pricing group

Base URL

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

Key Fields

Basic Information

FieldTypeDescriptionRequired
idstringInternal ID (read-only)-
namestringPricing group nameYes
isInactivebooleanInactive flagNo

Configuration

FieldTypeDescriptionRequired
descriptionstringGroup descriptionNo
discountPercentnumberDefault discount percentageNo

Item Associations

FieldTypeDescriptionRequired
itemscollectionItems in this pricing groupNo

Example: Create Pricing Group

POST /record/v1/pricingGroup
Content-Type: application/json
Authorization: Bearer {access_token}
{
"name": "Volume Customers",
"description": "High-volume customer pricing tier",
"discountPercent": 15.0,
"isInactive": false
}

Response

{
"links": [
{
"rel": "self",
"href": "https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/pricingGroup/10"
}
],
"id": "10",
"name": "Volume Customers",
"description": "High-volume customer pricing tier",
"discountPercent": 15.0,
"isInactive": false
}

Example: Create Category-Based Pricing Group

POST /record/v1/pricingGroup
Content-Type: application/json
{
"name": "Electronics Bulk Pricing",
"description": "Special pricing for electronics category bulk purchases",
"discountPercent": 20.0,
"isInactive": false
}

Example: Create Seasonal Pricing Group

POST /record/v1/pricingGroup
Content-Type: application/json
{
"name": "Holiday Season 2025",
"description": "Promotional pricing for holiday season",
"discountPercent": 25.0,
"isInactive": false
}

Example: Update Pricing Group

PATCH /record/v1/pricingGroup/10
Content-Type: application/json
{
"discountPercent": 18.0,
"description": "Updated high-volume customer pricing tier - Q1 2026"
}
Partial Updates

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


Query Filters

Find Pricing Groups by Name

GET /record/v1/pricingGroup?q=name LIKE 'Volume%'

Find Active Pricing Groups

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

Find Groups with Discount > 20%

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

Find Groups by Description

GET /record/v1/pricingGroup?q=description LIKE '%promotional%'

Common Use Cases

1. Create Customer Tier Pricing Groups

const tiers = [
{
name: "Standard Customers",
description: "Default pricing tier",
discountPercent: 0
},
{
name: "Volume Customers",
description: "High-volume pricing tier",
discountPercent: 15
},
{
name: "Enterprise Customers",
description: "Enterprise pricing tier",
discountPercent: 25
}
];

for (const tier of tiers) {
await createPricingGroup(tier);
}

2. Create Promotional Pricing Group

await createPricingGroup({
name: "Black Friday 2025",
description: "Limited time promotional pricing",
discountPercent: 30.0
});

3. Update Existing Pricing Group

await patchPricingGroup(groupId, {
discountPercent: 20.0,
description: "Updated Q2 2026 pricing"
});

4. Deactivate Expired Pricing Group

await patchPricingGroup(promotionalGroupId, {
isInactive: true,
description: "Expired - Holiday promotion ended"
});

5. Category-Specific Pricing

const categories = [
{ name: "Software Products", discountPercent: 10 },
{ name: "Hardware Products", discountPercent: 15 },
{ name: "Services", discountPercent: 5 }
];

for (const category of categories) {
await createPricingGroup({
name: category.name,
description: `Pricing for ${category.name}`,
discountPercent: category.discountPercent
});
}

Important Notes

Required Fields

  • name - Pricing group name is required
  • All other fields are optional

Pricing Group Functionality

  • Pricing groups allow you to apply consistent pricing rules to multiple items
  • Groups can be assigned to specific customer segments or categories
  • Discount percentages override standard pricing but can be overridden by customer-specific pricing

Discount Hierarchy

The pricing system follows this hierarchy (highest to lowest priority):

  1. Customer-specific item pricing
  2. Price level pricing
  3. Pricing group discounts
  4. Base item price

Item Association

  • Items can be assigned to multiple pricing groups
  • When multiple groups apply, NetSuite uses the most favorable pricing for the customer
  • Group assignments are typically managed through item records or bulk updates

Activation and Deactivation

  • Inactive pricing groups are not applied to transactions
  • Deactivating a group does not affect historical transactions
  • Use deactivation to end promotional periods or retire obsolete pricing tiers

Best Practices

  • Use descriptive names that clearly indicate the purpose (e.g., "Volume Tier 1", "Holiday Promo 2025")
  • Document effective dates and eligibility criteria in the description field
  • Create separate groups for different product categories or customer segments
  • Review and update discount percentages regularly based on business needs
  • Archive expired promotional groups instead of deleting them

Integration with Pricing System

  • Price Levels: Pricing groups work alongside price levels for comprehensive pricing control
  • Price Books: Groups can be used within price books for advanced pricing strategies
  • Customer Categories: Assign pricing groups based on customer categorization
  • Item Pricing: Define which items belong to which pricing groups

Common Scenarios

  • Volume Discounts: Create groups for different volume tiers
  • Seasonal Promotions: Temporary pricing groups for sales events
  • Product Categories: Different pricing for different product lines
  • Customer Segments: Pricing based on customer type or industry
  • Geographic Pricing: Regional pricing variations

See Also