# How pricing works, from the product page to the order

Every price a shopper sees is worked out from your rules, and the price they are
charged is the same one. This page explains how that is guaranteed, and answers
the three questions merchants ask about it.

## The short version

When a shopper adds a configured product to their cart, Orbit3D prices it on our
server and **signs** the result. Checkout then verifies that signature and
applies the same numbers. A price that is not signed by your store's own key is
not a price Orbit3D will let you sell at.

That means:

- The page, the cart and the checkout always agree.
- A shopper who edits the price in their browser cannot buy at it.
- Your prices cannot quietly fall back to the plain product price.

## "I changed a price. Why do items already in carts still show the old one?"

Because a configured price is a **quote**, and Orbit3D honours it.

When someone configures a product, they are shown a price and they accept it by
adding it to their cart. If you republish with new prices an hour later, the
shopper who already has that item does not get a surprise at checkout. Their
quote stands.

Anyone who configures the product *after* you republish gets the new price
immediately. Both are true at once, and both carts can sit side by side:

| Added | Feather fee | Line total |
|---|---|---|
| Before the change | $9.99 | $609.99 |
| After the change | $10.99 | $610.99 |

That is the intended behaviour, verified on a live store. If you have made a
genuine mistake — a fee missing a digit, say — fix the price and republish, then
handle the few orders that came through at the old price the way you would any
other pricing error: cancel or refund them. That is the same remedy you already
use, and it does not disturb every other shopper's cart.

## "How many custom items can one order hold?"

**26 different configurations**, with no limit on how many of each.

Quantity is free. Ten identical hats on one line cost the same as one, because
the limit is on how many *different* configurations a single order carries, not
how many units. A real cart of 26 lines held 40 units and totalled over $60,000.

If a shopper reaches the limit, **Add to cart refuses** with:

> Your cart already holds as many custom items as one order can carry. Please
> check these out first, then start another order.

The item is not added, and nothing already in the cart is affected. This refusal
is deliberate: past that point Shopify would stop applying your configured
prices and charge the plain product price for **every** line in the cart. We
would rather refuse one item than undercharge for all of them.

## "What is the tamper check?"

A second, independent check that runs at checkout. The pricing side works out
what to charge; the tamper check refuses the order outright if any configured
line claims a price your store did not sign.

You can see its state in the app: **Orbit3D → Pricing function**, which reads
**Tamper check: on** when it is registered.

**If it says anything else, tell us.** Without it, a shopper who edited a cart
line would not be overcharged — they would be *under*charged, buying a
configured product at the plain product price. That is the failure this exists
to prevent, and it is silent by nature.

A shopper who hits the check sees:

> This custom item needs to be added to your cart again before you can check out.

See [Errors a shopper can see](../support/errors.md).

---

*Verified on a live store, 12 September 2026: prices agree across page, cart and
checkout; a forged price is refused at the moment it is added; a republish does
not move a quoted price; the 27th configured item is refused.*
