How much does Shopify take per sale? More than your plan rate says

Written by
Stavros Symeonidis, founding engineer
Published
Read time
13 min read

A store on Shopify’s Basic plan, paying the US rate of 2.9% plus 30 cents, took a $99.80 order and expected a fee of about $3.19. Shopify charged $6.19. The merchant asked the Shopify Community why. The reason is that the plan rate covers one kind of payment, a standard card issued in your own country, and most stores take several other kinds. A card from abroad, American Express, a second currency and Shop Pay Installments each change what Shopify takes, a gift card can add a fee of its own, and Shopify keeps the fee when you refund the order. Shopify records the fee on every Shopify Payments payment, but none of its reports is documented to show it order by order. The fees also come out of payouts, so books kept by payout date put them in the wrong month. Take each order’s fee from its own transaction and your margin no longer rests on the plan rate.

These are Shopify’s fees as of 24 September 2026, from shopify.com/pricing as served to a US visitor, shopify.com/uk/pricing and help.shopify.com. Where Shopify publishes no figure, the post says so.

Why is my Shopify fee higher than my plan rate?

Because the plan rate is the online rate for one kind of payment, a standard card issued in the country your store is in. Every other way a customer can pay carries a rate of its own, and a few things add a second fee on top. The customer behind the $99.80 order paid with Shop Pay Installments, which has its own rate.

2.9% of $99.80 is $2.89, plus 30 cents is $3.19, the fee the merchant expected. The merchant then found the customer had paid with Shop Pay Installments, and the rate they found for it, 5.9% plus 30 cents, gives $6.19 to the cent. Shopify does not publish that rate. Neither pricing page has a row for it, and we read 611 of Shopify’s help pages without finding a figure. It shows the rate only inside each store’s admin, under View payment rates, and says why it is higher, “it also includes the standard Shopify Payments processing fee”, so the order pays one fee.

The table shows what Shopify takes on a $100 or £100 order on the Basic plan, for each way of paying. Section 2 gives every plan and the rates behind the figures. A standard card, in Shopify’s US definition, is a consumer Visa, Mastercard, Discover or Diners Club card.

How the customer paid US store, $100 order UK store, £100 order
A standard card from your own country, the plan rate $3.20 £2.25
A standard card from abroad, by the issuing bank’s country $4.20 £3.35, EU cards included
American Express, and in the US also business and corporate cards $3.80 £3.35
In another currency $1.50 more £2.00 more
Shop Pay Installments Not published, see View payment rates Not published
Klarna Not offered to US stores £5.29
With a gift card or store credit, on a store created on or after 12 May 2025 $2.00 for every $100 paid that way, on your Shopify bill £2.00 for every £100 paid that way, on your Shopify bill
Through Shopify Payments while you also run another processor $1.25 more £1.25 more
With duties calculated at checkout A 0.5% fee, a temporary rate A 0.5% fee, a temporary rate

Shopify charges the fee on the amount captured. The one worked example it publishes, for its Managed Markets service, takes the fee on the whole order. A US store takes a €150 order worth $158.97, shipping, duties and tax included, and pays “Shopify Payments processing fees of $6.50 USD (3.9% + $0.30 USD of the total order value)”. 3.9% of $158.97 plus 30 cents is $6.50. None of the Shopify pages we read says in plain words that the fee includes shipping and tax, so that example is the best evidence there is.

How much does Shopify take from a $100 sale?

$3.20 on the Basic plan for a standard US card, and $5.70 for a card from abroad paying in another currency. On Plus, $2.55 and $5.05. A UK store on Basic pays £2.25 for a UK card and £5.35 for a card from abroad in another currency, £1.55 and £4.55 on Plus. Running another processor alongside Shopify Payments adds 1.25% to each of these.

Read down your plan’s column. Each cell is what Shopify keeps from a $100 order paid in one payment.

