ProfitCOGSMargin

Why Your Shopify Margin Is Wrong (And How to Fix It)

May 2026·6 min read

Most Shopify store owners check their Shopify analytics dashboard and see a revenue number. They subtract some rough estimate of product cost and think they know their margin.

They are usually wrong by a significant amount — often 10–20 percentage points. Here is what is missing from the number most owners are looking at.

What Shopify analytics actually shows you

Shopify analytics shows you gross revenue — the amount customers paid, before any deductions. It does not show:

  • Shopify processing fees (2.9% + 30¢ per transaction, or your actual rate)
  • Stripe Terminal fees if you process in-store
  • Shopify app charges deducted from payouts (Klaviyo, Shopify Subscription, Klarna, etc.)
  • Actual product cost (COGS)
  • Return shipping costs
  • Refund-related fee reversals (partial — Shopify does not refund processing fees)
  • Shopify subscription cost allocated per order

Once you subtract all of these, your actual margin per order is meaningfully lower than the revenue number suggests.

The four layers between revenue and actual profit

Layer 1: Payment processing fees

Shopify Payments charges between 2.4% and 2.9% + 30¢ per transaction depending on your plan. Stripe Terminal charges similarly. On £100k of revenue, this is £2,400–£2,900 — not trivial.

The important detail: these fees are not shown in Shopify analytics. They are deducted from your payout. If you are looking at analytics revenue, you are looking at the number before this deduction.

For accurate margin, you need the exact fee per transaction — not an estimate based on published rates. The actual rate varies by card type (international cards cost more), and Shopify/Stripe do not always charge the published rate exactly. Rappel pulls exact fees from the balance_transaction API.

Layer 2: Shopify app deductions

If you use Klarna, Afterpay, Shop Pay Instalments, or similar BNPL apps, those providers charge you a fee. That fee is deducted from your Shopify payout.

Similarly, if Shopify deducts your subscription or other app charges from your payout (which they often do), those reduce your net cash even though they do not appear in your order-level analytics.

Layer 3: Cost of goods (COGS)

This is the most significant layer for most product businesses. Your gross margin depends on the cost of the product you sold. If you sell a product for £50 and it costs you £20 to source, your gross margin is 60%. But if you are only looking at revenue, you are looking at the £50, not the £30.

COGS is not automatic — you need to track it per SKU. This is where most Shopify analytics fall short. Shopify does not have a COGS field (unless you use a third-party app). And even if you have rough cost figures, they need to be applied at the order line level, not as a blended rate.

Layer 4: Returns and refunds

When a customer returns an order, Shopify refunds the customer. But Shopify does not refund your processing fee — you pay the fee on the original transaction and a second fee on the refund transaction. This means refunds cost you more than just the product value.

High-return categories (fashion, electronics) need to model refund rates carefully. A 20% return rate with 3% processing fees on both the sale and the refund adds up.

The correct margin calculation

True margin per order:

Revenue
  − Processing fees (exact, from balance_transaction)
  − COGS (per-SKU, at cost-at-date)
  − Allocated app charges (per order)
  − Allocated Shopify subscription (per order)
  ──────────────────────────────────────────────────
  = True profit per order

At store level, you also need to subtract fixed costs (warehouse, staff, software) — but the above gives you the contribution margin per order, which is the number worth optimising.

How to get the right numbers

There are a few ways to approach this:

Manual spreadsheet: Export Shopify payout reports, export Stripe reports, calculate fees manually, maintain a COGS spreadsheet. Works for very small stores. Does not scale.

A2X or similar: Reconciles payouts and posts to QBO/Xero. But A2X uses estimated fees, not exact fees, and does not have a built-in COGS / profit dashboard. You still need to do the margin calculation separately.

Rappel: Rappel pulls exact fees from the Stripe/Shopify APIs, lets you add COGS per SKU once (or import via CSV), and shows you verified margin per product — grounded in what actually hit your bank account. Not an estimate.

What to do now

The first step is to get your COGS in order. Even rough cost figures at the product level are far better than nothing. Once you have COGS and exact fees, the margin calculation is straightforward.

The second step is to verify your fee extraction. If you are using estimated rates, check your actual Stripe/Shopify fee rate by looking at a few specific payouts and calculating the exact percentage. You may find you are paying more — or less — than the published rate.

Try Rappel

See your real margin, not an estimate

Add your product costs once. Rappel extracts exact fees from Stripe/Shopify and shows you verified margin per product — what you actually made, grounded in bank deposit data.

Start free — no credit card