Zoho Inventory imports sales orders from a CSV or TSV file under 1 MB.
PDF, JPG, PNG, BMP, HEIC, TIFF
Submit your purchase orders
Drop documents here, or choose a file
Up to 50 files per batch
Uploading...
Zoho Inventory imports sales orders from a CSV or TSV file under 1 MB. Upload the purchase order your wholesale customer emailed and get the PO number, customer, ship-to and every line with item, quantity and rate as rows you map once and import.
Zoho Inventory handles your web store orders on its own. The orders from wholesale and retail buyers arrive as PDFs, and someone on your team keys them in line by line.
A retail chain or distributor sends a purchase order printed by its own ERP. The Zoho import reads a CSV, so a person turns the PDF into rows first.
Buyers order by their own descriptions and codes. Every line has to land on an item that already exists in Zoho, or it will not match your stock.
Zoho Inventory caps an import file at 1 MB. A month of backlog or a large seasonal order run has to be split into several files.
A transposed quantity on a 30 line order becomes a wrong pick, a short shipment and a chargeback from the retailer weeks later.
Upload the purchase order your customer sent. The AI reads the header and every line and returns a spreadsheet with one row per line and the header values beside each, ready to map in the Zoho Inventory import screen.
No template per buyer. Digital PDFs, scans and phone photos from any retailer or distributor come back in the same column layout.
A 40 line order returns 40 rows in document order with the buyer item code, description, quantity, unit and rate.
The buyer PO number lands in its own column, ready for the Reference field on the sales order so your team can quote it back.
Store or warehouse name, street, city, state and ZIP come back as separate values, which matters when one buyer ships to many locations.

