Price overrides

A price override is a custom price for a single product that applies only to a single customer. Your catalog price stays the same for everyone else.

This is the B2B equivalent of a negotiated contract price: you list Widget A at $10.00 on the catalog, but you've agreed a $8.50 rate with Acme Restaurant — so you set an override, and Acme sees $8.50 on the storefront and on every order they place from then on.

Where to manage overrides

From a customer's detail page (/dashboard/customers/{id}), scroll to the Custom pricing section. You'll see:

  • Every product with an existing override — default price, custom price, and the diff as a percentage (+15.0% in red for a markup, -15.0% in green for a discount).
  • A + Add price button that opens an inline form: pick a product from the dropdown and type the custom price.

Adding an override

  1. Click + Add price.
  2. Pick a product from the dropdown. Only active products in your catalog show up, and products that already have an override for this customer are filtered out.
  3. The price field defaults to the current catalog price — change it to the custom rate.
  4. Click Save.

The override is saved against the customer + product pair — only one override per product per customer is allowed. An audit-log entry captures the change with the customer, product, and new price.

Editing an override

Click Edit next to the existing override, change the price inline, and click Save (or press Enter). Same write, same audit log.

Removing an override

Click Remove next to the override. The override is deleted. The customer goes back to paying the catalog price on that product, immediately. An audit-log entry with action PriceOverrideDeleted is written.

How overrides apply

Two places in the customer's journey consult a customer's overrides:

1. When they browse the storefront

On catalog page load, Distribu queries every override for the logged-in customer and merges them into the product list. The product card shows the custom price, and the default price isn't shown on the storefront — so from the customer's perspective it just looks like "that's the price."

If a product doesn't have an override, it shows the catalog price.

2. When they place an order

At order time Distribu re-checks overrides on the server. For each line item: if a custom price exists for this customer + product, that's the unitPrice saved on the order — otherwise the catalog price is used.

This is important — we don't trust the price the client sent. Even if the customer somehow manipulates the cart to submit a lower price, the server re-computes the correct price at order time.

The order item's saved unitPrice is a snapshot of whatever price applied. If you later change or delete the override, existing orders keep the price they were placed at — historical totals never change.

Validation

PriceNon-negative number, up to 2 decimal places
Customer and product scopeBoth must belong to your company — enforced both in the dashboard and server-side
One override per product per customerEnforced server-side — attempting a second override for the same product replaces the first

A negative price is rejected: "Price must be a positive number." An override price of $0.00 is allowed — it's how you'd mark a free sample or a promotional item.

How this differs from a catalog price change

Catalog price changePrice override
Who sees the new priceEveryoneJust this one customer
Where to set itInventory → product editCustomers → customer → Custom pricing
Affects existing ordersNo (unit price is snapshotted at order time)No (same)
Plan limitNoneNone

If you need to raise prices for all customers, edit the product in Inventory. Overrides are for exceptions — one customer at a time.

Overrides via API or CSV

Overrides don't have an API endpoint or a CSV importer right now. They live on the customer detail page. If you need to bulk-set overrides across many customers, email support@distribu.app — we can help.

Contacts inherit

A customer's contacts all see and get the same overrides. The overrides are attached to the customer account, not the individual contact, so there's no way to give one contact a different price than another contact under the same customer.


Next: Storefront access.