Sell-A-Bit User Guide

Sell-A-Bit — User Guide

What Sell-A-Bit does

Lets you sell products by pre-defined units (Pounds/Ounces, Meter/Centimeter, etc) or custom portion — whatever fits the product. Once a product is set up, customers can buy it in preset amounts on your online store, and staff can ring it up the same way — or enter a custom amount — on Shopify POS.

Products you want to use Sell-A-Bit for can be defined on the Products page, or can be included in groups by product type as well as including individual products.

Typical uses:

  • Candy, bulk foods, or spices sold by the ounce/gram
  • Ribbon, rope, or fabric sold by the foot/inch or meter/centimeter
  • Liquids sold by the fluid ounce or millilitre
  • Anything sold in "portions" — a chunk, a scoop, a slice — at either a per-portion rate or a flat price for a specific portion count

One price, every feature, every plan

Sell-A-Bit doesn't paywall individual features behind add-ons, and nothing here requires Shopify Plus. Portion selling, custom units, rule groups, POS, and penny-accurate pricing on both online and in-person sales are all included at the one subscription price — no per-feature upgrades, and nothing that stops working (or never worked to begin with) if your store isn't on Plus. The pricing-correction discount in particular relies on Shopify's Discount Function API, which is available on every plan; it's not built on anything Plus-gated.

Core concepts

Unit systems

A unit system defines the unit you price in (e.g. Pound) and the subunit you actually sell in (e.g. Ounce), plus how many subunits make up one unit (16 oz per lb). Sell-A-Bit ships with six predefined systems:

Unit Subunit
Pound Ounce
Kilogram Gram
Foot Inch
Meter Centimeter
Gallon Fluid ounce
Liter Milliliter

The subunit is the smallest amount a product can be sold in — there's no finer fraction of it. If you need a smaller increment than a predefined system offers (e.g. half-ounce steps), define a custom unit instead, with the subunit set to that smaller amount (Settings → Custom units).

Amount presets vs. portion presets

There are two different kinds of preset button, and they work differently on purpose (redesigned in 2026, after the two being treated as interchangeable turned out to be the source of several confusing bugs):

  • Amount presets are pure shortcuts. Tapping "8 oz" just fills in "8" — it's completely identical to typing that number by hand. An amount preset has no price or discount of its own; every by-amount sale (typed or preset-tapped) prices off the product's normal per-unit rate and whatever by-unit volume discount tiers you've configured.
  • Portion presets are curated, individually named/priced options — the tool for "a chunk," "a scoop," "3-piece box," or "1 blenderful of spider eggs." Each one references one of the product's own portion types (a name plus a conversion to subunits, e.g. "piece" = 4 oz; defined once, reused by any number of presets) and adds its own count, name, and optionally its own flat price and volume-discount override. There's no typed/custom entry for portions — a customer or staff member always picks one of the named options you've set up, since without one shared "how big is a portion" rate, there's nothing for a typed number to mean.

Curated/bundle pricing (a flat price, a "buy N or more" discount) only ever lives on a portion preset now — an amount preset can never carry either. If you want a specific amount to have its own fixed price or its own discount, set it up as a portion preset instead, even if you think of it in the same unit as your regular by-amount sales (e.g. a portion preset can use the same unit system's subunit as its own conversion rate — "1 portion = 1 oz" — if you just want a specially-priced single-ounce option alongside plain by-the-ounce sales).

When both amount and portion selling are turned on for a product, POS behavior → Default view on POS controls which one staff see first when they open that product — they can always tap over to the other one from there. Only affects POS; the online store shows whichever presets are configured, with no mode to default.

Custom amount entry

By default, a product's presets are the only way to buy it — but a Custom amount entry setting (in the product's own Selling options) lets someone type any amount instead, independently for POS and for the online store. POS has always allowed this; it defaults off for the online store, so nothing changes there unless you turn it on. Turning it off for a channel still leaves that channel's preset buttons working as normal — it only removes the free-typed option. This only ever applies to amount presets/ typed amounts — there's no equivalent free-typed entry for portions on either channel; portions are always picked from your named presets.

