Worksheet · 22 August 2026

How to Calculate the True Profit of a Shopify Post-Purchase Upsell

Quick answer: post-purchase upsell profit = what the card was charged for the add-on − COGS − payment fee on that charge − extra pick-and-pack − extra shipping − expected returns − a share of the app bill. Multiply by accepts for the month. Divide by offer views to get profit per view. Most online calculators stop at revenue. This page does the rest, with a worked example you can copy.

How to Calculate the True Profit of a Shopify Post-Purchase Upsell
By the PPUA Team · Published 22 August 2026 · ~14 min read
The 30-second answer

Do not stop at “we made $3,000 extra.” Subtract what it cost to make, cut, charge, pack, ship, refund, and run the app. Then divide remaining profit by how many people saw the offer. That profit-per-view number is how you pick a winner in A/B tests and how you decide 10–20% vs save-$ vs none.

What's on this page

  1. What our tools actually do
  2. The formula
  3. Each cost, defined
  4. Worked example
  5. Scale it to a month
  6. What is a good take rate?
  7. Break-even on the app
  8. Spreadsheet template
  9. Gotchas
  10. Worksheet checklist
  11. Oxify
  12. FAQ

What our free tools actually calculate

We have two public calculators. Neither is a profit engine. Say that out loud before you screenshot a number for a partner meeting.

The upsell revenue calculator does: monthly orders × take rate × offer price. That is extra sales if every accept pays list (or the price you typed). It does not subtract COGS, discounts, fees, or returns.

The AOV calculator does average order value. Useful as a baseline. Silent on whether the extra line was profitable. All free tools: /tools/.

Use this page for profit

Copy the formula into a sheet. Use your COGS from the product, your fee from Settings → Payments, and your real take rate from the app or from tagged orders. Invented take rates are how people lie to themselves.

The formula

Incremental profit is the extra cash that would not exist if the shopper had tapped no. Count only the add-on, not the original order.

Profit per accept = money the customer paid for the add-on − COGS − payment fees on that extra charge − extra pick-and-pack − extra shipping − expected return cost − app cost allocated to one accept.

Profit per view = (profit per accept × number of accepts) ÷ eligible offer views.

If your “accepted revenue” is already the discounted price the card was charged, do not subtract the discount again. If you start from list price, subtract the discount once. Pick one method and stick to it. Tracking the views and accepts: track post-purchase upsell revenue.

Each cost, in plain English

Skip a line and you will overstate the win. Here is what each one means.

Illustrative numbers — replace them

Worked example

A US store on a plan that pays 2.9% + $0.30 on the extra capture. Your rate may be lower. Confirm in admin.

Line Amount (USD) How we got it
List price of add-on $24.00 Product price in Shopify
Discount (15%) −$3.60 Offer rule
Accepted revenue (card) $20.40 What the changeset charged
COGS −$6.00 Landed unit cost
Payment fee −$0.89 2.9% × $20.40 = $0.59, plus $0.30 = $0.89
Extra pick-and-pack −$1.50 Second pick, same box
Extra shipping $0.00 Fits original carton
Expected return −$0.82 4% × ($20.40 refund + $0 assumed label on this SKU). Tune this.
App cost share −$0.12 $9.99 ÷ 80 accepts that month
Profit per accept $11.07 $20.40 − $6 − $0.89 − $1.50 − $0.82 − $0.12

The $0.30 fixed fee may already have been charged on the original checkout. Some stores only apply percentage to the upsell increment. Read one payout. If Shopify does not bill a second $0.30, drop it. The point is to use your processor’s rule, not this table’s.

If this offer is viewed 1,000 times and accepted 80 times, take rate is 8% of views. Monthly incremental profit ≈ 80 × $11.07 = $886. Profit per view ≈ $886 ÷ 1,000 = $0.89.

Now change only the discount to 0%. Suppose accepts fall to 55 and the card charges $24. Re-run the rows. If profit per view rises, full price won even though take rate fell. That is the whole argument against vanity AOV.

Scale it to a month (and to people who never see the page)

Shopify will not show the one-click page for many orders: wallets and installments (Apple Pay, Google Pay, Amazon Pay, Klarna, Affirm, Afterpay, Shop Pay Installments), COD and other non-card methods, gift-card payments, duties or multiple currencies, local delivery or pickup, subscriptions, orders under $0.50, and more. Regular Shop Pay with a saved card does see it. Note this works on every Shopify plan, so plan tier is not a filter. Documented in Shopify product-offer limitations.

Eligible checkouts can be much smaller than total orders. Profit per order in the store will look weaker than profit per view. Both are useful. Do not compare your take rate to a blog that used all orders as the denominator. First-time vs returning mix also changes COGS and return rate — split those offers.

What is a “good” take rate? Check the denominator first

You will see numbers online: “3–8% is typical,” “average 4.7%,” “top stores hit 20%+.” Most come from app vendors and most do not say what the denominator was.

Accepts ÷ views gives a higher number than accepts ÷ all orders, because wallet, BNPL, COD, and gift-card orders never see the page. A store with 40% Apple Pay traffic can have a 10% view take rate and a 6% order take rate on the same day.

