Item Pricing
Overview
The Item Pricing integration retrieves real-time, customer-specific pricing for items directly from NetSuite. This ensures that sales orders created in Zudello use the most accurate and current pricing available, reflecting all of NetSuite's complex pricing rules.
Direction: 📤 Zudello → NetSuite (Real-time Query)
Type: Real-time sync
API: SuiteQL
Frequency: On-demand
- Real-time Accuracy: Fetches live pricing data at the moment of order creation.
- Complex Logic Support: Respects NetSuite's full pricing hierarchy, including customer-specific prices, price levels, and quantity breaks.
- Reduced Errors: Eliminates manual price entry and reliance on cached or outdated pricing lists.
- Dynamic Pricing: Supports dynamic pricing based on order quantity and currency.
NetSuite Pricing Hierarchy
NetSuite determines the final price for an item by evaluating a hierarchy of pricing rules. The integration queries NetSuite in a way that respects this hierarchy, which is typically processed in the following order:
- Customer-Specific Price: The price defined for a specific item and a specific customer. This is the highest priority.
- Price Group / Price Level Price: The price associated with a price level (e.g., "Wholesale," "Retail") assigned to the customer.
- Quantity Pricing: Price breaks based on the quantity of the item being ordered. This can apply to the base price or a specific price level.
- Base Price: The standard list price of the item if no other pricing rules apply.
API Request Parameters
To retrieve a price, Zudello sends the following parameters to NetSuite in a SuiteQL query:
Parameter | Description | Data Type | Example |
---|---|---|---|
Item ID | The internal ID or SKU of the item. | String | 'ITEM-123' |
Customer ID | The internal ID of the customer placing the order. | String | 'CUST-456' |
Quantity | The quantity of the item being ordered. | Decimal | 10.0 |
Currency | The currency for the transaction. | String | 'AUD' |
Date | The date of the transaction, used for time-sensitive pricing. | Date | '2023-10-27' |
API Response
NetSuite returns the following information, which Zudello uses to populate the sales order line:
Field | Description | Data Type |
---|---|---|
price | The final calculated price per unit. | Decimal |
currency | The currency of the returned price. | String |
priceLevel | The name of the NetSuite price level that was used. | String |
priceLevelId | The internal ID of the price level. | String |
SuiteQL Query Logic
The integration constructs a SuiteQL query that simulates NetSuite's pricing engine logic. The query joins the Item
, Customer
, and Pricing
tables.
Query Steps:
- Check for Customer-Specific Price: The query first looks for a price entry matching the specific Item ID and Customer ID.
- Check for Price Level: If no customer-specific price is found, it retrieves the customer's assigned
Price Level
and looks for a price for the item at that level. - Apply Quantity Breaks: The query evaluates quantity-based pricing schedules associated with the determined price level (or base price). It selects the correct price tier based on the requested
Quantity
. - Fall back to Base Price: If no other rules apply, the item's
basePrice
is returned.
Error Handling
Error Type | Description | Resolution |
---|---|---|
ITEM_NOT_FOUND | The requested item ID does not exist in NetSuite. | Verify the item code is correct and the item is active in NetSuite. |
CUSTOMER_NOT_FOUND | The requested customer ID does not exist. | Verify the customer code is correct and the customer is active. |
NO_PRICE_FOUND | The item has no base price and no other pricing rules apply. | Ensure the item has a base price configured in NetSuite. |
INSUFFICIENT_PERMISSION | The API user role lacks permission to view items or pricing. | Review the permissions for the integration user role in NetSuite. |
Troubleshooting
Issue | Possible Cause | Solution |
---|---|---|
Incorrect price is returned | Pricing hierarchy in NetSuite is misconfigured. | Review the customer's price level and any customer-specific pricing for the item. |
Base price is always used | Customer is not assigned a price level. | Assign the correct price level to the customer record in NetSuite. |
Quantity discounts not applying | Quantity pricing schedule is not set up correctly. | Verify the quantity break tiers and prices on the item's pricing subtab. |
Query times out | The pricing query is too complex or the dataset is large. | Contact Zudello support to review query optimization. |