A free-shipping headline does not prove every basket has a rate. Write the tier basis and inspect the boundary between paid and free shipping, including baskets above the largest configured maximum. This differs from combining shipping profiles: even one profile can have a gap.
Who should use this acceptance brief
Retailers using price-based flat shipping tiers. Use this as a scoped commissioning task for a website supplier. Where system evidence is required, a teaching file is not a substitute.
Source-bound platform fact
Shopify’s rate guidance warns that orders outside configured tiers can receive no applicable rate and recommends leaving the highest tier’s maximum empty to cover larger orders. Shopify: shipping rates · Checked 16 October 2026.
Filled teaching example
Synthetic example, not a client case. Inputs, expected decisions and counterexamples follow; no live platform integration is claimed.
On narrow screens, scroll to read the complete table.
| Input / case | Check basis | Expected decision |
|---|---|---|
| AUD99.99 → 9, AUD100.00 → 0 | contiguous cents | covered |
| AUD100.00 → no tier | gap | checkout review |
| AUD500.01 above max500 | top tier capped | uncovered |
Run the acceptance exercise
- Confirm the actual subtotal basis in the store, including discount, tax, currency and market treatment.
- Use integer cents for the documented model and test one cent below, at and above each boundary.
- Reproduce the carts in an authorised checkout and record the final offered rates, without payment.
Interpret the result and retain evidence
The model uses inclusive integer-cent bounds and returns a count: zero is a gap and two is an overlap needing review. It does not claim Shopify uses these exact inclusive bounds internally. Agree the platform’s real rule before translating the fixture into admin settings. Never assume a promotional banner establishes the checkout subtotal basis.
Limits before implementation
Excludes live carrier quotes, multi-profile combination, taxes and legal pricing advice. Test each active market separately.
Replay the finite example
Save both files in one folder and run with Node22.13 or newer. These finite checks are not a live service or certification. Filled inputs and expected outputs · Inspectable functions
node decision-check.mjs shipping-rate-tier-coverage.json