The quick answer
Go to Setup > Import/Export > Import CSV Records, set Import Type to Items and Record Type to Inventory Item, select the file and keep Data Handling on Add. On Field Mapping, check what NetSuite matched by heading, then map the rest by hand: your item number column to Item Name/Number (Req), the sale price and its currency to Item Pricing 1, and the vendor to Item Vendors 1. Save the mapping, run it, and check Import Job Status before you trust the items. Then open one and compare it with its row in the file.
The screenshots show sample data. Person and company names are fictional. Use your own items, accounts and values when you follow the steps.
Before you start
You need a role that can import CSV records and create items. The parent item, vendor, accounts, currency and tax schedule in the file have to exist already and be valid for the item's subsidiary. In OneWorld, the vendor also has to be assigned to that subsidiary.
This example uses an account with OneWorld, Legacy tax (items carry a Tax Schedule), Multiple Vendors on, and Multiple Currencies on with Multiple Prices and Quantity Pricing off. Without Multiple Vendors, the Item Vendors mapping isn't there. Your account may show different required fields, so go by the (Req) marks in your own Field Mapping. If Multiple Prices is on, each price also needs a Price Level. If Quantity Pricing is on, it also needs a Quantity.
Pinecrest Outdoor Lighting is adding three solar lights under its existing PATH LIGHTS parent item. They come in path-lights.csv.
01. Check the item list
Go to Lists > Accounting > Items. PATH LIGHTS is there, and there are no PL- items yet. Look first, so you know what the import added.
02. Review the file
Open path-lights.csv. It has a header row and one row per item, 13 columns in all. Row 2 is PL-2201: Sales Description Solar path light, Price 24.95, Cost 11.40, Track Landed Cost FALSE, the three accounts, and Subitem of PATH LIGHTS.
Further right, every row has Vendor Brightline Components, Subsidiary Pinecrest Holdings : Pinecrest Lighting US, Tax Schedule Taxable and Currency US Dollar. The file references records by name, so the subsidiary is written with its full hierarchy, parent first, exactly as NetSuite shows it. If your file has internal IDs or external IDs instead, change the reference type on that mapping row with its pencil icon.
03. Upload the file
Go to Setup > Import/Export > Import CSV Records. Set Import Type to Items, and Record Type changes to Inventory Item. Keep Character Encoding and CSV column delimiter as they are, unless your file uses another encoding or separator. Click Select..., choose path-lights.csv and click Next.
04. Choose Add
On Import Options, keep Data Handling on Add, because these are new items. Add doesn't update items that already exist, and a row whose item name is already taken fails. Click Next. With a single file there's no file linking to set up, so Field Mapping opens.
05. Map the columns
In this file, NetSuite matched most columns by heading: the three accounts, Sales Description, Subitem of, Subsidiary, Tax Schedule and Track Landed Cost. It also mapped Cost to Item : Purchase Price, the item-level price you pay suppliers. That's right for this file. It isn't a cost estimate, and it isn't a vendor-specific price. Check every proposed row anyway, and for reference fields such as Subitem of or the accounts, make sure the reference type matches what your file holds.
Item : Item Name/Number (Req) has no column yet, and Name, Price, Vendor and Currency have no check mark under Your Fields. Click Name under Your Fields, then Item Name/Number (Req) under NetSuite Fields.
The sale price goes to the Item Pricing sublist, not a field on the item. Under NetSuite Fields, expand Item Pricing and Item Pricing 1. Map Currency to Currency (Req). Currency is required here because Multiple Currencies is on. An empty Item Pricing 1 : Price (Req) row appears, because a pricing line needs both. Map Price to it. With Multiple Prices off, this line is the item's Base Price in US Dollar.
Expand Item Vendors and Item Vendors 1, and map Vendor to Vendor (Req). Every column now has a check mark. Click Next.
Mapping only Vendor adds the vendor to the item. It doesn't import a vendor-specific purchase price or set the Preferred flag. Those are separate fields in Item Vendors 1. Map them too if your file has them.
06. Save the mapping and run the import
Enter Path light items in Import Map Name. Description and ID are optional. Click Save & Run. The confirmation says the CSV import has been saved and the import job is in process. For a new mapping on a big file, it's worth running one row first and checking that item before you import the rest.
07. Check the job
Click Import Job Status. The Inventory Item - path-lights.csv job is Complete at 100.0% with the message 3 of 3 records imported successfully. If the message reports fewer records than rows in your file, open the CSV Response, read the error for each failed row, fix the data or the mapping, and import just those rows again.
08. Check the item list again
Go back to Lists > Accounting > Items. PATH LIGHTS : PL-2201, PATH LIGHTS : PL-2205 and PATH LIGHTS : PL-2210 are listed as Inventory Items with their sales descriptions and base prices 24.95, 32.50 and 58.00, the US Dollar prices from the file.
09. Open one of the new items
Click PATH LIGHTS : PL-2201. Item Name/Number is PL-2201, Subitem of is PATH LIGHTS and Subsidiary is Pinecrest Holdings : Pinecrest Lighting US.
On Purchasing/Inventory, Purchase Price is 11.40 from the Cost column, and Track Landed Cost is cleared because the file said FALSE.
In the Vendors sublist, Brightline Components is listed with no vendor-specific purchase price, because only the Vendor column was mapped. Here it shows Preferred No. Check that flag on your own items rather than assuming it.
On Accounting, the accounts and tax schedule match the file.
Check the result
- Import Job Status shows as many records imported as there are rows in the file.
- The Items list shows each new item under its parent, with the base price in the imported currency.
- On an imported item, Purchase Price, Track Landed Cost, the accounts and the tax schedule match its row.
- The Vendors sublist lists the vendor from the file. Its price and Preferred flag are set only if you mapped them.
- Any failed rows have been reviewed in the CSV Response.
Common questions
Why is Currency required when I import item prices?
Because Multiple Currencies is on, every price needs a currency. Map Currency to Item Pricing 1 : Currency (Req) next to Price. In this import, US Dollar plus the Price column gave PL-2201, PL-2205 and PL-2210 base prices of 24.95, 32.50 and 58.00.
Do I need Price Level and Quantity columns?
Not in an account like this one, where Multiple Prices and Quantity Pricing are off. The price lands as the item's Base Price. Turn on Multiple Prices and each line also needs a Price Level. Turn on Quantity Pricing and it needs a Quantity too.
What's the difference between Cost, Purchase Price and the vendor's purchase price?
Cost is just the column name in this file. It maps to Item : Purchase Price, the item-level price you pay suppliers, which is why PL-2201 shows 11.40. A vendor-specific price lives on the Vendors sublist and is a separate field in Item Vendors 1. This import didn't map it, so the vendor row has no price.
How do I import an item as a sub-item of another item?
Map a column to Subitem of and put the parent's name in it, exactly as NetSuite shows it. The parent has to exist before the import runs. Here every row said PATH LIGHTS, and the items came in as PATH LIGHTS : PL-2201, PL-2205 and PL-2210.
What if some rows fail?
The job message will report fewer records than rows. Open the CSV Response, read the error for each failed row, fix the data or the mapping, and import just those rows again with Add.
Can I update these items later with the same mapping?
You can start from the saved map, but switch Data Handling to Update and include a column that identifies each existing item, such as Internal ID or External ID. Check the pricing and vendor rows before you run it, since an update can add sublist lines rather than change the ones already there.