Per-channel presets

Every preset — an amount preset or a portion preset — has its own Available on POS / Available online checkboxes, so you can offer a different set of presets on each channel (e.g. a bulk "5 lb" preset only makes sense as a POS option, not on a retail product page). Unchecking both simply removes that preset everywhere without deleting it. Existing presets stay visible on both channels, same as before, until you change them.

Portion types and presets: naming, pricing, and flat pricing

Portion selling is defined in two levels:

  • Portion types — defined once per product, each is just a name (e.g. "piece," "blenderful") and how many of the product's base subunits make up one of it (e.g. "piece" = 4 oz). A product can define several types with completely different rates; there's no shared "portion size" at the product level.
  • Portion presets — the actual buyable options, each choosing one of the product's portion types and adding how many of it (e.g. "3 piece box" = the "piece" type × 3). Several presets can reuse the same type with different counts (e.g. "1 piece," "3 piece box," and "dozen" can all reference one "piece" type) instead of re-entering its conversion rate each time.

Since presets no longer share one product-level label, the name you give each preset is the main way customers and staff tell them apart — worth actually naming rather than leaving generic. Each portion preset has:

  • A name shown to customers/staff (e.g. "3 piece box," "1 blenderful of spider eggs") — the primary identifier. Leave it blank to fall back to a generic "N {type}(s)" text built from the count and the chosen type's name.
  • How many, and which portion type it's built from.
  • Optionally, a flat price that overrides the normal per-unit rate for that specific preset — useful for bundle pricing ("3 for $4") that doesn't have to match the straight per-unit math.

If a flat price is set above what the per-unit rate would work out to for that amount, you may notice the product's stored per-unit price (visible on its product page) is a little higher than a straight price per unit ÷ subunits calculation would suggest. That's intentional: a sale can only ever be corrected down to the right price, never up, so the stored rate is padded just enough to cover your highest flat preset. It doesn't change what anyone's actually charged — every sale is still corrected to its true price — it only affects that one internal number.

Volume discounts

