Shopify counts inventory in whole numbers. It did when this article was first written in 2023 and it still does in 2026. If you sell fabric by the yard, candles by the ounce, or hardware by the half-box, you're modeling fractions on top of integers — and how you set that up determines whether your stock counts stay honest. Five things that matter, updated.
Everything downstream follows from the smallest quantity you're willing to sell. If that's a quarter yard, the quarter yard is the unit: a "0.25 yd" variant, priced at a quarter of your yard price, with quantity expressing length. An order for 2.75 yards is 11 units. Shopify's integer math stays correct because you moved the fraction into the unit definition.
Distinct cut sizes (0.25 / 0.5 / 1 yard) work as variants. But don't burn variants on every conceivable increment — the limit is 2,048 per product under the current product model, and a cluttered variant list is its own UX problem. For continuous quantities, a single base-unit variant plus a quantity selector beats a wall of pre-cut options.
Decide the rounding rule once and apply it everywhere: round the per-unit price so that (unit price × units per whole) lands within a cent of the whole-unit price, and state the per-unit price on the product page. Customers comparing your $10/yard fabric should see the $2.50 quarter-yard and immediately understand the math.
Here's where stores get burned: remnants. You sold 11 quarter-yards off a 60-yard bolt and now hold 57.25 yards. Shopify's inventory field can hold 57 or 229 (quarter-yards) but never 57.25 — and if your receiving, cutting, and waste tracking happen in yards, the conversion drifts. The fix is a true-decimal ledger outside Shopify — a Google Sheet or a metafield — that holds the real number, while a rounded-down integer syncs back to Shopify's inventory so the storefront never oversells. The no-app version of that sync runs on Matrixify and Google Sheets; the code version publishes the scripts.
The product title, the variant label, the cart line, the order confirmation — every surface should repeat the unit ("price per 0.25 yard, sold in 0.25-yard increments"). Most fractional-inventory support tickets are not inventory problems; they're a customer who thought quantity 3 meant 3 yards.
High order volume, multiple locations, or POS in the mix push past what a sheet-based sync handles cleanly. At that point the same logic moves into a small custom app — webhook-driven, decimal ledger in Postgres, integer sync to Shopify inventory — which is the shape of work Tom builds for merchants who've outgrown the workaround.
Email Tom with what you sell and the unit you sell it in — yard, ounce, board foot — and how orders come in today.
Email Tom →