In our experience a single-digit view take rate is normal for a relevant, modestly priced add-on. A take rate near zero usually means the product is wrong, not the price. A take rate that jumps after a deep discount is not a win until profit per view goes up too.

So before you compare yourself to a benchmark, write down which denominator you used. Then use the same one every month.

Break-even: how many accepts pay for the app?

App ROI pages love “18× return.” The honest version is simple: how many accepts cover the subscription, and how many views does that take?

Break-even accepts per month = monthly app cost ÷ profit per accept (before the app-cost line).

Break-even views = break-even accepts ÷ take rate (as a decimal).

Using the worked example: profit per accept before app cost is $11.19 ($20.40 − $6 − $0.89 − $1.50 − $0.82). At $9.99/mo, break-even is 0.9 accepts, so one accept a month covers the bill. At the $49.99 tier it is about 4.5 accepts, or roughly 56 views at an 8% take rate.

Break-even is easy to hit. That is not the point. The point is the next question: does a 15% discount earn more than it gives away? Only profit per view answers that.

Copy this into a spreadsheet

Eleven cells. One row per offer SKU. Fill the inputs from your admin, not from a blog.

CellInput or formulaWhere it comes from
APrice charged for add-onOrder line after discount
BCOGS per unitProduct cost field or 3PL invoice
CCard fee = A × rate + fixed fee (if billed)Settings → Payments; check one payout
DExtra pick-and-packWarehouse estimate
EExtra shipping$0 if same box and rate
FReturn cost = return rate × (A + label + restock)Last 90 days of returns on this SKU
GViews (eligible checkouts shown the offer)Upsell app analytics
HAcceptsUpsell app analytics or tagged orders
IApp cost share = monthly app bill ÷ HYour plan tier
JProfit per accept = A − B − C − D − E − F − IFormula
KProfit per view = J × H ÷ GFormula — this is the winner metric

Gotchas

These are the ways the spreadsheet lies.

Build the sheet once

Worksheet checklist

Built for Shopify · 5.0 ★

Oxify Cart Drawer & Upsell

Our app. One-click post-purchase, thank-you blocks, drawer, gifts, BOGO, volume discounts. From $9.99/mo, 14-day trial, Built for Shopify. 5.0 from 36 reviews — small sample. Put the $9.99 (or your tier) in the app-cost row. Do not pretend the calculator pages subtract it for you.

View Oxify on the Shopify App Store →

Plans also listed on postpurchaseupsellapp.com. App roundup: best post-purchase apps.

Questions, answered

Profit FAQ

How do you calculate post-purchase upsell profit on Shopify? +

Incremental profit per accept equals what the buyer paid for the add-on, minus COGS, minus the discount already in that price, minus payment fees on the extra charge, minus extra pick-and-pack, minus extra shipping, minus expected returns, minus a share of app cost. Then multiply by accepts, or divide by offer views for profit per view.

Is extra revenue the same as extra profit? +

No. Revenue is the extra line on the order. Profit is what remains after cost of goods, fees, labor, shipping, returns, and software. A $25 add-on at 12% take can look huge in a revenue calculator and still lose money if COGS and discounts are high.

What payment fee should I use? +

Use the credit card rate you actually pay. Shopify Payments rates vary by plan and country. Look them up in Settings → Payments and on Shopify’s pricing page. For a US Basic worked example this article uses 2.9% + $0.30 on the extra amount — replace that with your number.

Should I include the whole app bill in one offer’s profit? +

Only a share. If the app also runs your cart drawer and gifts, do not dump $9.99 onto one SKU. Divide monthly app cost by monthly accepted post-purchase offers, or by all orders the app touches. Be consistent month to month.

Do your free tools calculate profit? +

No. The upsell revenue calculator estimates extra sales (orders × take rate × price). The AOV calculator estimates average order value. Neither subtracts COGS, fees, or returns. Use this page’s worksheet for profit.

What is profit per view? +

Total incremental profit from the offer, divided by how many eligible checkouts saw it. It catches tests that raise take rate but destroy margin. Use it as the winner metric in A/B tests, not AOV alone.

What is a good post-purchase upsell take rate? +

It depends on the denominator. Accepts divided by offer views runs higher than accepts divided by all orders, because wallet, BNPL, COD, and gift-card checkouts never see the page. In our experience a single-digit view take rate is normal for a relevant add-on. Judge the offer on profit per view, not on take rate alone.

How do I calculate the ROI of a post-purchase upsell app? +

Break-even accepts = monthly app cost ÷ profit per accept before the app-cost line. Break-even views = break-even accepts ÷ take rate. On a $9.99 plan with about $11 profit per accept, one accept a month covers the bill. ROI is easy; the harder question is whether your discount level earns more than it gives away.

If it is not on the sheet, it is not profit.

Copy the rows. Use your fees. Then decide the discount and the pair with numbers, not with a round “20% off.”

Install the app Track the inputs
14-day free trial · From $9.99/mo · Cancel anytime

Post Purchase Team. The worked example is a teaching store, not a case study. Shopify Payments rates cited as a typical US Basic online card rate from public pricing pages — always confirm in your admin. Pixel limitation cited from shopify.dev product-offer docs, 22 August 2026.