Zoho Inventory brings sales orders in through a file import. Open the Sales Orders tab, click the menu icon in the top right corner and choose Import Sales Orders. Zoho then asks for the file, the character encoding (UTF-8 by default), and whether it should auto-generate the sales order number. It maps the columns it recognizes, lets you fix the rest, and shows a preview with the rows ready to import, the rows it will skip and any unmapped fields before anything is written. That screen is quick once the file exists. The slow part is the file itself. A brand selling through retailers, distributors and independent stores gets purchase orders as PDFs out of each buyer system, and none of them arrive as rows. Someone reads each PDF and types it, and that is the step this page covers.
PurchaseOrders handles that step. Upload the customer PO and the AI returns the header and every line as a spreadsheet, one row per line with the PO number, order date, customer and ship-to repeated beside each. You line those columns up with the sample file Zoho offers on the import page, save as CSV and run the import. A 40 line order that took twenty minutes to key becomes a few minutes of checking. If your books run in QuickBooks instead of Zoho, the same output feeds the QuickBooks sales order import.
Three rules from the Zoho Inventory help center decide whether a file loads. First, the format: Zoho Inventory imports sales orders from CSV or TSV only. It exports to XLS, which is why people try to import an XLSX back and get stuck. Save as CSV. Second, the size: the maximum file size is 1 MB. That is plenty for a day of orders, but a migration or a seasonal backlog needs to be split into several files. Third, the layout: download the sample file from the import page before you build anything and copy its column order and the way it lays out the lines of one order. Zoho maps similar column names on its own, and you can save the mapping, so after the first import the same columns map the same way every time.
Many teams run Zoho Books next to Zoho Inventory or on its own. Zoho Books has its own Import Sales Orders option under Sales, Sales Orders, More, and the Sales Orders module has to be switched on first in Settings under General. Zoho Books accepts CSV, TSV or XLS, lets you pick the delimiter, and offers the same choice to auto-generate the sales order number and save the field mapping. When Zoho Inventory and Zoho Books are linked, Zoho states that imports and changes made in one are reflected in the other, so import in one place only. Importing the same batch into both creates duplicates you then have to clean up. Teams that also bring supplier documents into Books can use the purchase order to Zoho Books route for the buying side.
Decide early whose number goes where. Your sales order number is yours, and the simplest setup is to tick auto-generate on import and let Zoho number the orders in sequence. The customer purchase order number is theirs, and it is the number a retail buyer quotes when they call about a late shipment or dispute an invoice. Keep it on the order in the Reference field, which most teams use for exactly that, and it will carry through to the package, the shipment and the invoice. Extraction gives you the PO number in its own column, so mapping it to Reference is one choice in the import screen rather than a field someone types.
Every order line has to land on an item that exists in your Zoho Inventory, or the order will not tie to stock and cannot be packed and shipped against it. Buyers do not order by your item names. A retail chain prints its own vendor item number and a short description, so the value on the PDF is rarely the name or SKU in your item list. Users in the Zoho community have also reported sales order imports matching items by name rather than by SKU, which makes small naming differences matter. The fix is a mapping step before the import: keep a sheet per buyer that turns their item code into your exact Zoho item name, and run the extracted part column through it. Do the same for the customer, so every order lands on the existing customer record instead of a near-duplicate. Test with a two line order first and open it in Zoho to confirm both lines show stock.
Teams that outgrow the import screen post orders through the Zoho Inventory API. Creating a sales order is a POST to the salesorders endpoint with your organization ID, under the ZohoInventory.salesorders.CREATE scope. The body needs a customer_id and line_items, and each line refers to an item_id. Those are Zoho internal IDs, not the names or codes printed on a purchase order, so any script needs a lookup from the buyer values to your Zoho IDs before it can post. The extracted JSON from the purchase order API gives that script clean header and line values to look up, which is the hard part of the job. PurchaseOrders does not connect to Zoho or post orders itself.
A single retail PO often ships to one distribution center, but some buyers send one PO per store or a PO with a ship-to per line. Because the ship-to block comes back as separate fields, you can filter by location in the spreadsheet and split one document into several Zoho sales orders when your process needs one order per destination. If you fulfill from more than one warehouse, set the location on the order before you confirm it so packages are created in the right place. Notes printed on the PO, such as a dock appointment, a routing guide reference or a must-ship-by date, come back as text you can paste into the order notes.
The math is simple for a brand or distributor on Zoho Inventory. If the order desk keys 15 wholesale POs a day at 12 lines each, that is 180 lines typed by hand, every one a chance to transpose a quantity or pick the wrong item. Extraction does not remove review, but it turns typing into checking. Teams with a morning pile of attachments use bulk purchase order upload to clear up to 50 files at once. The same workflow on other systems is on the Fishbowl sales order import and Odoo sales order import pages, and the wider picture is on sales order entry automation.
What comes off the customer document and where it goes on a Zoho sales order. Download the sample file from your own Import Sales Orders screen and match its column names before the first import.
| Zoho sales order field | Where it comes from | Notes |
|---|---|---|
| Sales Order Number | Not on the document. Tick auto-generate on import. | Your number, not the buyer number |
| Sales Order Date | The PO date on the document. | Check the date format on import |
| Customer Name | The buying company, mapped to your exact Zoho customer. | Avoid near-duplicate customers |
| Reference | The purchase order number the customer printed. | What the buyer quotes back |
| Expected Shipment Date | The ship-by or delivery date on the PO. | Often printed per line |
| Shipping Address | The ship-to block on the PO. | Split into street, city, state, ZIP |
| Item Name | The buyer item code, mapped to your Zoho item. | Must exist in Zoho Inventory |
| Quantity | Quantity on each line. | Plain number, no commas |
| Rate | Unit price on the PO. | No dollar sign |
| Notes | Instructions printed on the PO. | Dock times, routing references |
Four steps from the customer attachment to sales orders in Zoho Inventory.
Drop in the PDF, the scan or the email attachment. Up to 50 files per bulk upload, with no per-buyer setup.
Tip: Portal downloads and forwarded attachments work the same way.
Check the header and lines on screen, then map each buyer to your Zoho customer and each buyer item code to your Zoho item name.
Tip: Keep one mapping sheet per buyer and reuse it.
Download the spreadsheet, match the column order of the Zoho sample file, strip dollar signs and commas from numbers and save as CSV under 1 MB.
Tip: Zoho Inventory does not import XLSX sales orders.
Run Import Sales Orders, tick auto-generate for the number, save the mapping and read the preview for skipped rows before you import.
Tip: Test a two line order first and check stock on both lines.
Open the Sales Orders tab, click the menu icon in the top right corner and choose Import Sales Orders. Upload a CSV or TSV file under 1 MB, pick the encoding, choose whether to auto-generate sales order numbers, check the field mapping, read the preview and import.
CSV or TSV only, with UTF-8 as the default encoding and a maximum file size of 1 MB. Zoho Inventory exports sales orders to CSV or XLS, but an XLS or XLSX file will not import, so save the file as CSV first.
Yes. Turn on the Sales Orders module in Settings under General, then go to Sales, Sales Orders, More and choose Import Sales Orders. Zoho Books accepts CSV, TSV or XLS and lets you auto-generate the sales order number and save the field mapping for later imports.
One of them, not both. Zoho states that when the two are integrated, imports and changes sync automatically. Importing the same batch into Books and Inventory creates duplicate sales orders, so pick the app your order desk works in and import there.
Most teams keep it in the Reference field and let Zoho auto-generate the sales order number. That way your numbering stays in sequence and the buyer PO number carries through to packages, shipments and the invoice, where the customer expects to see it.
Usually because the item value in the file is not the exact item in Zoho. Buyers print their own codes and descriptions, and users have reported imports matching on item name rather than SKU. Map every buyer code to your exact Zoho item name before importing and test with two lines first.
Not through the sales order import, which reads structured CSV or TSV rows. A customer purchase order that arrives as a PDF has to become rows first, typed by hand or extracted, before Zoho Inventory can create the sales order.
Yes. POST to the salesorders endpoint with your organization ID and the ZohoInventory.salesorders.CREATE scope. The body needs a customer_id and line_items that reference item_id values, which are Zoho internal IDs, so a script has to look them up from the buyer values first.
No. PurchaseOrders reads the customer purchase order and returns structured data as Excel, CSV or JSON. It does not connect to Zoho Inventory or Zoho Books or post orders. You load the rows through the Zoho import screen, the Zoho API or your own integration.
Supplier POs into Zoho Books.
The same workflow in QuickBooks.
The same workflow on Fishbowl.
The same workflow on Odoo.
The full order entry workflow.
Reading customer orders with AI.
Choose your plan