A product can carry volume discounts at two levels:

  • Overall, by unit — one or more graduated tiers for the product: a percentage or fixed amount off once the amount bought (in subunits) reaches a threshold ("10% off 5 lb or more, 15% off 10 lb or more"). Configure them on the product's own settings page, adding as many tiers as you need. Only the single highest tier the amount qualifies for applies — tiers don't stack on top of each other. Applies to a typed custom amount and to a plain preset alike, based on however much was actually bought — including on the online store now that presets there can trigger it too. Online, separate cart lines of the same product count toward the threshold together: two 8 oz lines in the same cart reach a "16 oz or more" tier even though neither line alone would, and the checkout recalculates this against the whole cart every time, so removing a line walks the discount back automatically. (A line sold at a flat-price preset stays out of this pooling, per the exemption above.) Two exceptions: a preset with its own override (see below) always uses that instead, and a flat-price preset never gets these tiers layered on top, since its price was already deliberately fixed by you — a "10% off over 32 oz" tier meant for loose bulk buying shouldn't sneak an extra discount onto an already-curated "3-piece box" bundle just because its amount happens to cross that same threshold. On POS, buying the same product across more than one sale counts toward this threshold too. In accurate-reporting mode this works exactly like the online store: the sales are real product lines in the same cart, so checkout pools them, recalculates against the whole cart every time, and walks the discount back automatically if a line is removed. In clean-cart mode the pooling is tracked by the register screen instead — e.g. two 8 oz sales of the same product reach a "16 oz or more" tier together. That clean-cart tracking is recovered from the cart itself if you leave the product screen and come back mid-visit (e.g. to check the cart), so it isn't lost — the one thing it can't recover is a preset whose custom label was renamed or deleted in between. One clean-cart-only known limitation: voiding a sale from the cart doesn't automatically walk the discount back — if removing one sale drops the group below a threshold, a remaining sale that was already discounted because of it keeps that discount, and this has to be fixed manually: either remove the over-discounted sale from the cart and re-add it (so it re-prices as its own, undiscounted sale), or open that line's details and edit or remove the volume discount directly. (Accurate-reporting sales recalculate on their own, so they don't need this.)
  • Per preset — any individual portion preset (amount presets can't carry one — see "Amount presets vs. portion presets" above) can carry its own override instead, triggered by buying that many of that preset rather than a raw subunit amount ("10% off when buying 2 or more of the 8 oz preset"). This always takes precedence over the overall by-unit tiers, and it's still a single rule — only the by-unit tiers above support multiple graduated levels. Online, separate cart lines of that same preset count toward its "buy N or more" threshold together, the same way the by-unit tiers pool across lines — two single-tap adds of the 8 oz preset earn a "2 or more" override. The same pooling applies on POS: accurate-reporting sales pool across the cart at checkout just like online, and clean-cart sales pool across repeat sales of that exact preset for as long as the visit lasts (same recovery-on-return and voiding limitation as the by-unit tiers above).

Both are a range, not one specific amount, so they're a different tool from a flat-price preset: a flat preset is a fixed price at exactly one amount, a volume discount applies across every qualifying amount at or above its threshold. It applies on top of whatever the price would otherwise be — including a flat preset — and works the same way on POS and online, included at no extra cost.

Every tier — either level, either discount type — has a "Discount applied to" setting that decides which of the purchases in a qualifying group actually get the discount, once enough is bought (in one sale, across several, or across separate cart lines/visits per the pooling rules above) to cross the threshold:

  • "Only products at or above threshold" (the default) — a genuine per-unit price break. The purchase that first crosses the threshold, and everything bought after it, gets the discount; anything bought before the threshold was reached stays full price. E.g. "$1 off at 2 or more": buy 3, and the first stays full price while the 2nd and 3rd each get the full $1 off — not a $1 total split between them. Buy 10, and 9 of them get $1 off each. This is the same whether the discount is a percentage or a fixed dollar amount.
  • "All of this product in the cart" — once the group's total crosses the threshold at all, every purchase in the group gets the discount, including ones bought before the threshold was reached.

For a fixed-amount tier, either setting can mean the discount lands on more than one line/sale at once — each one gets the tier's full dollar value (never a split share), so the total discount scales with how many purchases actually qualify. A percentage tier discounts each qualifying line by that percentage of its own price, so its total scales with price either way.

Unlike the price-correction adjustment, a volume discount is a real discount a customer may be expecting, so it always shows as its own separately labeled "Volume discount" line on every qualifying line — on POS and online alike, in both rounding strategies, and for both discount types.

Rounding strategy (Settings) — POS only

Shopify's product prices can only hold whole cents, but a price-per-amount almost never lands on a clean cent value. This setting controls how POS handles that gap:

  • Accurate reporting (default): the sale is a real product line item, so it shows up in your normal product/inventory reports and native returns work automatically. The same price-correction discount that handles online orders (see "Turn on the price-correction discount," below) corrects the small gap between the catalog price and the true price, shown under that discount's own customer-facing title (e.g. "Sell-A-Bit price correction" — editable in Settings). Because of that, the price-correction discount needs to be active for accurate-reporting POS sales to be corrected, just as it does for online orders.

  • Clean cart: the sale is an exact-price custom line with no visible rounding adjustment — nothing for a customer to question about the penny-level gap between a per-unit rate and a whole-cent price — but it isn't tied to a real product for reporting purposes, and a return has to be handled and restocked manually (see Returns, below). A configured volume discount still shows as its own visible "Volume discount" line even in this mode, since that's a real discount, not a rounding artifact.

    Inventory for a clean-cart sale comes off your stock count when the order is completed, not when the item is rung up: Sell-A-Bit notes the exact amount at ring-up and deducts it once Shopify reports the finished order. A clean-cart sale that's voided from the cart, or a customer who walks away before paying, therefore never touches your stock count at all — no manual correction needed for an abandoned sale. The one exception is a register that can't reach Sell-A-Bit's backend at ring-up (e.g. selling offline, or a staff account signed in without app permissions on that register — Shopify requires a POS staff account to have app access granted for this to work, the same as any other app feature that talks to its backend): that sale's deduction falls back to applying at ring-up (queued until the device reconnects, if needed), the way all clean-cart sales used to work. The toast for a sale that falls back this way says so directly ("recorded stock the old way — this register may need app permissions"); if you see that note regularly on one register, check that its signed-in staff account has app permissions rather than assuming it's just a connectivity blip.

Neither is strictly better — it's a trade-off between reporting/returns convenience and cart appearance. You can switch at any time; it's a shop-wide setting, not a per-sale choice.

This setting doesn't affect the online store. There's no "custom line" option available to a storefront cart — every online sale is always a real product line item, corrected down to the true price by the price-correction discount (see "Turn on the price-correction discount," below). So online orders always behave like accurate-reporting mode and always restock automatically on return, regardless of what this setting is set to.

How inventory tracking works

Sell-A-Bit tracks stock at every one of your shop's active locations, automatically — there's nothing to turn on or choose. Whether a product sells by amount is a property of the product, not of the location, so there's no real "only track some locations" case: a location either has relevant activity or it doesn't, and either way its number is just there when you need it. If you have more than one location, a product's Stock on hand section (and the rule-group bulk-enable review table) shows one field, or field pair, per location instead of a single shared number.

How the number at each location actually changes depends on the channel:

  • POS always writes to the register's own location, immediately — both a normal accurate-reporting sale (Shopify's native behavior) and a clean-cart sale/return (Sell-A-Bit's own inventory calls). There's no ambiguity here: whichever location a register is set up at is the one its sales and returns affect.
  • Online store orders are different, and this is a genuine Shopify platform behavior, not something Sell-A-Bit controls: at the moment an order is placed, Shopify doesn't yet know which location will fulfill it, so it decrements stock at whichever location happens to have the lowest internal ID among locations that stock the item — not necessarily the "real" one. Once the order is actually fulfilled from a specific location, Shopify reconciles the numbers (crediting back the provisional location, debiting the real one). In practice: on a multi-location shop, a just-placed, not-yet-fulfilled online order can make one location's count look briefly off until it's fulfilled — this corrects itself automatically and isn't a bug to chase.

Setting up

1. Configure the shop-wide settings (Settings page)

  • Choose a rounding strategy (see above).
  • Add any custom unit systems you need beyond the six predefined ones.
  • Optionally create rule groups — a named default configuration (unit system, price, presets, portion settings) applied automatically to a set of product types and/or specific products. This is the fast path for turning on many similar products at once; a product can still override its group's defaults individually. When saving a group would newly enable products, Sell-A-Bit first shows a review table of those products with their current inventory at each of your locations (see "How inventory tracking works," above) — set each one's starting stock (zero everything, convert the current whole-item counts, or type per-product values) and confirm before anything is actually enabled.

2. Enable a product

From the app's Products page (the Sell-A-Bit block on the product's own page in Shopify admin is read-only — a status summary only, not where you turn it on):

  1. Turn on Sold by amount.
  2. In Pricing & units, pick a unit system and enter the price per unit (e.g. price per pound — Sell-A-Bit works out the per-subunit price and rounds it to a valid catalog price for you).
  3. Enter current stock on hand, in subunits (Stock on hand section) — one field (or field pair) per location if your shop has more than one.
  4. In POS behavior, set Default view on POS to whichever staff should see first when they open this product — only matters once portion selling (below) is turned on.
  5. In Selling options, add preset amounts customers/staff will want to pick quickly — these are pure shortcuts, not their own priced items. If this product should also sell in curated, individually priced units ("a chunk," "3-piece box," a flat-price bundle), turn on Also sell by portion, define one or more portion types (a name and a conversion to subunits — a whole number, the subunit is the smallest sellable increment), then add portion presets that each choose a type, a count, a name, and optionally a flat price or volume-discount override.

