Import Customer Item Prices from CSV in NetSuite

Load negotiated customer-specific item prices into the Item Pricing sublist with a Customers Only CSV import, fix the proposed mapping, and check a sales order uses the new price.

The quick answer

Customer item prices live on the customer record, under Financial > Item Pricing. To load them from a file, go to Setup > Import/Export > Import CSV Records and choose Import Type Relationships, Record Type Customers Only and Data Handling Update. Map the customer's Internal ID so NetSuite finds the customer. Then remove the proposed Customer : Currency and Customer : Price Level rows and map Item, Unit Price, Currency and Price Level into Customer - Item Pricing 1 instead. Left as proposed, those two rows change the customer's own currency and default price level and load no item prices. After the import, a new sales order for that customer and item takes Price Level Custom and the imported Unit Price as its Rate.

The screenshots show sample data. Person and operating-company names are fictional. Use your own records and values when following the steps.

Before you start

You need a role that can import CSV records and edit customers. Item Pricing lines need the Multiple Prices feature, and the price levels you use have to exist. With Multiple Currencies, each line's currency has to match the currency of the orders you want it to price.

In this example, Brookline Architecture Group (internal ID 3261) buys at Price Level Base Price and has no Item Pricing lines. It has agreed new prices for two items: DS-410 Ergonomic Desk Chair at 245.00 instead of 289.00, and MA-22 Dual Monitor Arm at 99.00. The prices come in brookline-item-pricing.csv.

01. Check the customer's current pricing

Go to Lists > Relationships > Customers. Brookline Architecture Group has Internal ID 3261. You'll use that ID in the file. If your list doesn't show internal IDs, turn on Show Internal IDs in your preferences or export them from a saved search.

Brookline Architecture Group is internal ID 3261.

Open Brookline Architecture Group and go to the Financial tab. Price Level is Base Price, and the Item Pricing subtab says "No records to show."

No item prices yet. The customer buys at Base Price.

02. See what a sales order charges today

Go to Transactions > Sales > Enter Sales Orders and choose Brookline Architecture Group in Customer. On the Items line, choose DS-410 Ergonomic Desk Chair and enter 4 in Quantity. The line takes Price Level Base Price, Rate 289.00 and Amount 1,156.00. Click Cancel. This order was only a check.

Before the import: Base Price, 289.00 a chair.

03. Review the price file

Open brookline-item-pricing.csv. It has five columns: Internal ID, Item, Unit Price, Currency and Price Level. Each row is one Item Pricing line. Both rows are for customer 3261: DS-410 Ergonomic Desk Chair at 245.00 and MA-22 Dual Monitor Arm at 99.00, both US Dollar and Custom.

Two price lines for one customer.

Name items exactly as NetSuite shows them, or use item internal IDs and set the Item mapping's reference type to Internal ID. Price Level Custom with a Unit Price sets a fixed price for that customer and item.

04. Start the import

Go to Setup > Import/Export > Import CSV Records. Choose Import Type Relationships and Record Type Customers Only. Click Select..., choose the file and click Next.

Relationships, Customers Only, and the price file.

On Import Options, choose Data Handling Update, because the customer already exists. Click Next.

Overwrite Sublists, under Advanced Options, decides what happens to price lines the customer already has. With it on, the file replaces the customer's whole Item Pricing list, and any line missing from the file is removed. With it off, the file's lines are added. Brookline has no lines yet, so it makes no difference here. If your customers already have prices, test on one customer first.

Update, because Brookline already exists.

05. Fix the proposed mapping

Field Mapping proposes Currency to Customer : Currency, Internal ID to Customer : Internal ID and Price Level to Customer : Price Level. Item and Unit Price aren't mapped at all. The column names match the customer's own fields, so as proposed the import would change Brookline's primary currency and default price level and load no item prices.

Currency and Price Level were proposed for the customer's own fields.

Click the × on the Customer : Currency row and on the Customer : Price Level row. Keep Internal ID. That's how NetSuite finds the customer to update.

06. Map the columns to Item Pricing

Under NetSuite Fields, open Customer - Item Pricing, then Customer - Item Pricing 1. Click Item under Your Fields, then Item in that group. Map Unit Price to Unit Price, Currency to Currency and Price Level to Price Level. Click Next.

All four price columns now map into Customer - Item Pricing 1.

07. Save the mapping and run the import

Enter Customer Item Pricing Import in Import Map Name and click Save & Run. Then open Import Job Status. The job is Complete with 1 of 1 records imported successfully. The file has two rows, but they update one customer, and the job counts customers. If the message reports fewer records than customers in your file, open the CSV Response to see which ones failed.

Two rows, one customer: 1 of 1 records.

08. Confirm the customer's item prices

Open Brookline Architecture Group again and go to Financial > Item Pricing. DS-410 Ergonomic Desk Chair is Custom, US Dollar, 245.00. MA-22 Dual Monitor Arm is Custom, US Dollar, 99.00. Price Level is still Base Price.

Both negotiated prices are on the customer. Price Level didn't change.

09. Confirm the sales order price

Start a new sales order for Brookline Architecture Group, choose DS-410 Ergonomic Desk Chair and enter 4. The line now takes Price Level Custom and Rate 245.00. Click Add. Amount is 980.00, down from 1,156.00.

Custom 245.00 replaces Base Price 289.00.

Check the result

  1. Import Job Status shows one record per customer in the file, all imported successfully.
  2. The customer's Item Pricing subtab lists each item from the file with its price level, currency and unit price.
  3. The customer's own Price Level and Primary Currency haven't changed.
  4. A new sales order line for one of the items shows Price Level Custom and the imported price as its Rate.

Customer item pricing comes ahead of the customer's default price level, but a rate someone types on the line, a promotion, or a pricing script or workflow can still change it. The line's currency also has to match the item price's currency.

Common questions

Why did my item pricing import change the customer's price level or currency?

Because Currency and Price Level were mapped to the customer's own fields. The Import Assistant proposes Customer : Currency and Customer : Price Level when your column names match them. Remove those rows and map the columns into Customer - Item Pricing 1 instead. Then they land on the item price lines and the customer's defaults stay put.

Why does the job say 1 of 1 records when my file had several rows?

The job counts customers, not rows. Rows that share a customer's Internal ID all update that one customer, so two price lines for Brookline came back as 1 of 1.

Does a sales order use the customer's item pricing before their price level?

Yes, for the items on the list. Brookline's default Price Level is still Base Price, but the chair now prices at Custom 245.00 instead of Base Price 289.00. The line's currency has to match the item price's, and a typed rate, a promotion or a script can still override it.

What does Price Level Custom mean on the Item Pricing subtab?

It means the line has its own fixed Unit Price for that customer and item, instead of a price from one of your named price levels. It doesn't change the customer's default Price Level.

Will an update replace the item prices a customer already has?

Only if Overwrite Sublists is on, under Advanced Options on Import Options. Then the file replaces the customer's whole Item Pricing list, and lines that aren't in the file are removed. With it off, the file's lines are added. Test it on one customer before a big run.

Can I give a customer a named price level for one item instead of a fixed price?

Yes. Put a named level such as Wholesale in Price Level and leave Unit Price empty. That item then prices at the Wholesale level for this customer, while everything else still uses the customer's default level.