Skip to content

Items, products and services

Is an item optional, required, or a subsystem? Xero treats items as a convenience most invoices ignore. QuickBooks makes them the required mechanism for sales lines. NetSuite makes them a costing subsystem with a dozen record types.

Concepts
7
Divergences
2
Structural
0

Endpoints

Xero

GET /Items

One object, a flag for inventory

QBO

SELECT * FROM Item

Type discriminates

NetSuite

inventoryitem, serviceitem, …

A record type per item kind

The same concept in three vocabularies

Read across a row. Where a cell is absent, the concept has nowhere to live in that system — which is a design constraint, not a gap to paper over.

NativeNative
— A field or object exists for it
PartialPartial
— Exists with a caveat that changes what you can build
DerivedDerived
— Not stored — you compute it
AbsentAbsent
— Nothing in the API
Items, products and services fields compared across Xero, QuickBooks Online and NetSuite
ConceptXeroQBONetSuite
Type model
Partial

One object

IsTrackedAsInventory flag

Native

Type

Inventory, NonInventory, Service, Group (a bundle in the UI), Category

Native

Many record types

inventoryitem, noninventoryitem, serviceitem, assemblyitem, kititem, itemgroup…

Code
Native

Code

Unique, user-facing

Native

Name / Sku

Native

itemid

Sales posting
Native

SalesDetails.{UnitPrice, AccountCode, TaxType}

Native

IncomeAccountRef, UnitPrice

Native

incomeaccount + pricing sublists

Purchase posting
Native

PurchaseDetails.{UnitPrice, COGSAccountCode}

Native

ExpenseAccountRef, PurchaseCost

Native

expenseaccount / cogsaccount

Inventory
Partial

InventoryAssetAccountCode, QuantityOnHand

Average cost only

Partial

AssetAccountRef, QtyOnHand, InvStartDate

FIFO

Native

Locations, bins, lots, serials, costing methods

Hierarchy
Absent

—

Partial

Category items + ParentRef

Native

parent, matrix items

Required on a sales line
Native

No

Partial

Effectively yes

Partial

Yes

What actually differs, and what you do about it

A difference stated without a response is trivia. Each of these carries the handling.

Sharp edge

Writing an invoice to QuickBooks may mean creating items

QBO

If your source model carries accounts and not items, every QBO invoice write needs an item that points at the intended income account. Created on the fly, one per account, those items accumulate in the customer's product list and appear in their own reports.

Do — Provision a small, clearly named set of integration items up front, map account to item explicitly, and show the mapping in the connection settings rather than hiding it in the adapter.

Sharp edge

Inventory valuation is not comparable across the three

Xero · QBO · NetSuite

Xero is average cost, QBO is FIFO, NetSuite is configurable per item and per location. The quantity on hand is comparable; the value is not, and neither is the cost of goods sold that flows from it.

Do — Never present an inventory value as a cross-source aggregate without stating the costing method per source. Quantities may be summed; values may not.

The type the components consume

items.ts
type Item = {
  id: string;
  code?: string;
  name: string;
  kind: "service" | "inventory" | "non_inventory" | "bundle" | "category";
  sales?: { unitPrice?: Money; accountId?: string; taxCode?: string };
  purchase?: { unitCost?: Money; accountId?: string };
  inventory?: { assetAccountId?: string; quantityOnHand?: string; costingMethod?: string };
  active: boolean;
  source: SourceRef;
};

What this changes in the interface

The payoff. Every difference above that reaches the surface, and what the component does about it.

Item requiredness varies by source
InvoiceForm reads capabilities.lineTarget. On 'account' it shows an account picker; on 'item' an item picker; on 'both' it shows both with one primary.
Costing methods differ
Any inventory value shown across sources is labelled per source. A single consolidated inventory value is not offered, because it would not mean anything.

Where the accounting is explained

What consumes this payload

The normalised object above is what the components read. These are the surfaces it feeds, the words for the concepts in it, and the document that explains the accounting.

Compared acrossXero docsQuickBooks Online docsNetSuite docs

Works in your QuickBooks Online or Xero file

Get your books closed every month

Lopifi is building AI bookkeeping that keeps your books closed on US GAAP as transactions happen, with a CPA review every quarter, for $200 a month. We’re not open yet.

$200/month when we open. No card now.