Skip to main content
Bulk Orders Feature

Importing and processing orders from a CSV

Jon Patch avatar
Written by Jon Patch
Updated this week

Offset's Bulk Orders feature allows you to upload a CSV of new orders into Offset directly, which can be paid for individually or in a single batch credit card transaction. The tool is available platform-wide and expedites the process of inputting a large number of orders.

The most common use-case for this feature is Corporate Gifting, where a client is purchasing a large number of Gift Orders.

NOTE: If you are using this tool for the first time, shoot us a message at [email protected] or through our in-app chat widget. We're happy to review your CSV to ensure it's properly formatted and assist with any processing questions to help ensure your orders are created properly.


Building your CSV

From the Gifting page (Orders > Bulk) click the red "Import Orders" button to download the most up-to-date CSV template to fill out. This template may evolve over time, so we always recommend downloading a fresh one.

Note: Make sure you're using the exact column headers and accepted formatting for the information you add to the CSV. See the Bulk Orders CSV Template Guide at the bottom of the doc for helpful notes and explanation of each column.

Confirming the Purchasing Customer's Details Before Uploading

Since the gift orders you're creating are most often going to be purchased by one customer (ie: your corporate client,) you'll want to ensure that the following information is added to the purchasing customer's account in Offset Commerce prior to uploading the CSV.

  • Name

  • Birthday (important for compliance)

  • The Credit Card they'll be using (if they're paying for the orders with a card)

Uploading Your CSV

As mentioned at the head of the article, if you haven't used this tool before we recommend you send us a copy of your CSV to review prior to uploading so we can review it and help ensure it's properly formatted. Once you have your CSV ready to go, click the "Import Orders" button and upload your CSV.

The list of uploaded orders that you will then see on the Bulk Orders page are draft orders. They can be freely deleted or edited prior to processing.

IMPORTANT: Unprocessed, uploaded orders are only drafts, but they DO hold inventory.

Spot Checking Uploaded Orders Before Processing

Before you process a large number of orders you should validate that the information you uploaded was interpreted by our import tool as expected.

The "View" button shows next to every uploaded draft order, and clicking it allows you to inspect the order details of a specific order prior to processing it. Pick an order and check that the details match what you have in your CSV.

You can edit a specific order from this screen (changes are saved automatically,) or simply review it to validate that the information you input on your CSV translated as expected. Clicking the "Save for later" button will return you to the Bulk Orders page. You can complete the individual order from there as well, if you'd like to process individually. If there is an issue affecting several of your orders, you will probably want to delete them all, fix the issue in your CSV, and re-upload.


Choose an Action: Payment Options

One Credit Card Transaction for Multiple Orders

The Gifting tool allows for the ability to create a single credit card transaction for a group of uploaded orders!

After selecting the option, the next screen will allow you to choose the customer's credit card and process the orders. After processing, you will see individual orders for each order in the Orders tab, and an additional order for the client for the full amount.

Under the hood, this is accomplished by charging the client for a customized-amount Gift Card, which is automatically applied to pay for each of the orders.