If the product's type or the product itself matches a rule group, most of this will already be pre-filled — you're just confirming or adjusting it.

3. Set up a dedicated product page template (recommended)

By default, the Sell-A-Bit storefront block sits alongside your theme's normal price and buy button — which still show up, and can be confusing next to it (a customer could add the whole product at its raw catalog price via the default buy button instead of choosing an amount first). The fix is a separate product page template used only by Sell-A-Bit products, with the default price/buy-box removed:

  1. In the Shopify admin, go to Online Store → Themes → Customize.
  2. Switch the preview to a product page, then use the template picker (usually near the top of the page settings) to create a new template — give it a name, e.g. "sell-a-bit". This creates a file named product.sell-a-bit.json in your theme.
  3. In this new template, remove the default price and buy-box section (and anything else that doesn't make sense for a by-amount product), and add the Sell-A-Bit app block wherever you'd like it to appear.
  4. Save. Back in the Sell-A-Bit app, go to Settings → Product page template, enter the same name you gave the template (e.g. "sell-a-bit"), and save.
  5. Click Apply to all enabled products to retrofit any products you already turned on. From then on, enabling or disabling a product in the app assigns or clears this template automatically — no need to repeat this for new products.

This only ever touches products that are unset or already on this exact template — a product you've assigned a different custom template to, for some unrelated reason, is left alone in both directions.

Note: this works the same way regardless of your theme, since you're building the template using your own theme's sections in the same editor you already know — Sell-A-Bit's app just decides which template a product uses, not what's in it. If you ever switch themes entirely, you'd redo this template once in the new theme, the same as any other significant theme customization.

4. Turn on the price-correction discount (required)

Shopify product prices can only hold whole cents, so the price stored on a Sell-A-Bit product is nudged up to the nearest cent (and further padded to cover any flat-price presets — see "Presets and flat pricing" above). Online orders need one more piece to bring that back down to the exact price at checkout: an automatic discount that runs Sell-A-Bit's own pricing Function. This is a one-time, store-wide setup — not per-product, and not per-theme like the template above.

  1. In the Sell-A-Bit app, go to Settings → Price-correction discount.
  2. Optionally change the discount title — this is customer-facing, shown on the cart and checkout pages (e.g. "Sell-A-Bit price correction").
  3. Click Activate.

That's it — the app creates and configures the discount for you, so there's nothing to set up directly in Shopify's Discounts admin. Once active, every online order for a Sell-A-Bit product is corrected down to the true price automatically — and so is every POS accurate-reporting sale, which runs through this exact same discount. The correction (and any volume discount) is computed at checkout from the product's own saved settings — the price per unit, presets, and volume discounts you configured in the app — never from anything the customer's browser sent, and it's recalculated fresh against each cart line's actual quantity every time, so it stays exactly right even if the quantity is adjusted from the cart itself afterward. One deliberate consequence for flat-price presets: a flat price only ever applies while the line's quantity exactly matches that preset's configured amount. If a customer uses the cart's own quantity stepper to change a flat-preset line, the line simply re-prices at the normal per-unit rate for the new amount — the curated bundle price can't be stretched or shrunk onto an amount you never configured it for. You can come back to this same section any time to change the title (click Save title); if a Sell-A-Bit cart isn't showing the correction, check that the badge here still reads "Active" first.

Known limitation, not specific to Sell-A-Bit: Shopify only lets one product-level discount apply per cart line by default — full stacking of multiple product discounts on the same line requires Shopify Plus. This only matters if a different product-level discount (another app, a separate promotion) targets the exact same Sell-A-Bit line at the same time; order-level and shipping discounts are unaffected and always combine normally.

Single currency only: Sell-A-Bit prices in your shop's own currency. If a customer is checking out in a converted (presentment) currency — e.g. via multi-currency selling — the price correction and any volume discount deliberately stand down for that cart rather than apply amounts computed in the wrong currency: the customer pays the catalog price (which is always the true price rounded up to a whole cent per unit, never rounded down), and no volume discount is applied.

5. Check POS staff permissions (recommended, for clean-cart mode)

If you plan to use clean-cart rounding strategy (see above), it's worth checking each POS register's signed-in staff account has app permissions enabled, in Shopify admin → Settings → Users and permissions (Shopify's own help documentation covers exactly which toggle controls this, since it's a Shopify account setting, not something inside Sell-A-Bit). This isn't strictly required — a register without it still rings up sales correctly — but it's what lets clean-cart's abandoned-cart protection actually apply on that register (see "Rounding strategy," above, and the FAQ entry on the "stock updated the classic way" toast if you see it). Worth a quick check when setting up any new register, not just if you notice that toast.

Keeping product data current after an app update

After a Sell-A-Bit update, a product that was enabled before the update can occasionally need its saved data refreshed to pick up something the new version needs — this happens automatically now, on the first admin page load after the update, for every enabled product. There's nothing to click and nothing to check; it never changes any setting you configured and never touches inventory on hand.

You generally won't need this for a brand-new product enabled after an update — only for ones that were already enabled beforehand.

Selling

On POS

Tap the Sell-A-Bit tile, search for the product, choose by [unit] or by portion, then add to cart. By unit, either tap a preset or type a custom amount (if the "Custom amount entry" setting allows it on POS for this product — see "Custom amount entry," above) — a custom amount can be typed as whole/decimal units, whole subunits, or both together (e.g. "1" lb and "8" oz, or just "24" oz); either field alone or both combine into the same total, and a fractional unit amount rounds up to the nearest whole subunit. By portion, tap one of the named preset buttons — there's no typed entry for portions, since each preset is its own self-contained option with its own conversion rate (see "Amount presets vs. portion presets," above). The screen stays open afterward so staff can ring up several of the same thing in a row without re-searching. POS allows an oversell (with a warning) since a physical scale/measurement is the actual authority on what's available.

Known limitation (clean-cart mode): a clean-cart sale's price and any volume discount are computed once, at the moment it's added to the cart. Don't edit a clean-cart line afterward with POS's own cart quantity stepper — ring the amount up again as its own sale instead, or void the line and re-add it. (Accurate-reporting sales recalculate at checkout the same way online orders do, so a quantity edit re-prices the line for its new amount at the per-unit rate — including a flat-preset line, whose flat price only applies at exactly its configured amount.)

On the online store

Add the Sell-A-Bit block to a product page in the theme editor. Customers choose from preset buttons, plus a typed custom-amount field if the "Custom amount entry" setting allows it online for this product (off by default — see "Custom amount entry," above); a typed amount is by-unit only, there's no equivalent for typing a raw portion count online. Any preset that would exceed what's in stock is shown disabled rather than left to fail at checkout, and a typed amount that would exceed what's in stock disables the add-to-cart button as soon as it's typed — unlike POS, the online store blocks a sale that would exceed what's in stock, whether that amount came from a preset or was typed in. That block is based on the stock level as of when the product page loaded — a snapshot, not a live feed — so if stock changes while the page is open (say, a POS sale of the same product), the buttons don't reflect it until the page is reloaded. Shopify's own checkout inventory enforcement is the real backstop either way: an online order can never actually complete for more than what's on hand.

Adding the same amount more than once always creates its own separate cart line rather than combining into one line with a higher quantity — so each line's "Amount" label (e.g. "1 pound") keeps matching what that line was added as, which combining would otherwise make misleading once the total grows past what the label says. One caveat: the label text itself doesn't rewrite if someone edits a line's quantity by hand with the cart's own quantity stepper. The charge re-prices correctly for the new quantity at checkout regardless, but the line still displays the originally chosen amount — if the label matters, remove the line and add the right amount instead of editing the quantity in place.

A discount is automatically applied at checkout, labeled with the price-correction discount's customer-facing title (e.g. "Sell-A-Bit price correction"), to bring the price down from the padded catalog price to the true price for the amount chosen — the exact same mechanism that corrects a POS accurate-reporting sale. This happens regardless of the shop's rounding strategy, since that setting is a POS-only choice about how the sale itself is recorded.

Reports

Two links are available for checking sales, both matching by product title so they work correctly for sales made under either rounding strategy:

  • Orders search — a deep link to Shopify's Orders list, pre-filtered to this product's sales in the last 30 days.
  • Sales report — a deep link to Shopify's own Analytics/Reports editor, pre-filled with a ShopifyQL query breaking out items sold, gross/net sales, discounts, reversals, and taxes. Available per-product (on the product's page) and for all enabled products at once (on the Products page, under "Reports").

