You can upload bulk order data directly into Shippit using a CSV (comma separated values) file. This is especially useful if you have a highly customised or bespoke workflow that doesn't integrate directly with the Shippit platform. This can help to save you time, and minimises the need for manual data entry, helping to reduce errors.
You can download the sample CSV file at the bottom of this article to use as a starting point.

This article guides you through the various formats and fields to use for a successful CSV upload. For general information and best practices about using CSV, see the understanding CSV and FTP article. For instructions about using an FTP server, see the uploading from FTP article.
All valid CSV files are supported, with values comma separated. Each order is defined by its unique order_id, which can span multiple rows for orders with multiple items or packages. For more information about how to submit files with more complicated package types, including pallets and orders with multiple packages, see the section later in this article.
Make sure your uploaded CSV does not have duplicate columns with the same header. If you import a file with duplicate headers, it could return an error, or you might find that the first column is uploaded, but all subsequent columns are ignored.
Field name | Field type | Example | Details | Required? |
|---|---|---|---|---|
| order |
| Any internal reference number for the order from your source system. | Required |
| order |
| The invoice number for the order from your source system. | Optional |
| order |
| If set to `yes`, address validation must pass before the order is accepted. | Optional |
| order |
| If set to `yes`, tracking updates are not sent to the recipient for this order | Optional |
| order |
| Any delivery instructions to provide to the carrier | Optional |
| order |
| Whether or not the package has authority to be left at the recipient\'s address | Optional |
| order |
| The carrier service level to use for this order | Optional |
| order |
| The carrier string to allocate this order to | Optional |
| order |
| If using a collection point, the ID of the collection point to deliver to | Optional |
| order |
| If using a collection point, the name of the collection point to deliver to | Optional |
| order |
| For on demand and priority orders, the delivery date selected by the recipient | Optional |
| order |
| For on demand and priority orders, the delivery window selected by the recipient | Optional |
| order |
| The currency to use for all amounts in this order | Optional |
| order |
| The amount charged for shipping costs | Optional |
| order |
| The amount to be collected by the carrier before delivery can be completed | Optional |
| order |
| The amount of tax charged on this order | Optional |
| order |
| The name of the company to deliver the package to | Optional |
| order |
| The first line of the address to deliver the package to | Required |
| order |
| The suburb to deliver the package to | Required |
| order |
| The district or city to deliver the package to | Required |
| order |
| The state to deliver the package to | Optional |
| order |
| The postcode of the suburb or city to deliver the package to | Required |
| order |
| The full name of the person receiving the package | Optional |
| order |
| A phone number for the person receiving the package | Optional |
| order |
| The two-letter language code to use in communications with the receiving the package | Optional |
| order |
| The first name of the person placing the order, which might be different to the package receiver. | Optional |
| order |
| The surname of the person placing the order, which might be different to the package receiver. | Optional |
| order |
| The email address of the person placing the order, which might be different to the package receiver. | Optional |
| order |
| For international orders, the amount of duties charged on this order | Optional |
| order |
| For international orders, the reason the goods are being exported. For a list of valid export reasons, see the Developer Guide. | Optional |
| order |
| For international orders, the incoterm to apply to this order. For a list of valid incoterms, see the Developer Guide. | Optional |
| order |
| For international orders, the tax ID type to apply to this order. For a list of valid tax IDs, see the Developer Guide. | Optional |
| order |
| For international orders, the two-letter country code associated with the tax ID for this order. | Optional |
| order |
| For international orders, the number of the tax ID for this order. | Optional |
| order |
| For international orders, the number of the ID for the recipient of this order. | Optional |
| order |
| For international orders, the amount being charged for freight on this order. | Optional |
| order |
| For international orders, if set to `yes`, the customs documents need to be printed out on paper. | Optional |
| order |
| For international orders, the name of the cross-border provider facilitating the shipment, such as Zonos or Global-e. | Optional |
| order |
| For international orders that use a cross-border provider, the reference number used by that provider. | Optional |
| line item |
| An internal reference used to identify the product being shipped, such as the order ID. | Optional |
| line item |
| The SKU of the product being shipped | Optional |
| line item |
| The name of the product being shipped | Optional |
| line item |
| The weight of the item, in kilograms | Optional, not used if any package fields are set. |
| line item |
| The length of the item, in centimetres | Optional, not used if any package fields are set. |
| line item |
| The width of the item, in centimetres | Optional, not used if any package fields are set. |
| line item |
| The depth of the item, in centimetres | Optional, not used if any package fields are set. |
| line item |
| The total number of the product ordered | Optional |
| line item |
| The total number of the product being shipped | Optional |
| line item |
| The retail price of the product being shipped | Optional |
| line item |
| The cost price of the product being shipped | Optional |
| line item |
| The retail price of the product being shipped | Optional |
| line item |
| The warehouse location of the product being shipped | Optional |
| line item |
| The dangerous goods code of the product being shipped | Optional |
| line item |
| The text description of any dangerous goods being shipped | Optional |
| line item |
| For international orders, the two-letter country code for the country of origin of the product being shipped. | Optional |
| line item |
| For international orders, the tariff or HS code of the product being shipped | Optional |
| line item |
| For international orders, the MID code of the product being shipped | Optional |
| package |
| For track-only or return orders, the consignment or label number. | Required for track-only orders. |
| package |
| The product line ID of the product being shipped. | Optional |
| package |
| Use only to indicate a pallet package type. For all other package types, leave blank. | Required for pallets. |
| package |
| The charged weight of the entire package, in kilograms | Optional |
| package |
| The length of the package, in centimetres | Optional |
| package |
| The width of the package, in centimetres | Optional |
| package |
| The depth of the package, in centimetres | Optional |
You can use a CSV file to upload orders with multiple products or different package types, like pallets.
To do this, use the exact same order_id for every row that belongs to that order. Shippit reads these rows together as one single shipment.
💡NOTE: You don't need to match individual products to specific packages in your file. Shippit totals all product and package data it finds for that order_id.
Shippit groups your rows by order_id and applies different logic based on the field type:
Order-level fields: Details like the delivery address, receiver contact information, and carrier settings are read from the first row only. Any different information in later rows for the same order_ID is ignored.
Line item fields: These define the products you are shipping, and includes information like sku, title, and price. Each unique product in your order must have its own row.
Package fields: Fields prefixed with package_ (like weight, length, or type) describe the physical parcels or pallets. These are independent of your products and can be added to any available row within the order_id group. You can include a maximum of 100 packages or pallets in a single order.
You don't need to match individual products to specific packages in your file. Shippit totals all product and package data it finds for that order_id.
If you are shipping pallets or an order where the number of physical packages exceeds the number of products, add extra rows for that order_id.
Package-only rows: For these extra rows, populate the package_ fields and leave the product or item fields blank.
Package limit: You can include a maximum of 100 packages or pallets per single order.
Independent collections: We treat line items and packages as two separate lists for the same order. They are not linked to specific rows, so you don't need to worry about which product is inside which package in the CSV.
When you upload your file, Shippit follows this workflow:
Groups all rows with a matching order_id.
Captures the delivery destination from the first row.
Collects every unique item listed across all rows in that group.
Collects every package or pallet listed across all rows in that group.
If you have an order with three unique products and two physical packages, you can format your CSV in a couple of ways. Because Shippit treats items and packages as two independent collections, you don't need to specify which product is in which box.
Option 1: Using three rows
In this example, you use the minimum number of rows required by your item count. Since you have three products, you use three rows. You can then fill in the package details on the first two rows and leave the third package field blank:
order_id | sku | title | package_weight |
| SKU-A | Red Shirt | 2.5 |
| SKU-B | Blue Pants | 1.8 |
| SKU-C | Green Hat |
Option 2: Using five rows
If it's easier for your team to keep data separate, you can put each unique entity on its own row:
order_id | sku | title | package_weight |
| SKU-A | Red Shirt | |
| SKU-B | Blue Pants | |
| SKU-C | Green Hat | |
| 2.5 | ||
| 1.8 |
Regardless of which option you choose, Shippit processes 0123456789 as a single shipment containing all three items, packed into two parcels.
When you have created your CSV file, you can upload it to your Shippit account and see your order in the New Orders page.
💡NOTE: Always use the template linked at the bottom of this article as your starting point. This ensures all required fields are present and correctly ordered. For more information on best practices for CSV uploads, see the understanding CSV uploads article.
Log in to your Shippit account, and navigate to Settings → Integrations.
In the Select an integration section, click CSV/FTP.
Check Upload via the Web Interface and click Continue.
Click Upload orders CSV file
Click Choose file and navigate to the CSV file you have stored on your local system. Click Upload orders to upload the chosen file. When your orders have been imported, they are available for confirmation and labelling in the New Orders page.
You can download this sample CSV file to use as a starting point: