Who can use this: Owner, Manager, Accountant. URL / Route:
/finance/inventory/items(finance.inventory.items.index). Detail pages:finance.inventory.items.show,edit,create,store,update,destroy. Search endpoint:finance.inventory.items.search. Price resolver:finance.inventory.items.resolve-price. Plan / feature gate:feature:tracker.manage_items(default: enabled). Permissions:inventory.items.view,inventory.items.manage. Categories useinventory.categories.view/inventory.categories.manage. Units useinventory.units.view/inventory.units.manage. All four require the org-levelinventory_enabledflag (see Inventory).
Purpose
The Items list is where you define everything you sell or buy: services (a fixed-price hour of consulting), stocked products (something you keep on a shelf), and non-stocked products (something you buy on demand and pass through). Quotes, invoices, sales orders, bills, expenses, and purchase orders all line-pick from this list.
Step by step
Browse items
- Open
/finance/inventory/items. Each row shows item code (SKU), name, type (Service / Stocked / Non-stocked), category, unit, sales price, purchase price, on-hand quantity (stocked only), and status. - Search by code or name; filter by type, category, status.
Create an item
Route: finance.inventory.items.create / finance.inventory.items.store. Permission: inventory.items.manage.
- Click New item.
- Pick Type:
- Service — no stock, no on-hand quantity, no COGS. Use for billable hours, subscriptions, fees.
- Stocked — Solabooks tracks on-hand quantity and posts COGS when sold.
- Non-stocked — a physical good you buy as needed; no stock tracking, but COGS is still posted from the purchase price.
- Enter Code (SKU), Name, optional Description.
- Pick Category (
finance.inventory.categories.*) and Unit (finance.inventory.units.*). - Set Sales price and Purchase price in your base currency.
- Map Sales account and Purchase / Expense account — these are the GL accounts used when this item appears on a document.
- Stocked items only: set Inventory account, COGS account, and Reorder point if
inventory.reorder_pointis on. - Pick Sales tax and Purchase tax defaults.
- Save.
Edit an item
Route: finance.inventory.items.edit / update. Permission: inventory.items.manage.
You can change name, description, prices, accounts, and category. Once an item has stock activity, you cannot change the Type.
View an item
Route: finance.inventory.items.show. Permission: inventory.items.view.
Shows current sales price, purchase price, current stock (if stocked), recent transactions, and a sales history chart.
Resolve a price
Route: finance.inventory.items.resolve-price (GET). Used by other forms (invoices, sales orders) to ask "what is the actual price for this item, given this customer / quantity / price list?". Returns the price after applying the customer price list, customer-group rules, quantity tiers, and pricing rules.
Delete an item
Route: finance.inventory.items.destroy. Permission: inventory.items.manage. Allowed only when the item has zero references on any document and zero stock.
Service vs Stocked vs Non-stocked
| Setting | Service | Stocked | Non-stocked |
|---|---|---|---|
| Tracks quantity on hand? | No | Yes | No |
| Has reorder point? | No | Yes (if inventory.reorder_point on) |
No |
| Posts COGS when sold? | No | Yes | Yes |
Available when inventory_enabled = false? |
Yes | No | No |
| Where it shows up on the P&L | Income only | Income + COGS | Income + COGS |
If your organization has the inventory_enabled flag turned off, only Service-type items can be created.
Pricing add-ons
If your plan includes them and the matching feature flag is on:
- Price lists (
price_lists): a named list of overrides. Assign per customer or pick at line entry. - Multiple price lists (
multiple_price_lists): more than one list per organization. - Customer-group pricing (
customer_group_pricing): a discount tier shared by all customers in a group. - Pricing rules (
pricing_rules) and advanced pricing rules (advanced_pricing_rules): condition-based rules ("if customer is in group A, this item is 10% off"). - Quantity pricing (
quantity_pricing): tiered prices that activate above a quantity threshold.
These are configured under Settings. The Resolve price endpoint composes all of them in the right order.
Common mistakes
- Wrong type at creation. Type is locked once stock activity exists. If you picked Service but the item should be Stocked, you'll need a new item — archive the old one to keep history.
- No COGS when selling. The item is Service or Non-stocked. Switch to Stocked if you want full inventory tracking — only possible before any transaction.
- Item missing from picker on invoices. The item is archived — un-archive from its Edit page, or check the type matches the document (Service items don't appear on stock-only pickers).
- Default tax doesn't apply. Tax defaults flow into new document lines but every line is still editable. If your accountant overrode the tax on one line, that's a per-line decision, not an item-default bug.
- Stocked item shows on documents but on-hand never changes. The line was entered as an Account line, not an Item line. Pick the item from the dropdown — not just type the description.
Tips
- The SKU field is searchable via Global search — handy for warehouse / barcode-style workflows.
- The item's Transactions tab is the fastest audit trail for "where did this price come from?" questions.
- Use the Sales price and Purchase price to default the entire line — both are editable per-document.
Behaviour and rules
- The Item type is locked after first stock movement; the Sales/COGS account choice can still change but won't backfill existing postings.
- An item without a Sales account cannot appear on an invoice; without a Purchase account it cannot appear on a bill.
- Sales tax / Purchase tax defaults flow into new lines but every line remains editable.
- Stocked items respect the global Inventory accounting method (FIFO or weighted-average, set per organization).
Permissions / restrictions
- View list and detail:
inventory.items.view. - Create / edit / delete:
inventory.items.manage. - Categories and Units have their own permissions (
inventory.categories.*,inventory.units.*). - All of the above also require the org-level
inventory_enabledfeature, except that Service-type items still work wheninventory_enabled = false.
Related
- Inventory — stocked-item on-hand, costing layers, reconciliation.
- Quotes, Sales orders, Invoices, Sales receipts — items appear on every AR document.
- Bills, Expenses, Purchase orders — items on AP documents.
- Pricing & price lists — price-list overrides, customer-group pricing, quantity tiers.
- Reports — Sales by Item, Purchases by Item, Stock Valuation, COGS Detail.
- Settings — categories, units, pricing rules.