On this page
Inventory items and units of measure
Every sellable, purchasable, or makeable thing is an item. Open Inventory → Items. Each item has:
- Code — short identifier (often the IMPS code for beef items: 112A, 189A, 193, etc.)
- Name — human-readable
- Default unit of measure — lb, oz, ea, case, kg
- Inventory tracking flag — whether stock levels are tracked or not (services are typically off)
- Default revenue and COGS accounts — used when invoices and inventory movements post journal entries
- Tax category — references your sales tax setup
Units of measure are configured under Inventory → UoMs with conversion factors between them. A common setup for beef: lb as the base, with a case-to-lb conversion (e.g. 1 case = 60 lb for a specific spec). Conversions are applied automatically wherever the UoM is converted.
Tracking stock movements
Every movement of inventory writes a row to the stock-movements table. Movement types include:
- Receipt — inventory in from a purchase order or production run
- Issue — inventory out to a sales order or transfer
- Adjustment — manual correction (cycle count, write-off, found inventory)
- Transfer — between locations / facilities within the same silo
The stock-movements ledger is the source of truth — the on-hand level at any point is computed from the sum of movements. View it under Inventory → Stock Movements; filter by item, location, date range.
Purchase orders and receiving
Standard PO flow:
- Create PO. Inventory → Purchase Orders → New. Pick the vendor, add line items, save as Draft.
- Send. Mark the PO Sent; this can trigger an email to the vendor.
- Receive. When the goods arrive, find the PO and click Receive. Confirm the quantities. The system posts a stock-movement receipt and creates a draft bill from the line items.
- Match bill to PO. When the vendor's bill arrives, it can be matched against the open PO. A three-way match (PO, receipt, bill) flags discrepancies — qty mismatch, price mismatch, missing receipt.
Inventory valuation methods
CashSheet supports two methods, set per item category under Inventory → Settings → Valuation:
- FIFO (First In, First Out) — sells the oldest layer first. Best for perishable goods where physical flow actually matches.
- Weighted Average — blends costs across all available stock. Best for fungible bulk goods.
The choice affects your COGS, your tax bill, and your reported margin — so it's not a trivial decision. See the blog post on inventory valuation for the full discussion. Changing methods mid-year requires a revaluation entry; the system guides you through it.
POS basics
The POS module is for retail / counter sales — restaurants, butcher counters, branded outlets. Open POS → Registers to manage your tills.
Per register, you configure:
- The location it's in (links to entity unit and inventory location)
- Accepted payment methods (cash, card, gift card, store credit)
- Sales tax (links to your tax setup)
- Receipt template
POS sales hit POS → Transactions. Reports on volume, top items, and reconciliation are under POS → Reports.
POS to accounting linkage
Every POS sale posts a journal entry the moment the customer pays — debit Cash (or Receivable for tab), credit Sales Revenue, debit COGS, credit Inventory. There's no end-of-day batch reconciliation; it happens in real time.
For multi-location POS, sales tagged with the register's entity unit roll up per-location for per-store P&L. Consolidated reporting is automatic at the entity level.
Sales tax
Sales tax is configured under Accounting → Sales Tax:
- Define tax authorities — state, county, city, special district.
- Define tax categories — food, alcohol, services, etc. Each category gets a rate from each authority that applies.
- Assign categories to items. Items inherit the right rate at the point of sale or invoice.
- At period-end, run the sales tax report. The numbers are pre-aggregated by authority for filing.
IMPS codes for beef items
If you're a beef processor, your inventory items will largely follow USDA's IMPS series 100 codes (112A Ribeye Lip-On, 189A Tenderloin PSMO, 193 Flank, etc.). The item code field on each inventory record is where you put it. See the blog post on IMPS 100 for the structure.
Using IMPS codes natively in your inventory records is the easiest way to keep buyer-facing communications aligned: the order says “112A”, the inventory record says “112A”, the invoice says “112A.” No translation step.