Both links open Shopify's own admin pages — nothing is stored or processed by the app itself.

Returns

  • Online orders are always real product line items (see "This setting doesn't affect the online store," above), so Shopify's normal return flow restocks them correctly on its own — no manual step, regardless of the shop's rounding strategy.
  • POS accurate-reporting sales are also real product line items, so they restock automatically the same way.
  • POS clean-cart sales are custom line items with no catalog product behind them, so Shopify can't restock them automatically — the amount needs to be added back manually. When you're processing a return, Shopify labels this kind of line "custom_sale" in the return screen; that's the cue that this specific line needs a manual stock adjustment, while any other (real-product) lines in the same order still restock on their own.

FAQ

Why does the amount I entered round to a whole number? The subunit is the smallest sellable increment — there's no way to sell a fraction of one. If you need finer precision, add a custom unit system with a smaller subunit.

Why did my flat-price preset add a small discount line? Flat prices don't always land exactly on what the catalog price for that amount would be — Sell-A-Bit always keeps the stored catalog price at or above every flat preset (see the note under "Portion types and presets: naming, pricing, and flat pricing" above), so the difference shows up as a small discount bringing the price down to the flat price, labeled with the price-correction discount's customer-facing title (e.g. "Sell-A-Bit price correction" — editable in Settings). That's what it looks like online and on POS accurate-reporting sales alike; a POS clean-cart sale rings up at the exact price directly, so it shows no adjustment line at all. It's automatic — no action needed.