How the customer paid, $100 order Basic Grow Advanced Plus
A standard US card $3.20 $3.00 $2.80 $2.55
American Express, or a US business card $3.80 $3.60 $3.40 $3.25
A standard card from abroad $4.20 $4.00 $3.80 $3.55
A standard card from abroad, in another currency $5.70 $5.50 $5.30 $5.05

The first cell is 2.9% of $100 plus 30 cents. A card from abroad adds $1.00, 1% of the order. Another currency adds the conversion fee, 1.5% of the order for a US store, $1.50 on every plan, charged on the gross order since 6 April 2026. The last row is a Canadian card paying in Canadian dollars for an order worth $100.

The same table for a UK store.

How the customer paid, £100 order Basic Grow Advanced Plus
A standard UK card £2.25 £1.95 £1.75 £1.55
American Express £3.35 £2.95 £2.75 £2.55
A card from abroad, EU cards included £3.35 £2.95 £2.75 £2.55
A card from abroad, in another currency £5.35 £4.95 £4.75 £4.55
Klarna £5.29 £5.29 £5.29 £4.09

The UK conversion fee is 2% of the order, £2.00. No VAT is added to these fees. Shopify’s page on payout fees gives the UK a 0% reverse charge, so the VAT is yours to record. Shop Pay Installments is missing from both tables because Shopify publishes no rate for it. A store on Shopify Tax also pays a fee on each taxed order once it passes its free allowance, which post 05 covers.

Does Shopify give the fee back when you refund an order?

No. The card fee, the currency conversion fee, the Shop Pay Installments fee, the Klarna fee and the third-party transaction fee all stay with Shopify when you refund, and Shopify charges no new fee for the refund itself. A refunded order still costs its fee.

Shopify’s help pages say it for each fee. On refunds through Shopify Payments, “the original credit card transaction fee isn’t refunded to you when issuing a refund”. On other currencies, “Currency conversion fees and credit card fees are not returned to you when you issue a refund”. On installments, “The Shop Pay Installments transaction fee isn’t returned to you when you issue a refund”. The Klarna and third-party transaction fee pages say the same.

A chargeback costs more. Shopify’s page on responding to chargebacks puts the fee at $15 for a US store and £10 for a UK store, withdrawn with the disputed amount and returned if you win. Its overview page is less definite, Shopify “might refund the chargeback fee depending on your country or region”, and if you accept the chargeback the fee is not refunded.

For margin, the fee belongs to the order after the revenue has left it. A margin that nets refunds off sales and drops their fees with them is overstated by exactly those fees. The refund itself is a separate row on the payout ledger, which post 02 works through.

Where does Shopify record the fee it actually charged?

Order by order, in three places. The payout transactions export has a Fee column, one total per row. The order’s Timeline shows the currency conversion fee. The API itemises the fees on every Shopify Payments payment. Shopify’s reports hold fees as totals, and none is documented to break them down by order. The orders export and the payments finance reports have no fee column at all.

First the rates your store pays. In a store that is not part of a Shopify organization, go to Settings > Payments in your admin, click Manage in the Shopify Payments section, then More actions, then Manage payment methods, then View payment rates. The Shop Pay Installments rate is there. The Community reply that pointed the merchant to it skipped the two middle clicks.

Then the export. From Settings > Payments, click View payouts, View Transactions, then Export, and the file arrives by email. Its columns are Transaction Date, Type, Order, Card Brand, Card Source, Payout Status, Payout Date, Available On, Amount, Fee and Net. Each row carries one fee with no breakdown. Card Brand names the card, but no column says where it was issued or which currency the customer paid in.

Two things catch people out. Shopify says “Orders captured with Shop Pay Installments that are pending payout won’t be visible on the Transactions page until after the order is paid out”. And the orders export shows “Shopify Payments” as the payment method for an installments order, so it hides how the order was paid. Shopify’s analytics lists Payment processing fees and Foreign exchange fees metrics, and whether a report can break them down by order is not documented.

