Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- Orders (paste welcome) (required)
-
Default 2 rows
About this input
The orders you expect over the period, up to 20 rows: the product, the order size and the expected number of such orders, which may be decimal. Rows with the same product and size simply add.
Column Range or allowed values Product ID Not declared Order size 1 to 10000000 Number of orders 0 to 1000000 - Product to optimize (required) Conditional
-
Default BOXA
About this input
The Product ID, chosen from the products table, whose tier prices the optimizer tries, whose price curves are charted and whose single order is checked in detail. Other products keep their prices.
- Minimum unit margin Conditional
-
When omitted Blank
Unit % of price Default Not set Range 0 to 0.95
About this input
The smallest share of every tier price that must remain after the unit cost, as a percentage from 0% to 95%, tested at the highest unit cost a unit in that tier can carry. 0% means never below cost. Blank means no minimum.
- Products (required)
-
Default 2 rows
About this input
Up to five products: an ID, the pricing method (all-units or incremental), the unit cost below the first cost break, the charge to the customer and the cost to you once per order, and an optional minimum and maximum order.
Column Range or allowed values Product ID Not declared Pricing method All-units, Incremental Unit cost 0 to 1000000 Charge per order 0 to 1000000 Cost per order 0 to 1000000 Minimum order 1 to 10000000 Maximum order 1 to 10000000 - Volume tiers (paste welcome) (required)
-
Default 4 rows
About this input
Up to five volume tiers per product, up to 25 rows in all: the product, the order size at which the tier starts and its price per unit. Every product needs a tier starting at 1. Rows of one product need not be together or in order.
Column Range or allowed values Product ID Not declared Tier starts at 1 to 10000000 Price per unit 0 to 1000000 - Lowest price change to try (required) Conditional
-
Unit % Default -0.2 Range -0.9 to 2
About this input
The lowest price change the optimizer tries, as a percentage of each current tier price of the product to optimize, from -90% to 200%. Every tier is tried from (1 + this) times its current price.
- Highest price change to try (required) Conditional
-
Unit % Default 0.2 Range -0.9 to 2
About this input
The highest price change the optimizer tries, as a percentage of each current tier price, from -90% to 200% and not below the lowest change. Every tier is tried up to (1 + this) times its current price.
- Order size to check (required) Conditional
-
Unit units Default 101 Range 0 to 10000000
About this input
One order of this many units of the product to optimize is priced in detail, from 0 to 10,000,000. 0 means no order: no charge and no cost. The rows of the what-if table are centred on it.
- Prices to try per tier (required) Conditional
-
Unit prices Default 5 Range 2 to 5
About this input
How many evenly spaced prices are tried for each tier, from the lowest to the highest change with both ends included, from 2 to 5. The current prices are tried as well, so 5 tiers at 5 prices give 3,126 price lists.
- Highest average price per unit Conditional
-
When omitted Blank
Unit $ per unit Default Not set Range 0 to 1000000
About this input
The highest average price per unit the tier prices tried may give the product to optimize: item revenue divided by units, charges per order excluded, from 0 to 1,000,000. For example a price promised in a contract. Blank means no cap.
- Unit cost breaks (optional; paste welcome)
-
When omitted Blank
Default 0 rows
About this input
Optional purchase-cost breaks, up to five per product: from this order size on, every unit of the order costs this much. A product without breaks uses its unit cost for every order size. Breaks start at 2 or more.
Column Range or allowed values Product ID Not declared Cost applies from 2 to 10000000 Unit cost from this order size 0 to 1000000 - Table step, order size (required) Conditional
-
Unit units Default 10 Range 1 to 1000000
About this input
The spacing of the 11 order-size rows of the what-if table, a whole number of units from 1 to 1,000,000. The lowest row must not go below 0 units, or the table is withheld.
- Table step, unit cost change (required) Conditional
-
Unit % Default 0.05 Range 0.01 to 0.2
About this input
The spacing of the 11 unit-cost-change columns of the what-if table, above 0% and at most 20%. The lowest column must not make unit costs negative, or the table is withheld.
- What-if unit cost change, all products (required) Conditional
-
Unit % Default 0 Range -0.9 to 2
About this input
A change applied to every unit cost and cost break before anything is calculated, as a percentage from -90% to 200%. Costs per order are not changed. The columns of the what-if table are centred on it.
Outputs
- Results by tier
-
No unit declared
About this output
One row per tier row, in the order entered: its rank, the order sizes it covers, its price, how much one order revenue changes at its start, its dead zone if any, the expected orders inside it, the highest unit cost a unit of the tier can carry and whether the price is below it.
- PP01 Tiers Check
-
No unit declared
About this output
The check of each tier row: blank for an unused row, OK, or the first problem found, starting with its code.
- Results by product
-
No unit declared
About this output
One row per product: orders, units, item revenue, order charges, revenue, item cost, order costs, cost, contribution, margin, average price per unit and the orders inside a dead zone, over the period. The margin is blank when revenue is zero.
- PP01 Products Check
-
No unit declared
About this output
The check of each product row: blank for an unused row, OK, or the first problem found, starting with its code.
- Cost
-
No unit declared
About this output
Item cost plus order costs.
- Item cost
-
No unit declared
About this output
Unit cost times units, at the unit cost each order size carries after any cost break and the what-if cost change.
- Order charges
-
No unit declared
About this output
The charges per order billed to customers, such as setup, handling or shipping, all orders.
- Contribution
-
No unit declared
About this output
Revenue minus cost over all orders and products at the current prices, each line posted to the cent.
- PP01 Orders Check
-
No unit declared
About this output
The check of each order row: blank for an unused row, OK, or the first problem found, starting with its code.
- What-if table withheld because
-
No unit declared
About this output
Blank when the what-if table is shown. Otherwise the reason it is withheld: the lowest row would be below 0 units, the lowest column would make unit costs negative, or some what-if scenarios exceed the supported numerical range. Every other result is still calculated.
- Lowest average price tried
-
Unit $ per unit
About this output
The lowest average price per unit among the price lists tried, which shows how far the range reaches toward a cap.
- Dead zones
-
Unit count
About this output
How many all-units dead zones the current prices have: ranges of order sizes where a bigger order pays less item revenue than a smaller one the customer could place.
- Orders in dead zones
-
Unit orders
About this output
How many of the expected orders fall inside a dead zone of their own tier.
- Change in contribution
-
No unit declared
About this output
The contribution at the best prices minus the contribution at the current prices. Negative when the current prices break a rule that the best prices meet.
- Results by order row
-
No unit declared
About this output
One row per order row, in the order entered: the tier the size falls in, the realized price per unit, revenue, cost, contribution and margin of one order, the same figures for all the orders of the row, and whether the size sits in a dead zone.
- Tiers of the product to optimize
-
Unit count
About this output
How many tiers the product to optimize has, so how many tier prices the optimizer tries.
- Optimizer by tier
-
No unit declared
About this output
One row per tier of the product to optimize: its order sizes, current price, the lowest and highest price tried, the best price, the change from the current price and the floor price the minimum margin sets (blank without one).
- Table1 TPV Row Axis
-
No unit declared
About this output
The order sizes down the left of the what-if table: your own order size to check in the middle, five equal steps below and five above.
- Table1 TPV Row Input
-
No unit declared
About this output
Machinery, not an input: the cell the table substitutes each row order size into. The rest of the time it repeats the order size to check. Change the input, never this cell.
- Table1 TPV Column Input
-
No unit declared
About this output
Machinery, not an input: the cell the table substitutes each column unit cost change into. The rest of the time it repeats the what-if unit cost change.
- Table1 TPV Corner
-
Unit -25%
About this output
The figure the what-if table recalculates, the contribution of the order checked, placed in its top-left corner as the spreadsheet requires. It is formatted away.
- Warnings
-
No unit declared
About this output
Every warning the model can raise, whether it applies to this result (1) or not (0), and its message when it applies.
- Warning messages
-
No unit declared
About this output
Every warning that applies, separated by semicolons. Blank when none applies.
- Table1 TPV Values
-
Unit 0.00
About this output
Each cell is the contribution of one order of the product to optimize, recalculated with the order size of the row and the unit cost change of the column. The middle cell is your own order to check.
- Warnings
-
Unit count
About this output
How many warnings apply to this result. The warnings table lists them.
- Table1 TPV Column Axis
-
No unit declared
About this output
The unit cost changes across the top of the what-if table: your own change in the middle, five equal steps below and five above.
- Orders
-
Unit orders
About this output
The expected number of orders over the period, all products.
- Revenue
-
No unit declared
About this output
Item revenue plus order charges.
- Item revenue
-
No unit declared
About this output
What customers pay for the units at the current tier prices, all orders and products, each order row posted to the cent.
- Order costs
-
No unit declared
About this output
Your costs per order, such as setup, picking, packing or delivery, all orders.
- Workbook self-check
-
No unit declared
About this output
PASS when every internal consistency check of this result holds. FAIL means the result should not be relied on.
- Status code
-
No unit declared
About this output
The short code of the reason shown in the status, or OK.
- Units
-
Unit units
About this output
Units ordered over the period, all products: number of orders times order size, summed.
- Reference data version
-
No unit declared
About this output
The version of any reference data used. None: every value is your own assumption.
- Current prices meet the rules
-
No unit declared
About this output
TRUE when the current prices keep tier prices from rising and meet the margin floor and the cap; FALSE otherwise.
- Best price, tier 5
-
Unit $ per unit
About this output
The best price tried for tier 5. Blank beyond the number of tiers or when no list tried meets the rules.
- Current against best
-
No unit declared
About this output
Item revenue, order charges, item cost, order costs and contribution of the orders of the product to optimize, at the current prices and at the best prices, posted to the cent. Only item revenue differs, because demand is fixed.
- Best price, tier 3
-
Unit $ per unit
About this output
The best price tried for tier 3. Blank beyond the number of tiers or when no list tried meets the rules.
- Best price, tier 4
-
Unit $ per unit
About this output
The best price tried for tier 4. Blank beyond the number of tiers or when no list tried meets the rules.
- Contribution, order checked
-
No unit declared
About this output
Revenue minus cost of one order of the size to check of the product to optimize, at its current prices. The middle of the what-if table.
- Cost, order checked
-
No unit declared
About this output
Item cost plus the cost per order of the order checked.
- Tier of the order checked
-
Unit tier
About this output
The tier the order size to check falls in. Blank for an order of 0.
- Charge, order checked
-
No unit declared
About this output
The charge per order, or 0 for an order of 0.
- Best price, tier 2
-
Unit $ per unit
About this output
The best price tried for tier 2. Blank beyond the number of tiers or when no list tried meets the rules.
- Model version
-
No unit declared
About this output
The version of the model that produced these results.
- Optimizer status
-
No unit declared
About this output
OPTIMAL when the best of the price lists tried was found by trying every one of them; INFEASIBLE when no list tried meets the rules. A better list may exist between the prices tried. Blank when the inputs are not valid.
- Custom assumptions
-
No unit declared
About this output
Whether any reference value was overridden. Always FALSE here: the model uses no reference data.
- Status
-
No unit declared
About this output
OK, or the first reason the result needs attention: NOT VALID for inputs the model cannot use or for a calculation that exceeds the supported numerical range (code NUMERIC_RANGE), INFEASIBLE when no price list tried meets the rules, and CHECK for a result to look at. Above about $10 trillion of revenue plus cost the calculator refuses, because whole cents stop being exact there. Below that, one cent of posted contribution decides the best price list, apart from small rounding in the underlying sum.
- Contribution at the best prices
-
No unit declared
About this output
The contribution of the same orders at the best prices tried, with demand fixed, posted to the cent.
- Best price, tier 1
-
Unit $ per unit
About this output
The best price tried for tier 1 of the product to optimize. Blank when no list tried meets the rules.
- A best price is the highest tried
-
No unit declared
About this output
TRUE when some tier best price equals the highest price tried for that tier, so a higher price might earn more if customers accepted it.
- Average price per unit, best
-
Unit $ per unit
About this output
The same average at the best prices tried.
- Lists meeting the margin floor
-
Unit count
About this output
How many lists tried keep every tier at or above its floor price. Every list passes when no minimum margin is entered.
- Lists keeping prices from rising
-
Unit count
About this output
How many lists tried have no tier priced above the tier before it.
- Price lists meeting every rule
-
Unit count
About this output
How many of the price lists tried keep tier prices from rising with volume and meet the margin floor and the average price cap.
- Lists meeting the price cap
-
Unit count
About this output
How many lists tried keep the average price at or below the cap. Every list passes when no cap is entered.
- Average price per unit, current
-
Unit $ per unit
About this output
Item revenue of the product to optimize divided by its units at the current prices, charges per order excluded. Blank when no units are ordered.
- Contribution at the current prices
-
No unit declared
About this output
The contribution of the orders of the product to optimize at its current tier prices, posted to the cent.
- Contribution margin
-
Unit %
About this output
Contribution as a share of revenue. Blank (not applicable) when revenue is zero.
- PP01 Cost Breaks Check
-
No unit declared
About this output
The check of each cost-break row: blank for an unused row, OK, or the first problem found, starting with its code.
- Price lists tried
-
Unit count
About this output
How many price lists the optimizer tried: every combination of the prices tried per tier, plus the current prices.
- Item revenue, order checked
-
No unit declared
About this output
What the customer pays for the units of the order checked, posted to the cent.
- Margin, order checked
-
Unit %
About this output
Contribution of the order checked as a share of its revenue. Blank (not applicable) when its revenue is zero.
- Order checked is in a dead zone
-
No unit declared
About this output
TRUE when a smaller order of this product would pay at least as much item revenue as the order checked.
- Item cost, order checked
-
No unit declared
About this output
Unit cost times units of the order checked, posted to the cent.
- Unit cost, order checked
-
Unit $ per unit
About this output
The unit cost at this order size after any cost break and the what-if change. Blank for an order of 0.
- Price per unit, order checked
-
Unit $ per unit
About this output
Item revenue of the order checked divided by its size, charges excluded. Blank for an order of 0.
- Cost per order, order checked
-
No unit declared
About this output
Your cost per order, or 0 for an order of 0.
- Revenue, order checked
-
No unit declared
About this output
Item revenue plus the charge of the order checked.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.
Methodology
Purpose and model boundary
This calculator prices volume tiers. Up to five products are each sold in up to five tiers, where each tier starts at a whole-unit order size and runs to the next tier's start. A product uses all-units pricing, where every unit of the order is charged the price of the tier the order size falls in, or incremental pricing, where each unit is charged the price of the tier that unit number falls in. Each order can also carry a charge to the customer and a cost to you. Your unit cost can fall at its own cost breaks. An order table says how many orders of each size you expect.
One Calculate fills every result section of that one model: all your orders, the dead zones where a bigger all-units order pays less, one order checked in detail, and the best tier prices for one chosen product within the price range you set. An 11 by 11 what-if table of one order's contribution against order size and unit cost is calculated with them.
Demand is fixed: the model does not invent extra volume from a discount. Every order you enter stays the same at every price tried. So with no other rule, a higher price always earns more, and the best list is simply the highest one allowed. That is why a highest average price and a minimum margin are offered, and why a warning says so when the top of the range decides the answer. Every figure on this page is computed by the spreadsheet; the page adds nothing to it. The calculator does not say whether a customer will accept a price.
Inputs and units
- Products, up to 5 rows, typed, filled from the top without a blank row between used rows:
- a product ID: a capital letter, then up to 15 capital letters or digits, each ID used once;
- the pricing method: All-units or Incremental;
- the unit cost, from 0 to 1,000,000, which applies below the first cost break;
- the charge per order to the customer and the cost per order to you, each from 0 to 1,000,000: setup, handling, shipping, picking, packing or delivery that happens once per order;
- an optional minimum order, from 1 to 10,000,000 (blank means 1), and an optional maximum order, not below the minimum (blank means no maximum, so the last tier is open).
- Volume tiers, up to 25 rows, typed or pasted from a spreadsheet: the product, the order size where the tier starts, from 1 to 10,000,000, and the price per unit, from 0 to 1,000,000, with up to 4 decimals. Every product needs a tier starting at 1 and may have at most 5. Rows of one product need not be together or in order.
- Unit cost breaks, optional, up to 25 rows, typed or pasted: the product, the order size the cost applies from, from 2 to 10,000,000, and the unit cost from that size, from 0 to 1,000,000. At most 5 per product.
- Orders, up to 20 rows, typed or pasted: the product, the order size, from 1 to 10,000,000 and within that product's minimum and maximum, and the number of such orders, from 0 to 1,000,000. Decimals are allowed: this is an expected count over the period, not a probability. Rows with the same product and size simply add.
- Price search: the product to optimize, chosen from the product IDs you entered, and the lowest and highest price change to try, each from -90% to +200%, the lowest not above the highest.
- What-if table: the order size to check, from 0 to 10,000,000 (0 means no order); a unit cost change for all products, from -90% to +200% (0 unless you change it), applied to every unit cost and cost break before anything is calculated, while costs per order do not change; and the spacing of the table's rows, from 1 to 1,000,000 units, and columns, from 1% to 20%.
- More options, closed until you open it:
- the prices to try per tier, from 2 to 5 (5 unless you change it);
- a minimum unit margin, from 0% to 95% (blank means no minimum);
- a highest average price per unit, from 0 to 1,000,000 (blank means no cap).
Money is in dollars. Order sizes are whole units.
Governing relationships
Tiers. A tier runs from its start to one unit below the next tier's start, so tiers never overlap and leave no gap. An order exactly at a tier's start is in that tier. The last tier ends at the product's maximum order, or stays open.
Item revenue of one order. All-units: the order size times the price of the tier the size falls in. Incremental: for each tier, the units of the order inside that tier times that tier's price, added up. With tiers from 1 at 10.00 and from 101 at 8.00, 150 units earn 1,200.00 all-units (150 × 8.00) and 1,400.00 incremental (100 × 10.00 + 50 × 8.00).
Unit cost. The unit cost of an order is the cost of the product's largest cost break at or below the order size, or the product's unit cost when there is none. It applies to every unit of the order, and it is independent of the selling tiers. The unit cost change multiplies it.
One order. Revenue is item revenue plus the charge per order. Cost is the order size times the unit cost, plus the cost per order. Contribution is revenue minus cost, and margin is contribution divided by revenue, not shown when revenue is 0. An order of size 0 has no charge and no cost. The price per unit shown is item revenue divided by units, with charges left out.
All orders. Each order row's item revenue, charges, item cost and order costs are that amount times the number of orders, posted to the cent, rounding half away from zero. Every product total and grand total is a sum of posted lines.
Dead zones. A dead zone is a range of order sizes where a bigger order pays less item revenue than a smaller order the customer could place. It can only happen with all-units pricing, because incremental revenue never falls as the order grows. For each tier after the first, the model takes the most any smaller orderable order pays. If an order at the tier's start pays less than that, the zone runs from the tier's start to the last size that still pays less: 100 × 10.00 = 1,000 and 1,000 / 8.00 = 125, so at 8.00 from 101 the zone is 101 to 124. A zero-price tier is dead to its end. Minimum orders are respected: a size nobody can order does not count. Zones are measured on item revenue; charges per order are the same on both sides, so revenue and contribution fall by the same amount at a price break.
Best tier prices. For the one product to optimize, each tier price is tried at evenly spaced points from (1 + lowest change) to (1 + highest change) times its current price, rounded to 4 decimals, and every combination is calculated, plus today's list. With 5 prices and 5 tiers that is 3,126 lists. A list is allowed when:
- prices never rise from one tier to the next;
- when a minimum margin is entered, every tier's price keeps (price − unit cost) / price at or above it, using the highest unit cost a unit in that tier can carry, so a cost break later in the tier does not hide a loss before it;
- when a highest average price is entered, the product's item revenue divided by its units stays at or below it. Charges per order are not in this average. A list exactly at the cap passes at any size.
The best list is the allowed one with the highest contribution to the cent. On a tie it is the one closest to today's prices, then the first in order. This is the best of the lists tried: a better list may exist between them. It is never a claim about customer behaviour.
What-if table. Rows are 11 order sizes centred on the order size to check, one row step apart; columns are 11 unit cost changes centred on yours, one column step apart. Each cell is the contribution of one order of the product to optimize at today's prices, recalculated through the spreadsheet's own two-variable data table. The middle cell is the order checked. When a step would take the lowest row below 0 units, or the lowest column below -100%, the table is withheld with that reason and every other result still stands.
Calculation sequence
The spreadsheet first checks every product, tier, cost break and order row and every setting, and stops with NOT VALID at the first problem it finds, with every figure at 0. It then ranks each product's tiers and cost breaks, prices every order row and posts it to the cent, and adds the totals. It measures the dead zones at current prices, then prices the order to check. For the product to optimize it builds the candidate prices, evaluates every list on the unrounded contribution, marks which lists keep each rule, and picks the best. It posts today's list and the best list over that product's orders to give the comparison. The what-if table recalculates the order checked at its 121 combinations. A block of consistency checks, including that posted revenue less posted cost equals posted contribution, that no allowed list beats the one chosen and that the table's middle cell equals the order checked, runs before the status is returned.
Outputs and interpretation
The headline gives the contribution of all orders, the change in contribution at the best prices, and the contribution of the order checked. The result sections follow.
- All orders: the number of orders and units, item revenue, order charges, revenue, item cost, order costs, cost, margin, the number of dead zones and the orders inside them; with the results by product, by order row (including whether the row sits in a dead zone) and by tier (with each tier's change at the break, its dead zone, its highest unit cost and whether its price is below that cost).
- Best tier prices: the contribution and average price today and at the best prices, how many lists were tried, how many are allowed and how many pass each rule, the lowest average price tried, whether today's prices meet the rules, and whether a best price is the highest one tried; with a table by tier (today's price, the lowest and highest price tried, the best price, its change and the floor price) and a comparison of today against best. Under INFEASIBLE the best prices are blank and the counts show which rule stopped them.
- Order checked: its tier, price per unit, item revenue, charge, revenue, unit cost, item cost, cost per order, total cost, margin, and whether it sits in a dead zone.
A negative change at the best prices is not a mistake: when today's prices break a cap or a margin rule, it is what meeting that rule costs. Prices and average prices show up to 4 decimals, as the workbook formats them, so 0.2868 reads 0.2868 and an average of 3.641667 reads 3.6417; the API and MCP return them unrounded.
For nearby questions, the Price Volume Profit Scenario Simulator projects profit when demand responds to price, the Quote Pricing & Deal Margin Optimizer prices one quote with its discounts, labor and commission, and the EOQ Calculator looks at order size from the buyer's side.
Validation and status logic
The workbook returns one status, chosen in this order: NOT VALID, then INFEASIBLE, then CHECK, then OK.
- NOT VALID names the first problem: a product row (a blank row above a used row, a missing or malformed ID, a repeated ID, an unknown method, a value outside its limits, or a maximum order below the minimum); no product; a tier row (a gap, a missing value, a product not in the table, a start outside its limits or above the maximum order, a price outside its limits, or two tiers of one product at the same start); a product with no tier starting at 1 or with more than 5 tiers; a cost break row (a gap, a missing value, a product not in the table, a start below 2, a cost outside its limits, or a repeated start) or more than 5 breaks for a product; an order row (a gap, a missing value, a product not in the table, a size outside its limits or outside the product's minimum and maximum, or a number of orders outside its limits); no order row; and then a setting outside its limits, including a product to optimize that is not in the table and a lowest price change above the highest; and last a plan above the size limit: "Calculation exceeds the supported numerical range; reduce the prices, order sizes or number of orders." NOT VALID is a refusal, not a numeric answer: every figure is withheld.
- INFEASIBLE means no list tried keeps every rule. All orders, the dead zones, the order checked, the what-if table and today's figures stay valid and shown; the best prices, the best contribution, the change and the best series on the charts are blank, and the counts say how many lists keep each rule.
- CHECK accompanies a valid result that needs a look because a workbook consistency check failed.
- OK otherwise.
Warnings say when there are all-units dead zones and how many orders fall inside them; when a tier is priced below the highest unit cost it can carry; when a best price is the highest one tried, because with fixed demand a higher price earns more unless a rule stops it; when today's prices of the product to optimize break a rule, so the change is measured from prices that are not allowed; when a product's tier prices rise with order size; when the product to optimize has no units ordered, so today's prices are kept; when the order size to check is outside the product's minimum or maximum order; when a cost break starts above the product's maximum order and never applies; and when the what-if table is withheld. A warning never changes the status.
Assumptions and limitations
- Capacities are 5 products, 5 tiers and 5 cost breaks per product, 25 tier rows, 25 cost break rows and 20 order rows.
- Demand is fixed. Nothing here estimates how many orders a price wins or loses, or whether customers would move their order size away from a dead zone.
- One product is optimized at a time; other products are unchanged. Every tier uses the same range, relative to its own current price, and the search tries only the declared points of that range.
- One charge and one cost per order cover whatever is billed or paid once per order.
- Quantities are whole units; the number of orders may be a decimal.
- A cost break applies to every unit of an order of that size. Costs per order do not change with the unit cost change. There is no tax, currency conversion, capacity limit or timing.
- Very large plans are refused, not estimated. Above about $10 trillion of revenue plus cost, where whole cents stop being exact, the calculator refuses. It tests that on every path that reports money: each order row at today's prices, the highest price list that meets the rules, the order checked, one order of any order row and any size on the charts. Below that limit one cent of posted contribution decides the best price list, apart from small rounding in the underlying sum.
- Amounts within two cents below the $10 trillion limit may show as $10 trillion.
- Very large orders landing exactly on the end of a dead zone may show as inside it.
- At a dead-zone boundary, rounding to 15 significant digits can make the zone end one order early when two very large orders differ by less than that precision, such as $0.0001 at about $2 trillion.
- Results exactly on, or within rounding noise of, a half-cent edge may differ by one cent, including a tie between price lists, so the best price list named can change.
- The highest average price has a size allowance, because the same money summed two ways differs by rounding at this size. A list can pass above the cap by at most 0.0001 cents of revenue up to about $500 million, 0.2 cents at $1 trillion and 2 cents at the $10 trillion limit.
Restrictions and non-computing states
The calculator enforces its numeric and choice limits before it accepts a result. A blank row between used rows, a repeated product ID, a product with no tier at 1, and an order outside its product's minimum and maximum are refused by the workbook. When a step would take the what-if table's lowest row below 0 units or its lowest column below -100%, only the table is withheld, with that reason. The same holds when only some what-if scenarios are above the size limit: "Some what-if scenarios exceed the supported numerical range."
Errors and warnings
A request rejected by the page's input limits is not a computed result. A transport or service failure, a timeout or a cancelled run cannot establish a fresh workbook answer, and the last result stays on the page marked as out of date. Review the workbook's References and Disclaimer, and check a result against your own costs and terms, before using it to set real prices.
References
Sources and further reading
Your prices, tiers, costs, charges and order counts come from the inputs; the calculator holds no market, industry or customer data, and every value is your own assumption. The sources below explain the ideas the model uses. They do not endorse this calculator.
- Wikipedia, Economic order quantity, section "Quantity discounts" describes the two main types of quantity discount, all-units and incremental: one price for the whole order set by its size, against a separate price for each successive block of units. The calculator uses the same two methods; it does not use that article's order-quantity formula (retrieved 2026-11-03).
- OpenStax, Principles of Accounting, Volume 2: Managerial Accounting, 3.1 Explain Contribution Margin defines contribution margin as the amount by which a selling price exceeds variable cost, the amount left to cover fixed costs and profit; the calculator's contribution is revenue less the item cost and the cost per order (retrieved 2026-11-03).
- Microsoft Support, Calculate multiple results by using a data table describes the two-variable data table the spreadsheet uses for the 11 by 11 what-if table (retrieved 2026-11-02).
This is an educational model of the prices and orders you enter, not financial, accounting, pricing or legal advice. It does not estimate how customers would respond to a price, it is not certified financial reporting, and it does not guarantee a profit; check a result against your own costs and terms before using it.
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.