Can I change the rounding strategy later? Yes, any time, in Settings. It only affects new sales going forward.

Why did I see "(stock updated the classic way — inventory is correct)" after a clean-cart sale? Nothing is wrong, and inventory is correct either way — this toast just tells you which of two ways it got updated. Clean-cart mode's usual behavior holds off decrementing stock until the order actually completes, so an abandoned or voided sale never touches your count (see "Rounding strategy," above). This note means that particular sale used the older, simpler method instead — decrementing right away, at ring-up — because the register couldn't reach that newer path for one of two reasons:

  • During initial field testing: this is expected on every clean-cart sale right now, for every register — the newer method depends on a Shopify approval step (protected customer data access) that's still pending. There's nothing to fix; once approved, this note goes back to only appearing in the case below.
  • After that approval is in place: if you see this note repeatedly on one specific register (not every register), check that the staff account signed in there has app access enabled — Shopify treats a plain POS staff sign-in differently from one with app permissions, and only the latter can reach the newer path. Look in Shopify admin → Settings → Users and permissions for that staff member's permissions; Shopify's own help documentation covers exactly which toggle controls app access, since this is a Shopify account setting, not something configured inside Sell-A-Bit. Worth checking as part of setting up any new POS register, not just when you notice the toast.

Support

Questions, bugs, or feature requests: corvus@misquoth.com.