The technical section

This is the part to hand to whoever builds your reporting. Skip to section 5 if that is not you.

The fee on every payment

In the GraphQL Admin API, OrderTransaction.fees is a list of TransactionFee, “The transaction fees charged on the order transaction. Only present for Shopify Payments transactions.” Each entry has amount, flatFee, flatFeeName, rate, rateName, taxAmount and type. Shopify documents no values for type or rateName, so we name none. Do not read fees out of receiptJson, which Shopify calls “not a stable contract”, and Order.additionalFees are charges to the customer, such as duties, import fees or tax lines, not processing fees.

Orders older than 60 days

OrderTransaction needs the read_orders scope, which covers the last 60 days of orders. Older orders also need read_all_orders, which Shopify’s access scopes page says you must request. Check that your app has it before you backfill last year’s fees.

The fee on the payout ledger

The same fee appears once more, as one total, on the payout ledger, where ShopifyPaymentsBalanceTransaction carries amount, fee and net, and sourceOrderTransactionId points at the order transaction behind it. The join, and the parent-transaction case, is in post 02. Nothing documents that the ledger’s fee equals the sum of the transaction’s fees, so compare them for every payment and send any gap to a person.

What the connectors land

Airbyte’s Shopify source lands the itemised fees array on its transactions stream, with its default setting, which reads the GraphQL API. Fivetran lands only the total on balance_transaction, as fee_amount in its GraphQL schema and fee in its legacy one, and has no table for the itemised fees.

The gaps

A payment outside Shopify Payments, through Authorize.net, Afterpay or another processor, has no fees at all. Shopify bills its own third-party transaction fees, the gift card portion included, as totals per date range, and we found no per-order source for them. Where to find those bills, and how to collect them each month, is in post 07. Two forum reports, not documentation, are worth a test against your own store. A developer wrote in November 2024 that a Shop Pay Installments order returned an empty fees list, and a Shopify staff member wrote in June 2026 that the currency conversion fee has no dedicated API field.

A worked example

Four orders on a US store on the Basic plan. The rates are Shopify’s, the orders are invented, and the figures are illustrative. Two orders came in on the last day of September and were paid out in October.

Order Placed How the customer paid Order total Plan-rate estimate Fee charged Paid out
#2101 30 Sep A US card $120.00 $3.78 $3.78 2 Oct
#2102 30 Sep American Express $84.00 $2.74 $3.24 2 Oct
#2103 1 Oct A Canadian card, in Canadian dollars $200.00 $6.10 $11.10 3 Oct
#2104 2 Oct A US card, refunded in full on 6 Oct $60.00 $2.04 $2.04 5 Oct
Total $464.00 $14.66 $20.16

The plan rate says these four orders cost $14.66 to take. Shopify charged $20.16. #2102 paid the American Express rate. #2103 paid the rate for a card from abroad, $8.10, plus the conversion fee, 1.5% of $200, $3.00. Whether those arrive as two entries in fees or one is not documented, so the query sums whatever is there and the ledger check above catches a shortfall. #2104 was refunded in full and its $2.04 stayed with Shopify.

The query builds the fee line from the transaction record, with the fees list landed as a table, one row per fee, keyed to its order transaction. Shopify’s GraphQL API writes transaction kinds and statuses in capitals, SALE and SUCCESS, and its older REST API in lower case, so the query lowers them before it compares.

select
  o.name as order_name,
  o.created_at as order_date,
  o.total,
  round(o.total * 0.029 + 0.30, 2) as plan_rate_estimate,
  round(sum(f.amount), 2) as fee_charged
from orders o
join order_transactions t
  on t.order_id = o.id
 and lower(t.kind) in ('sale', 'capture')
 and lower(t.status) = 'success'
left join transaction_fees f
  on f.transaction_id = t.id
group by o.id, o.name, o.created_at, o.total
order by o.created_at, o.name;

