Profit Model Desk
You sold $32,000. Why is cash still tight? Split revenue into contribution profit first.
This is not an accounting primer. It answers the weekly operator question: revenue and ROAS look fine, but replenishment, refunds, payment fees, and ad billing still squeeze cash. Can the store actually scale?
The anchor case is one PetNest order from a US Shopify store in May 2026: $79 sale price - $8 discount - $24 COGS - $9 fulfillment - $2.50 payment fee - $3 refund reserve = $32.50 pre-ad contribution room; minus a $22 seven-day CPA, post-ad contribution profit is $10.50. This order-level teaching model excludes sales tax, duties, and fixed costs, so it is not final net profit. The desk organizer, tumbler, and repeat-order examples later in the lesson are separate stress tests. Do not mix their costs into the PetNest row.
Lesson asset
DTC profit model sheet
00 Can this scale?
More sales do not mean more budget. First calculate what each order leaves behind.
This minimum decision sheet comes first. It turns the lesson from finance terminology into one operating question: when dashboards look good but cash is tight, which fields decide continue, pause, fill data, or move into weekly review?
Ask where the money went
When the ad dashboard looks good but cash is tight, do not start by asking whether ROAS can scale.
Write first: Write sales, discount, COGS, shipping, payment fee, refund reserve, ad spend, and post-ad contribution profit first.
Block: Before the per-order remainder is known, do not increase budget, deepen discounts, or treat platform revenue as profit.
Build the copyable template first
The first sheet is not a full P&L. It only judges whether orders and ad actions leave contribution profit.
Write first: Each row marks field source and status: verified, estimated, or missing.
Block: When too many fields are estimated, it cannot justify heavy scaling; it only supports field completion and small validation.
Fixed costs stay in layer two
Rent, payroll, software, and agency fees matter, but should not overload the first sample sheet.
Write first: This lesson starts with order variable costs and post-ad contribution profit; weekly or monthly review adds fixed-cost guardrails.
Block: Do not treat fixed costs as irrelevant just because they are not in the first sheet.
Separate from weekly operations review
This lesson owns the profit-model basis; it does not replace weekly operations routing.
Write first: The profit model gives fields and guardrails; Operations decides who fixes ads, merchandising, fulfillment, or cash rhythm this week.
Block: Do not turn this into a full WBR, and do not treat WBR as the profit model itself.
01 Plain terms
Do not assume ROAS, COGS, or contribution profit are obvious.
These are not decorative terms. The sheet, calculation, and stop/go rules depend on them.
DTC
DTC means a brand sells directly to consumers through its own storefront. It describes the route, not guaranteed profit.
A pet travel mat order lands in Shopify, but product cost, fulfillment, payment fees, refund reserve, and ad cost still need to be deducted.
ROAS
ROAS is ad revenue return, usually attributed revenue divided by ad spend. It can show revenue return, but not product cost, refunds, or fulfillment cost.
A ROAS of 3 can still hide thin contribution profit if discount, shipping subsidy, and refund reserve are high.
COGS
COGS is cost of goods sold. It is not selling price or ad cost; it is the product cost tied to the item sold.
A $79 pet travel mat may have $24 COGS, usually from Shopify cost per item or a SKU cost sheet.
CPA / CAC
CPA is the ad cost for an action or purchase; CAC is often used for new-customer cost. This lesson uses them to test affordable acquisition cost.
If the order has $32.5 left before ads, a CPA near or above $32.5 should block easy budget scaling.
Contribution profit
Contribution profit is what remains after discount, product cost, fulfillment, payment fee, refund reserve, and ad cost.
It is not full accounting profit, but it tells operators whether the order can be used as a scaling sample.
Cash rhythm
Cash rhythm looks at when cash leaves, when it returns, and whether inventory, ads, and refund reserve tie up cash.
A model can show contribution profit while replenishment, payouts, and ad spend still create cash pressure.
Profit variance triage
Profit variance triage means assigning a profit problem to price, discount, inventory, ads, fulfillment, refunds, or finance rules instead of guessing in a meeting.
A contribution-profit drop may come from higher CPA or higher refund reserve; the decision lead and action are different.
01A Read one full row first
Why is a $79 order not $79 of available cash?
Do not touch the calculator yet. Read one PetNest order in the order its money moves, so the later fields, scenarios, and quick check share one basis.
The customer's $79 first becomes an order fact, not free cash. The $8 discount already reduces collection. The $24 product cost tied up cash at purchase and receiving. The $9 fulfillment charge, $2.50 payment fee, and $3 refund reserve appear through carrier bills, payout detail, or the after-sales window. Put the amounts in the order they happen to see which layer ad spend is consuming.
The first calculation is $79 - $8 - $24 - $9 - $2.50 - $3 = $32.50. That is not final net profit; it is pre-ad contribution room. Then deduct the $22 seven-day CPA for comparable first orders: $32.50 - $22 = $10.50. Only after the second calculation can the team discuss whether this order type has post-ad contribution profit in the current sample window.
That $22 belongs to PetNest's US store, May 2026, and a seven-day read of pet-travel-mat first orders. Move to another market, add a deep-discount campaign, use a 14-day window, or substitute repeat-order CPA, and the result must be recalculated. Positive contribution also does not guarantee cash is available: inventory deposits and ad billing can arrive before payout.
Build the first model from Shopify Orders and mark every field verified, estimated, or missing; then carry the same order population into the report-reconciliation stage in the evidence trail. If fulfillment scope is unclear, refund reserve is a guess, or ad spend belongs to another order population, complete the evidence before using the model for a large-scale decision.
02 Build one order-profit sheet
Make the model one table of fields, sources, and actions.
The point is not perfect precision on day one; it is reviewable fields, clear follow-through, and usable actions.
Order revenue
Actual order revenue, not ad-attributed revenue.
Shopify orders and sales reports
Operations lead
Confirm whether the money actually happened.
Discount
Coupon, automatic discount, member price, bundle offer.
Shopify discounts and order detail
Marketing / operations
Judge whether the offer consumes profit room.
COGS
Cost of goods sold; estimates must be flagged.
Shopify cost per item, SKU cost sheet
Merchandising / finance
Check whether gross margin holds.
Fulfillment and shipping
Shipping, packaging, storage, free-shipping subsidy, return handling.
Carrier bill, fulfillment log, refund log
Fulfillment / operations
Judge whether shipping promises and thresholds are sustainable.
Payment fees
Payment processing fees and transaction-related charges.
Shopify payments reports, payment provider reports
Finance
Fix the net-revenue view.
Refund reserve
Order cost reserved from refund rate, return handling, and support credits.
Refund log, support tickets, return reasons
Support / finance
Avoid treating risky orders as healthy growth.
Ad cost
CPA, CAC, or spend tied to order, SKU, or channel.
Google Ads, Meta Ads, UTM, GA4
Ads lead
Test whether acquisition cost exceeds the affordable room.
Contribution profit
Revenue minus discount, variable costs, and ad cost.
Calculated in the profit model sheet
Business lead
Decide scale, reduce, reprice, lower discount, or pause.
03 Profit layers
Revenue, margin, contribution profit, and cash impact need separate layers.
Revenue layer
Order revenue, discount, pre/post-refund view
Revenue growth may only be deeper discount or delayed refunds.
Gross margin layer
Revenue - discount - COGS
Without product cost, you cannot judge whether the SKU is worth pushing.
Contribution profit layer
Gross margin - fulfillment - fees - refund reserve - ad cost
Orders below the guardrail cannot be scale samples.
Cash impact layer
Payout timing, inventory payment, ad pre-spend, refund reserve
Profit can look acceptable while cash still gets tight.
03A Profit-layer control line
Separate order judgment, company ledger, and cash timing first.
One order can carry gross-margin, contribution-profit, and cash information, but those signals do not substitute for one another. Name each layer first so the formulas, budget moves, and review use the same basis.
Use the control line below to name each number. Order-level contribution profit is not accounting net profit. An order model can support a local judgment about a SKU, offer, or ad move; company operating and accounting conclusions must return to the formal ledger.
- Gross margin: first confirm the product has room
- Use net revenue from the same order scope minus COGS. State how shipping revenue, sales tax, and refunds enter the current ledger.
- Record the SKU cost version, effective date, and order scope. It only describes product-level room, not fulfillment, payment, ads, or company cost.
- Contribution profit 1: after order variable costs
- Deduct fulfillment, payment fees, and refund reserve from gross margin to get pre-ad contribution room.
- Mark which costs are verified and which remain estimates. Estimates can reveal a gap; they cannot pose as scaling evidence.
- Contribution profit 2: the buffer after ads
- Deduct actual CPA / CAC from the same market, order type, and observation window from contribution profit 1 to make the post-ad call.
- Write the minimum kept contribution and affordable CPA. It supports a narrow continue, margin repair, or pause; it does not automatically approve budget.
- Company operating / accounting net profit: return to the formal ledger
- Payroll, software, fixed storage, overhead, taxes, inventory accounting, and other company-level items need separate confirmation under the company accounting policy, market, and closing period.
- The order calculator in this lesson does not automatically create accounting net profit. Record model version, market, currency, and review date for finance before using it in formal reporting.
- Payout and cash: a timing question, not a profit layer
- Payout dates, inventory deposits, ad billing, and refund reserve can tie up bank cash even when orders show positive contribution.
- Put the next payment, payout, and cash floor in the same record. When cash conflicts, slow down before moving to the cash-flow lesson to plan timing.
A budget move becomes reviewable only when contribution profit 2, the minimum kept contribution, and affordable CPA are written back to the same versioned record.
04 Generic example
Use one pet travel mat order to reach post-ad contribution profit.
The walkthrough uses a generic product order to break down profit. The point is not the brand story; it is the relationship between price, costs, refund reserve, ad spend, and final contribution profit.
Order revenue
$79
Sale price for a pet travel mat.
Discount
- $8
Coupon or campaign discount.
COGS
- $24
Product cost.
Fulfillment
- $9
Shipping, packaging, and handling.
Payment fee
- $2.5
Payment processing fee.
Refund reserve
- $3
Reserved from historic refunds and support credits.
Pre-ad contribution room
$32.5
79 - 8 - 24 - 9 - 2.5 - 3.
Post-ad contribution profit
$10.5
After subtracting a $22 seven-day CPA.
04B Interactive calculator
Move one cost line and watch contribution profit change.
A profit model is not memorizing a formula. Use this default order to see whether changing discount, fulfillment, refund reserve, or ad cost still leaves a scaling sample.
Post-ad contribution profit
$7.5
Observation only; do not use this order type as a scaling sample.
This exercise covers variable costs only. Fixed costs, tax, and accounting definitions belong in a fuller finance sheet.
04B+ Complete order breakdown
Run the same formula through four concrete order scenarios.
A DTC profit model calculator should not stop at one clean default. Run high-discount, high-fulfillment, low-AOV, and repeat orders to see what can scale and what needs margin repair first.
Order profit breakdown calculator
Pet travel mat first order
Not copied yet. Select the button to copy this record.
04C $10k ad spend walkthrough
Run a full profit chain from one $10k ad spend round.
After one order is clear, inspect a full budget round. Read the layered numbers on the left, choose the pressure that matches your store on the right, then copy the judgment into lesson notes. The goal is not a pretty ROAS; it is deciding whether this round should scale, repair margin, or protect cash first.
Price or promotion cannot be read apart from this profit chain. This conceptual paper on the marketing mix across time and space frames the question around who acts, which instruments are used, how they are executed, and how market context changes the answer. For this budget round, turn that framing into a check: record offer cost, order demand, inventory capacity, and cash timing separately before deciding whether to repair price, narrow a channel, or pause scaling. The paper is only an abstract-level conceptual frame. It exposes no reconstructable empirical sample, observation window, or causal estimate, so it cannot prove that any price, promotion, or revenue will become profit in this store. The current decision still requires the same order population and local cost evidence.
Budget profit chain
$10k ad spend does not end at ROAS
$10k ad spend
$10000
This budget is already spent, so platform-attributed revenue is not enough.
Lock the ad cost first, then subtract real order and cost facts.
Platform-attributed revenue
$32000
The ad platform shows 3.2 ROAS, but this is not profit yet.
Use the ROAS tool for revenue efficiency, not scale permission.
Shopify net sales
$29400
After discounts, cancellations, and known refunds, the order basis is smaller.
Use order facts instead of ad attribution to avoid inflated revenue.
Product and fulfillment costs
-$16310
COGS, fulfillment, payment fees, and refund reserve consume the room together.
If cost fields are incomplete, this budget round is not a healthy sample.
Post-ad contribution profit
$3090
This round still contributes, but contribution rate is only about 10.5%.
Observe and tune; do not jump straight into heavy scaling.
Cash gap warning
-$7500
A replenishment deposit and ad billing hit before all cash returns.
If payout and inventory payment collide, slow down before adding budget.
Choose the main pressure in this budget round
Do not repair every problem at once. Pick the main pressure first; the action tells you what to change this week and what not to do yet.
Current judgment
$3,090 / $10,000 = 0.31 profit ROAS
Platform ROAS looks fine at 3.2, but post-ad contribution profit is only $3,090.
Not copied yet. Select the button to copy this record.
04D Contribution break-even line
Calculate affordable CPA before trusting ROAS for scale.
This turns 'ROAS looks good' into an operating line: pre-ad room, required buffer, and the most ad cost can consume.
Current sample break-even
The $12 buffer is a teaching default. Real stores should tune it by fixed cost, refund volatility, and cash pressure.
Pre-ad contribution room
Revenue - discount - COGS - fulfillment - payment fee - refund reserve
This is the room ads, offers, and channel actions can consume; it is not full accounting profit.
Minimum kept contribution profit
Buffer for fixed cost, cost variance, and cash pressure
Without a buffer, a higher CPA or delayed refund can push profit to zero.
Affordable CPA / CAC
Pre-ad room - minimum kept contribution profit
Ad ROAS can look high, but CPA above this line is not healthy scaling.
Post-ad contribution profit
Pre-ad room - actual CPA / CAC
This line decides whether to scale, observe, or revisit price, discount, refunds, and fulfillment cost.
Break-even ROAS vs affordable CPA
Affordable CPA is the maximum acquisition cost one order can absorb; break-even ROAS is the ratio floor between ad spend and real margin. Both must start after real cost deductions, not directly from attributed platform revenue.
Start with real pre-ad contribution room
$79 - $8 discount - $24 COGS - $9 fulfillment - $2.5 payment fee - $3 refund reserve = $32.5
This turns platform revenue into real order profit room before ROAS is allowed to influence scale.
Then convert it into affordable CPA
$32.5 - $12 minimum kept contribution = $20.5 affordable CPA
If actual CPA stays above $20.5, platform ROAS may beat its target while still missing your break-even line.
Read break-even ROAS last
Break-even ROAS is the ratio floor between ad spend and real margin, not any attributed ROAS shown by the ad platform.
ROAS above the platform target is not the same as ROAS above your profit break-even line; confirm value basis and cost scope first.
05 Sampling rhythm
Sample first; do not rebuild all history immediately.
The sampling goal is not final finance precision; it is field coverage, consistent definitions, and clear responsibility.
Minimum useful sample
- Five high-volume SKU orders
- Five high-discount orders
- Five high-refund orders
- Five new-channel orders
- Six priority SKUs, tagged as verified, estimated, or missing
Three weeks to fixed guardrails
Week 1: sample and mark verified, estimated, or missing.
Week 2: classify healthy profit, thin profit, cash pressure, refund risk.
Week 3: set contribution floor, refund warning line, and cash slowdown rule.
Month-end: write thresholds back to budget, offers, inventory, and channel actions.
05B 30-minute model drill
Turn the profit model from concept into a reviewable sheet.
The completion standard is not a pretty sheet. Every action must map back to one profit variable: revenue, discount, COGS, fulfillment, payment fee, refund, ad cost, or cash rhythm.
1. Pull orders first
Latest 20 orders across high volume, high discount, high refund, and new channel.
Whether revenue, discount, SKU, channel, and refund status can return to one row.
One order sample sheet, not a full history rebuild.
2. Mark field evidence
Cost per item, fulfillment bill, payment fee, refund log, and ad cost.
Each field is marked verified, estimated, or missing.
A model that does not treat estimates as facts.
3. Calculate the break-even line
Pre-ad room, minimum kept contribution profit, and recent actual CPA.
Whether actual CPA is below affordable CPA / CAC.
Continue, observe, reduce discount, reprice, or pause scaling.
4. Write back the action
This week budget, offer, inventory, and channel actions.
Whether the action maps to one profit variable and one counter-signal.
Copyable DTC profit model notes, not a vague profit is weak note.
06 Evidence trail
Do not make a profit call from one metric in one system.
Order facts
Shopify orders, sales reports, refund log
Prevents treating attributed revenue as actual order revenue.
Cost facts
SKU cost sheet, fulfillment bill, payment reports, support credits
Prevents mixing gross margin with contribution profit.
Channel facts
Google Ads, Meta Ads, GA4, UTM, email flows
Shows whether ads, page, email, or merchandising should move.
Action facts
Weekly business review action log
Prevents the next review from explaining the same variance again.
Official verification boundary
When reports disagree, return to the same orders
A familiar situation is an ad dashboard showing $32,000 in revenue, Shopify showing only $29,400 in net sales, and the Payments payout coming in lower than both. Do not choose the number that merely looks more reliable. First ask what each report is observing: the ad platform may aggregate attributed revenue inside its window; Shopify net sales may already reflect some discounts or refunds; payout also follows payment fees, settlement timing, and adjustments. These are not three interchangeable versions of truth. They are three views of one operating process.
PetNest's reconciliation order is fixed. First, export attributed order IDs, spend, channel, and ad dates for the seven-day window from the ad report instead of copying Campaign revenue. Second, find the same orders in Shopify Orders and label paid, cancelled, partial-refund, and full-refund states. Third, map each variant to the SKU cost sheet and check whether cost per item uses the current purchase cost version. Fourth, reconcile the payout total against payment fees, refunds, and adjustments, then put any unexplained remainder in the missing-evidence field.
The pass line is not exact equality across all three reports. It is an explanation for each difference—attribution timing, discount basis, refund, fee, settlement, or order state—with the same refund deducted only once. If ad-attributed revenue exceeds Shopify net sales by $2,600, with $1,400 from later-refunded attributed orders, $800 from a scope or discount difference, and $400 still unexplained, record the $400 and keep scaling narrow. Do not call all $2,600 fake ad revenue.
Route the difference by where it clusters: for a channel pattern, check UTM, attribution windows, and repeat-order duplication; for a SKU pattern, check discount stacking, variant cost, and refund reason; for a payout pattern, check fee detail, currency conversion, and adjustments. Finally, record a learner-owned follow-up: who you will contact, what you will do first, and the next review date. The weekly review can then track a closable difference instead of arguing over which dashboard wins.
The later scenario calculator, $10k budget exercise, and quick choice are pressure tests on this reconciliation record. A continue result only means the action stays inside the current contribution guardrail under the entered assumptions; it does not replace order-level reconciliation or prove that the refund window is complete. Reconcile one order population before letting a calculation change spend.
06B Evidence boundaries
Each system proves only part of the profit story.
Set the reading boundaries first: the profit model needs to know what Shopify, payment providers, ad platforms, GA4, and email platforms can and cannot prove.
Shopify profit reports
Products or variants with cost per item can show net sales, cost, gross profit, and margin changes after discounts or refunds.
Cost per item is static and does not automatically include real shipping, payment fees, reshipments, support credits, or dynamic purchasing cost.
Use it as the first profit layer, not final contribution profit.
Shopify Payments / Stripe / PayPal
Refund, payment fee, dispute, and payout impact on cash.
After a refund, original payment processing fees usually do not return; disputes also hold balance and evidence time.
Put payment fees, dispute fees, and refund reserve into pre-ad contribution room.
Google Ads conversion value
The value / ROAS signal the ad system optimizes toward.
Value is not profit; if the uploaded value is order revenue, it cannot directly become affordable CPA.
Record whether ad value is revenue, gross margin, or a contribution-profit proxy.
GA4 purchase / refund events
Onsite purchase, item, discount, refund, and path behavior.
Refunds need a refund event, ideally with item_id and quantity, to see item-level refund impact.
Use it to explain paths and item behavior, not to replace Shopify order facts.
Klaviyo attributed revenue
Email or SMS may have participated in an order within its attribution window.
Default attribution windows can credit revenue to a message touch, but that is not order profit or incrementality proof.
Email revenue must return to order cost, discount, and repeat margin before judgment.
Google Ads value-basis register
Writing Google Ads conversion value is not enough. Register whether each value is revenue, gross margin, or a contribution-profit proxy; whether discounts, refunds, tax, shipping, and payment fees are deducted; and whether it drives optimization or reporting.
Platform
Record Google Ads, Meta, GA4, Shopify, and Klaviyo separately.
Know whether the value is used for optimization or reporting.
Uploaded value
Label whether it is order revenue, net sales, gross margin, or a contribution-profit proxy.
Revenue value cannot directly become profit ROAS or affordable CPA.
Deduction scope
Record tax/shipping inclusion, discount deduction, refund deduction, and payment-fee deduction.
ROAS values with different scopes cannot approve the same scaling line.
Review window
Specify whether the review happens after 7 days, 14 days, or the refund window.
Prevents today's attractive ROAS from hiding next-week refunds and payout pressure.
Fixed costs enter layer two, not the first sample sheet
First sample sheet
Start with order-level variable costs and contribution profit so fixed costs do not blur the first action.
Weekly / monthly review
Then add payroll, software, fixed storage fees, agency fees, and tax reserve into the minimum contribution guardrail.
Cash still tight
If post-ad contribution stays positive while bank cash is still tight, move into cash-flow and fixed-cost review.
Company net profit, tax, and inventory accounting must return to the formal ledger and be reviewed for the applicable market, currency, and closing period; this lesson does not automatically calculate them into one order.
07 Stop / Go
The model must change budget, offers, inventory, and channel actions.
Healthy contribution profit, stable refunds, cash can support it
Continue or scale modestly.
Fields are verified and CPA stays below affordable room.
Revenue is high, but contribution profit is thin
Reduce discount, reprice, or reset free-shipping threshold.
Discount, shipping, or refund reserve consumes margin.
CPA stays above affordable room
Lower budget, change traffic, or pause low-margin SKUs.
Post-ad contribution profit is near zero or negative.
Refunds or support credits rise
Pause scaling and inspect product, page promise, and fulfillment.
Refund reasons, tickets, and reviews point to the same issue.
Many cost fields are estimated
Do not scale heavily; fill fields and assign decision leads first.
The model cannot distinguish verified costs from temporary estimates.
08 Quick check
ROAS looks fine, but contribution profit is near zero. Scale?
A pet travel mat has decent ROAS, but after discount, fulfillment, payment fee, refund reserve, and CPA, post-ad contribution profit is about $1. What is the best next action?
This choice exercise tests one decision already explained in the article: when revenue return looks good but variable cost and acquisition cost have pushed contribution profit close to zero, the ads team cannot decide to scale alone. Put revenue, discount, COGS, fulfillment, payment fee, refund reserve, and actual CPA for that order or SKU back on one row before comparing the minimum kept contribution profit.
Choosing an answer does not change a real order or prove that the refund window has closed. It simply orders the actions in this case: hold budget or narrow the test, complete cost and refund evidence, then decide whether discount, shipping threshold, page promise, SKU mix, or channel cost needs repair. After choosing, write the result into the copyable notes with a responsible lead and review date.
Write the selected result back into the order-reconciliation record above with the action, responsible lead, and review date; the calculator is only a pressure test, not order-level proof.
09 Profit model copyable lesson notes
Turn the profit model into copyable notes.
Do not write 'profit is bad.' Capture current pressure, first evidence, object, cause, this-week action, blocked move, review window, next route, and counter-signal.
Check the layer and version before copying. If model version, effective date, market, currency, or review date is missing, these notes cannot support a budget move across markets or periods.
DTC profit model copyable lesson notes
Not copied yet. Select the button to copy this record.
Write rules back every week
If ads, offers, inventory, and channels do not write back to the same model, next week returns to isolated metrics.
After the profit model sheet is set