Create products, services, and inventory items

In QuickBooks Online, your customers create items to represent the products and services they sell. This lets them quickly save and add items to sales forms, such as invoices and sales receipts. If they have certain versions of QuickBooks Online, they can create inventory-type items to count and manage inventory directly in QuickBooks Online.

We’ll show you how to use your app to create items (i.e., products and services) and briefly cover managing inventory in a customer’s QuickBooks Online company file.

Step 1: Learn how items and inventory work in QuickBooks Online

If you need additional background information, see Items and inventory in QuickBooks Online.

How to handle inventory between your app and QuickBooks Online

Depending on how your app manages inventory, there are a couple ways to make sure it stays in sync with QuickBooks Online:

Learn about the QuickBooks Online inventory cost accounting model

QuickBooks Online follows a FIFO model for inventory cost accounting. More information is here.

Step 2: Enable inventory features

If you don’t want to enable inventory features for your customers, or they don’t have a version of QuickBooks Online that supports inventory, you can skip this section.

Before you start, check to see if a customer already has inventory features enabled. Use the preferences entity to see if Preferences.ProductAndServicesPrefs attributes.

To enable inventory, set these flags to true:

After enabling inventory, you can add inventory items using the item entity.

Note

Important: Inventory features aren’t enabled by default. Enabling inventory requires you to change customer’s QuickBooks Company preferences. It’s best practice to ask users to change these settings themselves, rather than doing so through your app.
Step 3: Learn how accounts connect to items

All items - inventory, non-inventory, and services - are connected to finanical accounts in QuickBooks. These track the value of items in inventory, the money made from the sale of those items, and any associated expenses.

Below are basic fields you may see that indicate how an item is connected to an account:

Field Description
Name The name of the item. This must be unique across items. Tip: Query items by name to see if they already exist before creating new ones.
IncomeAccountRef References the income account that tracks the sale of an item. The account type must be Sales of Product Income.
ExpenseAccountRef Reference the expense account that tracks payments to vendors for buying an item. The account type must be Cost of Goods Sold.
AssetAccountRef Reference the inventory asset account that tracks the current value of a company’s inventory. If the same account is used for all inventory items, the balance will represent the current total value of all items in inventory.
Type Specifies the item type. Learn more about item types.
Step 4: Create products, services, and items

Use the item entity to create a product or service.

Here’s an example POST request to create an “office supplies” inventory item:

Operation: POST https://quickbooks.api.intuit.com/v3/company/<realmId>/item Content type: application/json

Sample request body

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
    "Name": "Office Supplies",
    "Description": "This is the sales description.",
    "Active": true,
    "Taxable": true,
    "UnitPrice": 25,
    "Type": "Inventory",
    "IncomeAccountRef": {
       "value": "79",
       "name": "Sales of Product Income"
    },
    "PurchaseDesc": "This is the purchasing description.",
    "PurchaseCost": 35,
    "ExpenseAccountRef": {
       "value": "80",
       "name": "Cost of Goods Sold"
    },
    "AssetAccountRef": {
       "value": "81",
       "name": "Inventory Asset"
    },
    "TrackQtyOnHand": true,
    "QtyOnHand": 10,
    "InvStartDate": "2013-02-19"
}

View Sample Response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
    "Item": {
       "Name": "Office Supplies",
       "Description": "This is the sales description.",
       "Active": true,
       "FullyQualifiedName": "Office Supplies",
       "Taxable": true,
       "UnitPrice": 25,
       "Type": "Inventory",
       "IncomeAccountRef": {
          "value": "79",
          "name": "Sales of Product Income"
       },
       "PurchaseDesc": "This is the purchasing description.",
       "PurchaseCost": 35,
       "ExpenseAccountRef": {
          "value": "80",
          "name": "Cost of Goods Sold"
       },
       "AssetAccountRef": {
          "value": "81",
          "name": "Inventory Asset"
       },
       "TrackQtyOnHand": true,
       "QtyOnHand": 10,
       "InvStartDate": "2013-02-19",
       "domain": "QBO",
       "sparse": false,
       "Id": "36",
       "SyncToken": "0",
       "MetaData": {
          "CreateTime": "2015-04-17T15:21:09-07:00",
          "LastUpdatedTime": "2015-04-17T15:21:10-07:00"
       }
    },
    "time": "2015-04-17T15:21:09.688-07:00"
}

Let’s review a few fields. The type field is set to inventory. This means the item is a product and not a service. The product is an inventory type item, rather than a non-inventory item.

Also look at assetAccountRef and trackQtyOnHand. You can see the asset account is Inventory asset. This is what QuickBooks uses to track the total value of all inventory items.. The quantity tracking field is set to true and shows a starting value of 10 items.

Note: If you use categories to define inventory items, take extra care when parsing. These add additional data points and complexity.

Step 5: Add items to sales forms

Here’s how to create invoices and add items to them.

Remember, when you add inventory type items to invoices, sales receipts, purchase orders, or refund transactions, QuickBooks automatically adjusts the quantity on hand.