Against the example it returns the four rows above. The join takes the sale or capture transaction only, so the refund on #2104 leaves the fee on the order. An order paid outside Shopify Payments has no fee rows and comes back with an empty fee, not a zero, so it shows up rather than reading as free. Grouped by payout date, all $20.16 lands in October. Grouped by order date, September carries $7.02 and October $13.14. The month with the sales gets the fees.

Where do payment fees go in a P&L and in contribution margin?

Revenue stays gross and the fee is an expense on its own line, below gross profit and inside contribution margin, dated to the order it was charged on. That follows from the rules on offsetting and on what may reduce revenue. No standard names card fees, so the last step is our reading.

FRS 102, the UK standard, says in paragraph 2.96 that “An entity shall not offset assets and liabilities, or income and expenses, unless required or permitted by this FRS.” Paragraphs 23.62 and 23.63 treat one kind of payment to others differently, consideration payable to a customer, meaning amounts paid “to the customer (or to other parties that purchase the entity’s goods or services from the customer)”, which comes off revenue. ASC 606-10-32-25 says the same in the US, as Deloitte’s revenue roadmap quotes it. Shopify is neither the customer nor a buyer from the customer, so its fee stays an expense. Shopify’s own gross profit leaves it out, subtracting only cost from net sales on its profit reports page. The fee sits inside contribution margin because ACCA defines that margin as “total revenue less total variable costs”, and a fee priced as a percentage of each payment plus a fixed amount varies with every order.

One caveat is for your accountant. Deloitte’s roadmap says a fee paid to a financing company so that the customer gets a better borrowing rate “should be recorded as a reduction of revenue”. It also covers a seller’s part in its customer’s third-party financing, including “buying down interest rate points payable to the financing party to give the customer a sales incentive”. Shopify does not say whether any of its Shop Pay Installments fee buys down the customer’s interest, and no source we found applies this guidance to it. It could apply, and the call is your accountant’s.

The other half is timing. A merchant on the Shopify Community described booking fees by payout date, “while we account for all the sales in Nov, the FEE, in alignment with Payout date only be summarized following month”, so the fees on late-November sales land against December’s lower sales. Dating each fee to its order, as the query above does, fixes it.

So a correct fee line has one row per order, the fee taken from that order’s own transaction rather than the plan rate, dated to the order, and kept when the order is refunded. That line is where the fee becomes margin, which is our Unit Economics & Profit work.

FAQ

Why is my Shopify fee higher than my plan rate? The plan rate covers a standard card from your own country. Every other way of paying carries its own rate.

How much does Shopify take from a $100 sale? $3.20 on Basic for a standard US card, and $5.70 for a card from abroad in another currency. In the UK on Basic, £2.25 and £5.35.

Does Shopify give the fee back when you refund an order? No. The card, currency conversion, Shop Pay Installments, Klarna and third-party transaction fees all stay with Shopify, and a chargeback adds $15 in the US and £10 in the UK unless you win it.

Where does Shopify record the fee it actually charged? On every Shopify Payments payment in the API, as one total per row in the payout transactions export, and in the order Timeline for currency conversion.

Where do payment fees go in a P&L and in contribution margin? In our reading of the accounting rules, as an expense on their own line, below gross profit and inside contribution margin, dated to the order.


Written by Stavros Symeonidis, founding engineer at otum.

Found this useful?

Add otum.io as a preferred source, and Google is more likely to show you our posts.

Add on Google

Related

Engineering edge,
without hiring a team.

Numbers you can trust, operations that run themselves, all built into your stack and owned by you. Tell us where you want the edge, and we'll build it.

Have a project in mind?

  • Quick response

    You'll hear from an engineer the same working day, not a sales sequence.

  • Clear next steps

    A short call, then a plan, and we start with Proof Week or a full build.

  • Fixed fee first

    A fixed fee agreed before anything starts, for Proof Week or the full build.