Methodology
Wholesale Order Profitability Planner methodology
Educational only: Business decision support, not accounting, tax or legal advice.
Privacy: Calculations run locally; Margin101 does not receive your commercial inputs.
Update policy: Reviewed when formulas or official dependencies change.
Scope: Market-neutral small-business planning using your own assumptions.
1. Formulas and units
unitsOrdered = cases ordered * units per caseWhere
- casesOrdered
- Cases ordered (whole cases/order)Source: Business record
- unitsPerCase
- Units per case (whole units/case)Source: Business record
- unitsOrdered
- Units ordered (units)Source: Calculated output
productRevenueExTax = cases ordered * wholesale price per caseWhere
- casesOrdered
- Cases ordered (whole cases/order)Source: Business record
- unitsPerCase
- Units per case (whole units/case)Source: Business record
- pricePerCaseExTax
- Wholesale price per case (currency units/case, ex tax)Source: Business record
- unitsOrdered
- Units ordered (units)Source: Calculated output
- productRevenueExTax
- Product revenue (currency units, ex tax)Source: Calculated output
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
totalRevenueExTax = product revenue + freight recoveredWhere
- freightRecoveredExTax
- Freight recovered (currency units/order, ex tax)Source: Business record
- productRevenueExTax
- Product revenue (currency units, ex tax)Source: Calculated output
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
productCostExTax = units ordered * product cost per unitWhere
- productCostPerUnitExTax
- Product cost per unit (currency units/unit, ex tax)Source: Business record
- unitsOrdered
- Units ordered (units)Source: Calculated output
- productCostExTax
- Product cost (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
fulfilmentCostExTax = pick/pack + case handling + freightWhere
- unitsPerCase
- Units per case (whole units/case)Source: Business record
- handlingCostPerCaseExTax
- Handling cost per case (currency units/case, ex tax)Source: Business record
- freightCostExTax
- Freight cost (currency units/order, ex tax)Source: Business record
- fulfilmentCostExTax
- Fulfilment and freight cost (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
paymentAndBadDebtCostExTax = total revenue * (payment fee + bad-debt rate)Where
- paymentFeeRate
- Payment fee rate (decimal fraction of wholesale order revenue)Source: Business record
- badDebtRate
- Expected bad-debt rate (decimal fraction of wholesale order revenue not collected)Source: Business record
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
- paymentAndBadDebtCostExTax
- Payment and bad-debt cost (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
fundingCostExTax = total revenue * annual funding rate * payment days / 365Where
- annualFundingRate
- Annual funding rate (decimal annual funding rate)Source: Business record
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
- fundingCostExTax
- Payment-term funding cost (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
totalCostExTax = product + fulfilment + payment leakage + fundingWhere
- productCostPerUnitExTax
- Product cost per unit (currency units/unit, ex tax)Source: Business record
- productCostExTax
- Product cost (currency units, ex tax)Source: Calculated output
- fulfilmentCostExTax
- Fulfilment and freight cost (currency units, ex tax)Source: Calculated output
- fundingCostExTax
- Payment-term funding cost (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
contributionExTax = total revenue - total order costWhere
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
- contributionExTax
- Wholesale order contribution (currency units, ex tax)Source: Calculated output
contributionMargin = contribution / total revenueWhere
- totalRevenueExTax
- Total order revenue (currency units, ex tax)Source: Calculated output
- contributionExTax
- Wholesale order contribution (currency units, ex tax)Source: Calculated output
- contributionMargin
- Wholesale order margin (decimal rate)Source: Calculated output
requiredPricePerCaseExTax = protected order cost and leakage solved at target marginWhere
- unitsPerCase
- Units per case (whole units/case)Source: Business record
- pricePerCaseExTax
- Wholesale price per case (currency units/case, ex tax)Source: Business record
- targetMargin
- Target wholesale margin (decimal fraction of wholesale order revenue)Source: Business record
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
- requiredPricePerCaseExTax
- Required price per case (currency units, ex tax)Source: Calculated output
minimumOrderCases = fixed order cost / contribution per case before fixed costWhere
- unitsPerCase
- Units per case (whole units/case)Source: Business record
- totalCostExTax
- Total wholesale order cost (currency units, ex tax)Source: Calculated output
- contributionExTax
- Wholesale order contribution (currency units, ex tax)Source: Calculated output
- minimumOrderCases
- Minimum order cases (units)Source: Calculated output
Money inputs and outputs use the currency selected in the scenario without changing the canonical methodology. Rates, margins, utilisation and buffers are entered as percentages and converted to decimal values for calculation.
2. Worked example
Input assumptions
The worked rows below are evaluated at render time by the same shared engine and visible default fixture as the interactive workflow.
- Cases ordered
- 10 whole cases/order
- Units per case
- 12 whole units/case
- Wholesale price per case
- 120 currency units/case, ex tax
- Product cost per unit
- 5 currency units/unit, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Freight recovered
- 80 currency units/order, ex tax
- Payment fee rate
- 0.02 decimal fraction of wholesale order revenue
- Expected bad-debt rate
- 0.01 decimal fraction of wholesale order revenue not collected
- Payment term days
- 30 whole days/order payment term
- Annual funding rate
- 0.12 decimal annual funding rate
- Target wholesale margin
- 0.25 decimal fraction of wholesale order revenue
Calculation and outputs
Units ordered
unitsOrdered = cases ordered * units per case- Cases ordered
- 10 whole cases/order
- Units per case
- 12 whole units/case
- Wholesale price per case
- 120 currency units/case, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Required price per case
- 100.429784 money
- Minimum order cases
- 2 units
Engine result: 120 units
Product revenue
productRevenueExTax = cases ordered * wholesale price per case- Cases ordered
- 10 whole cases/order
- Units per case
- 12 whole units/case
- Wholesale price per case
- 120 currency units/case, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Target wholesale margin
- 0.25 decimal fraction of wholesale order revenue
- Units ordered
- 120 units
- Total wholesale order cost
- 821.024658 money
- Wholesale order contribution
- 458.975342 money
- Wholesale order margin
- 0.358574 percent
- Required price per case
- 100.429784 money
- Minimum order cases
- 2 units
Engine result: 1,200 money
Total order revenue
totalRevenueExTax = product revenue + freight recovered- Product cost per unit
- 5 currency units/unit, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Freight recovered
- 80 currency units/order, ex tax
- Product revenue
- 1,200 money
- Product cost
- 600 money
- Fulfilment and freight cost
- 170 money
Engine result: 1,280 money
Product cost
productCostExTax = units ordered * product cost per unit- Cases ordered
- 10 whole cases/order
- Product cost per unit
- 5 currency units/unit, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Units ordered
- 120 units
- Product revenue
- 1,200 money
- Fulfilment and freight cost
- 170 money
- Payment and bad-debt cost
- 38.4 money
- Payment-term funding cost
- 12.624658 money
- Total wholesale order cost
- 821.024658 money
Engine result: 600 money
Fulfilment and freight cost
fulfilmentCostExTax = pick/pack + case handling + freight- Units per case
- 12 whole units/case
- Wholesale price per case
- 120 currency units/case, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Freight recovered
- 80 currency units/order, ex tax
- Required price per case
- 100.429784 money
Engine result: 170 money
Payment and bad-debt cost
paymentAndBadDebtCostExTax = total revenue * (payment fee + bad-debt rate)- Payment fee rate
- 0.02 decimal fraction of wholesale order revenue
- Expected bad-debt rate
- 0.01 decimal fraction of wholesale order revenue not collected
- Payment term days
- 30 whole days/order payment term
- Annual funding rate
- 0.12 decimal annual funding rate
- Product revenue
- 1,200 money
- Total order revenue
- 1,280 money
- Payment-term funding cost
- 12.624658 money
Engine result: 38.4 money
Payment-term funding cost
fundingCostExTax = total revenue * annual funding rate * payment days / 365- Payment fee rate
- 0.02 decimal fraction of wholesale order revenue
- Expected bad-debt rate
- 0.01 decimal fraction of wholesale order revenue not collected
- Payment term days
- 30 whole days/order payment term
- Annual funding rate
- 0.12 decimal annual funding rate
- Product revenue
- 1,200 money
- Total order revenue
- 1,280 money
- Payment and bad-debt cost
- 38.4 money
Engine result: 12.624658 money
Total wholesale order cost
totalCostExTax = product + fulfilment + payment leakage + funding- Product cost per unit
- 5 currency units/unit, ex tax
- Payment fee rate
- 0.02 decimal fraction of wholesale order revenue
- Payment term days
- 30 whole days/order payment term
- Annual funding rate
- 0.12 decimal annual funding rate
- Product revenue
- 1,200 money
- Product cost
- 600 money
- Fulfilment and freight cost
- 170 money
- Payment and bad-debt cost
- 38.4 money
- Payment-term funding cost
- 12.624658 money
Engine result: 821.024658 money
Wholesale order contribution
contributionExTax = total revenue - total order cost- Product cost per unit
- 5 currency units/unit, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Product revenue
- 1,200 money
- Total order revenue
- 1,280 money
- Product cost
- 600 money
- Fulfilment and freight cost
- 170 money
- Payment and bad-debt cost
- 38.4 money
- Payment-term funding cost
- 12.624658 money
- Total wholesale order cost
- 821.024658 money
- Wholesale order margin
- 0.358574 percent
- Minimum order cases
- 2 units
Engine result: 458.975342 money
Wholesale order margin
contributionMargin = contribution / total revenue- Product revenue
- 1,200 money
- Total order revenue
- 1,280 money
- Wholesale order contribution
- 458.975342 money
Engine result: 0.358574 percent
Required price per case
requiredPricePerCaseExTax = protected order cost and leakage solved at target margin- Product cost per unit
- 5 currency units/unit, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Target wholesale margin
- 0.25 decimal fraction of wholesale order revenue
- Total order revenue
- 1,280 money
- Product cost
- 600 money
- Fulfilment and freight cost
- 170 money
- Payment and bad-debt cost
- 38.4 money
- Payment-term funding cost
- 12.624658 money
- Total wholesale order cost
- 821.024658 money
- Wholesale order contribution
- 458.975342 money
- Wholesale order margin
- 0.358574 percent
- Minimum order cases
- 2 units
Engine result: 100.429784 money
Minimum order cases
minimumOrderCases = fixed order cost / contribution per case before fixed cost- Units per case
- 12 whole units/case
- Wholesale price per case
- 120 currency units/case, ex tax
- Product cost per unit
- 5 currency units/unit, ex tax
- Pick and pack cost per order
- 50 currency units/order, ex tax
- Handling cost per case
- 2 currency units/case, ex tax
- Freight cost
- 100 currency units/order, ex tax
- Total order revenue
- 1,280 money
- Product cost
- 600 money
- Fulfilment and freight cost
- 170 money
- Payment and bad-debt cost
- 38.4 money
- Payment-term funding cost
- 12.624658 money
- Total wholesale order cost
- 821.024658 money
- Wholesale order contribution
- 458.975342 money
- Wholesale order margin
- 0.358574 percent
- Required price per case
- 100.429784 money
Engine result: 2 units
Example
The worked rows below are evaluated at render time by the same shared engine and visible default fixture as the interactive workflow.
- Units ordered
- 120
- Product revenue
- 1,200 currency units
- Total order revenue
- 1,280 currency units
- Product cost
- 600 currency units
- Fulfilment and freight cost
- 170 currency units
- Payment and bad-debt cost
- 38.4 currency units
- Payment-term funding cost
- 12.62 currency units
- Total wholesale order cost
- 821.02 currency units
- Wholesale order contribution
- 458.98 currency units
- Wholesale order margin
- 35.9%
- Required price per case
- 100.43 currency units
- Minimum order cases
- 2
The exact engine-derived outputs are shown in the labelled rows below.
Interpretation
Order contribution must include discount, freight, fulfilment and payment-term burden.
3. Validation and boundary checks
- All inputs must be finite and inside the visible validation boundaries.
- Rates are retained as decimal values and shown as percentages only at the presentation boundary.
- The worked fixture must expose every declared result: unitsOrdered, productRevenueExTax, totalRevenueExTax, productCostExTax, fulfilmentCostExTax, paymentAndBadDebtCostExTax, fundingCostExTax, totalCostExTax, contributionExTax, contributionMargin, requiredPricePerCaseExTax, minimumOrderCases.
- Scenario comparison changes one declared driver while holding the remaining industry records constant.
- Cases ordered minimum
casesOrdered โฅ 0 whole cases/orderโ A lower value is rejected before calculation.- Cases ordered maximum
casesOrdered โค 100,000,000 whole cases/orderโ A higher value is rejected before calculation.- Units per case minimum
unitsPerCase โฅ 1 whole units/caseโ A lower value is rejected before calculation.- Units per case maximum
unitsPerCase โค 100,000 whole units/caseโ A higher value is rejected before calculation.- Wholesale price per case minimum
pricePerCaseExTax โฅ 0 currency units/case, ex taxโ A lower value is rejected before calculation.- Wholesale price per case maximum
pricePerCaseExTax โค 10,000,000 currency units/case, ex taxโ A higher value is rejected before calculation.- Product cost per unit minimum
productCostPerUnitExTax โฅ 0 currency units/unit, ex taxโ A lower value is rejected before calculation.- Product cost per unit maximum
productCostPerUnitExTax โค 10,000,000 currency units/unit, ex taxโ A higher value is rejected before calculation.- Pick and pack cost per order minimum
pickPackCostPerOrderExTax โฅ 0 currency units/order, ex taxโ A lower value is rejected before calculation.- Pick and pack cost per order maximum
pickPackCostPerOrderExTax โค 10,000,000 currency units/order, ex taxโ A higher value is rejected before calculation.- Handling cost per case minimum
handlingCostPerCaseExTax โฅ 0 currency units/case, ex taxโ A lower value is rejected before calculation.- Handling cost per case maximum
handlingCostPerCaseExTax โค 10,000,000 currency units/case, ex taxโ A higher value is rejected before calculation.- Freight cost minimum
freightCostExTax โฅ 0 currency units/order, ex taxโ A lower value is rejected before calculation.- Freight cost maximum
freightCostExTax โค 10,000,000 currency units/order, ex taxโ A higher value is rejected before calculation.- Freight recovered minimum
freightRecoveredExTax โฅ 0 currency units/order, ex taxโ A lower value is rejected before calculation.- Freight recovered maximum
freightRecoveredExTax โค 10,000,000 currency units/order, ex taxโ A higher value is rejected before calculation.- Payment fee rate minimum
paymentFeeRate โฅ 0 decimal fraction of wholesale order revenueโ A lower value is rejected before calculation.- Payment fee rate maximum
paymentFeeRate โค 1 decimal fraction of wholesale order revenueโ A higher value is rejected before calculation.- Expected bad-debt rate minimum
badDebtRate โฅ 0 decimal fraction of wholesale order revenue not collectedโ A lower value is rejected before calculation.- Expected bad-debt rate maximum
badDebtRate โค 1 decimal fraction of wholesale order revenue not collectedโ A higher value is rejected before calculation.- Payment term days minimum
paymentTermDays โฅ 0 whole days/order payment termโ A lower value is rejected before calculation.- Payment term days maximum
paymentTermDays โค 3,650 whole days/order payment termโ A higher value is rejected before calculation.- Annual funding rate minimum
annualFundingRate โฅ 0 decimal annual funding rateโ A lower value is rejected before calculation.- Annual funding rate maximum
annualFundingRate โค 1 decimal annual funding rateโ A higher value is rejected before calculation.- Target wholesale margin minimum
targetMargin โฅ 0 decimal fraction of wholesale order revenueโ A lower value is rejected before calculation.- Target wholesale margin maximum
targetMargin โค 0.99 decimal fraction of wholesale order revenueโ A higher value is rejected before calculation.
4. Assumptions and source classification
- Costs, capacity, contract terms, tax rates and targets are supplied by the user.
- No provider default, jurisdictional rule or industry benchmark is embedded.
- The shared engine retains full precision and display formatting never feeds calculation.
This planner has no current policy-data dependency. Its commercial assumptions are user supplied. Registered family-level regression suites exercise the shared business-logic engine and worked-result reconciliation.
5. Limitations
- Results are only as reliable as the timing, scope and basis of the entered records.
- The workflow does not predict demand or establish accounting, tax, contractual or legal treatment.
This is educational decision support, not tax, accounting, legal or financial advice. Check the treatment of your actual transactions under the rules that apply to your business and seek qualified advice where appropriate.
6. Update and evidence policy
Registered family-level suites test formula invariants and example reconciliation; the release ledger records that coverage without claiming a separate oracle for every line of public copy. There is no official threshold or benchmark to refresh for this planner. Commercial inputs remain user-supplied because they vary by business and contract.
Change history
- : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.
Related reading
Guides to interpret the decision and its assumptions.
- Wholesale Economics: Trade Discount, Terms and Volume
Reconcile wholesale contribution, payment timing, order volume and funding needs before accepting a trade account.
Read guide