IMPORTANT: in order to use Process Selected Orders Using a Single Credit Card Transaction, you will first need to create a Gift Card Product (if you haven't already,) and you'll need to select it in Settings > More > POS, Admin, & Bulk so the Bulk Orders tool knows which one to use. See here for instructions.

Demo of Single Credit Card Transaction Workflow

Curious as to why and how Gift Cards are leveraged for our Bulk Orders tool? Check out the following demo video which covers the entire workflow of applying a single credit card transaction to multiple orders.

Bulk Orders Processing with Offline Payment

If you choose to collect payment outside of the Offset platform for orders, whether through ACH transfer or Check, we recommend creating a Gift Card Code for the corresponding amount and selecting the "Process Orders Using an Existing Gift Card Code" option in the action dropdown.

NOTE: if you are creating a Gift Card Codes for Offline Payment Order Processing, you don't need to create a Gift Card product in Offset Commerce.

Once you've uploaded and reviewed all your orders, select the orders you wish to process and then click "Process Existing Orders Using an Existing Gift Card Code."

You'll see a popup with the total summed amount of all the orders:

Leave this window open, open another tab and navigate to the Gift Card page in Offset (Incentives > Gift Card) click the + New Gift Card button and create a Gift Card for the amount under the client's name with your email address. This button essentially provides a way to create a Gift Card out of thin air, not tethered to a specific order.

IMPORTANT: We recommend adding your email address instead of the clients here, since the email address entered will receive a Gift Card Code email, which isn't relevant to this use-case and might be confusing to your client.

After you've created your Gift Card, copy the Gift Card code and paste it into the modal in the other tab to process and pay for the orders.

Demo of Bulk Orders Processing with Offline Payment Using a Gift Card Code

Creating Offline / Pay Later Orders Individually using the Payment Exempt Field in the CSV

In the CSV you can define if you'd like an order to be payment exempt. If you set all orders as exempt and select "Process Each Order Individually" the orders will be created as The tool will references the payment_id and payment_exempt fields on a per order basis.

Payment Exempt Limitations

The only downside to using the payment_exempt field in the CSV and processing individually (compared to the Gift Card approach outlined above,) is that once the orders are processed as Offline / Pay Later, they will still show as unpaid. You'll need to manually update them as paid. Please feel free to reach out to our support team with any questions.

Processing Orders with Individual Credit Card Transactions

If you opt to create separate credit card transactions for each order, and all are being placed by the same customer please have your client contact their credit card company within 24 hours of the individual charges being batch-processed, so the card doesn't get shut down mid-batch. The behavior of creating several identical back-to-back orders looks suspicious to credit card companies.


Bulk Orders CSV Template Guide

General Structure

When you're building your CSV, each SKU in an order will have its own row. If an order contains twelve bottles of one SKU, that order will have only one row. But if the order contains twelve different SKUs, that order will have twelve rows. The ID field tells the importer which rows belong together in the same order.

We recommend using ascending numbers for IDs (1, 2, 3, etc.) so you can easily identify how many total orders are in the CSV and later validate the total that were imported.

NOTE: The ID only serves the purpose of telling the importer which rows belong together in the same order on your CSV. It isn't saved. If you then choose to process the uploaded orders, they will receive a proper order ID.

Here's an example of how this might look in your CSV (highlights only included here to clarify visually how they are grouped.)

Notes For Properly Formatting your CSV

  • green = Required field

  • white = Optional

FIELD

NOTES

FORMAT ACCEPTED

IF LEFT BLANK

id

An ID you provide in the CSV that groups the rows (SKUs) of the orders. See the "General Structure" section above for more detail.

Alpha-numeric

customer_id

The ID of the customer who is purchasing the orders (not the recipient)

order_type

Defaults to Gift

sale_credit

Sales Agent. Should match spelling and case.

shipping_email

shipping_phone

shipping_first_name

shipping_last_name

shipping_birthday

YYYY-MM-DD

shipping_company

shipping_address

shipping_address_2

shipping_city

shipping_state

shipping_zip

shipping_country

US

sku

One SKU per row (see "general structure" notes above.)

quantity

Number of bottles of the SKU in the order

price

Price you want to charge for the SKU

22.49

Default product price

requested_ship_date

YYYY-MM-DD

gift_note

special_instructions

inventory_location

Must match exactly, spelling and case

Default inventory location

method_id

Shipping Method ID number, not name

6

override_shipping

Shipping amount to charge for the individual order

10.53

Default shipping price

payment_id

The payment ID is located in the customer payment method export

If processing individually, the default card is used. If processing in bulk payment, this field is ignored.

payment_exempt

See above article for offline payment strategies.

Yes/No

insurance

Include Shipping Insurance, if configured. Retail Only.

Yes/No

batch_code

Custom feature

NA

order_tag

Allows for a tag to be attached to the order once it is processed.

override_discount

A dollar amount discount for the order. This overrides any group discount the customer might have, or adds a discount if the customer has none.

If it is set to 0, then no discount is applied to the order.

5

Whatever the default order discount behavior based on the customer (purchaser) groups applies

email_template

If you would like to send individual order emails to the purchasing customer, the options are:
"receipt" (Standard Email Receipt)
"receipt-hospitality" (Hospitality Email Receipt)
"none" (No Email Sent)

See column B

Default if blank is "none"

Did this answer your question?