Set payment gateway fees per processor
Quick Reference
Inputs
Admin access to settings; a connected Shopify store with orders synced; each processor’s published rate — the percentage and the flat per-transaction amount.
Outputs
A per-processor fee rate MarginOS applies to every transaction through that processor, replacing the store-wide default, plus a badge on each row showing whether its fee is measured, configured, defaulted or genuinely zero.
Outcomes
Processing costs match what you actually pay, so gross profit and margin stop being overstated on the processors you do not use Shopify Payments for.
Payment Gateways is where you tell MarginOS what each of your payment processors actually charges you. MarginOS detects every processor your store has taken money through in the last 90 days, badges each one with where its fee figure is coming from, and lets you replace a guess with the real rate. Shopify Payments needs nothing from you — Shopify reports those fees transaction by transaction. Every other processor runs on a store-wide default rate until you type in the real one.
What the Payment Gateways setting is
Payment Gateways is a card inside Cost Structure, under the Business Profile tab of your settings. It lists one row per processor your orders have actually run through in the last 90 days — cancelled and test orders excluded — sorted by how many orders each one carried.
Every row carries a coloured badge saying where that processor’s fee comes from: a fee Shopify measured, a rate you entered, the store-wide default, or a tender with no fee at all. That badge is the point of the screen. The processing fee is a cost line in gross profit, so if MarginOS is guessing the fee on a third of your revenue, it is guessing your margin on a third of your revenue too.
There is deliberately no way to add a processor by typing its name. The list is built from your own payment data, so a hand-typed name would not match anything and the rate would sit there doing nothing. A processor shows up on its own the first time an order runs through it.
Before you start
- You need admin access. The whole settings area is admin-only; a member account cannot open it.
- Your Shopify store must be connected and synced. Until orders have arrived, the card reads No payment gateways detected on recent orders yet. See Connect your Shopify store.
- Have each processor’s published rate to hand — the percentage and the flat per-transaction amount, exactly as your processor states them. Both go in.
- This changes what MarginOS subtracts, not what you are charged. Your processor bills you the same whatever you type here.
Set a processor’s real rate in five steps
- Open Settings from the sidebar, choose the Business Profile tab, then Cost Structure in the left-hand list. Scroll to Payment Gateways.
- Find a row badged Default. That badge means MarginOS has no rate for this processor and is falling back to your store-wide guess. The line under the name tells you exactly what that guess is.
- Type the real rate into Fee (%) and Fixed ($). The faint numbers already sitting in those boxes are the current default shown as a hint — nothing is saved for this processor until you type over them.
- Repeat for every other Default row. Work down from the processor carrying the largest share of revenue; that is where a wrong rate costs you the most.
- Click Save Configuration at the bottom of the page. The save recalculates the processing fee on your whole order history before it finishes, so on a large store the button stays busy for a moment.
Reload the page afterwards and the badge on that row reads Configured.
What each part of the card means
| What you see | What it means |
|---|---|
| Processor name | The gateway name exactly as your payment data records it, in lower case. It is not a name you choose. |
| Actual (green) | Shopify Payments. Shopify reports the real fee on every transaction, so MarginOS uses the measured figure and there is nothing for you to set. |
| Configured (blue) | You have given this processor a rate. MarginOS applies it to every transaction that runs through it. |
| Default (amber) | No rate of its own. MarginOS is applying the store-wide default fallback — an assumption, not a measurement. These are your worklist. |
| No fee (grey) | A tender that never touches a card processor — cash, gift cards, store credit, manually recorded orders. Nothing is subtracted, and that is a real zero, not a missing number. |
| Orders · % of revenue · last 90 days | How much of your recent business this processor carried. Use it to decide which rows are worth correcting. |
| Fee (%) | The percentage your processor takes from each transaction. Must be between 0 and 25. |
| Fixed ($) | The flat amount charged per transaction, on top of the percentage. Cannot be negative. |
| Configured gateways (no orders in the last 90 days) | Rates you set for a processor you have since stopped using. Still editable, with a bin icon to remove the rate entirely. |
| Default fallback rate | The store-wide rate applied to any processor with no measured fee and no rate of your own. It cannot be switched off. |
How MarginOS applies your rate
MarginOS works the fee out per payment, not per order. It reads each successful payment on an order, decides that payment’s fee on its own terms, and adds them up. An order paid half on a gift card and half on a credit card is charged the card fee on the card half and nothing on the gift-card half.
For each payment, MarginOS takes the best evidence available to it:
- A no-fee tender costs nothing, and MarginOS records that as a genuine zero rather than an unknown.
- Shopify Payments uses the fee Shopify actually reported for that transaction. A rate you typed could never beat a measurement, which is why the row is not editable.
- A processor you have configured uses your rate: the payment amount times your percentage, plus your fixed amount.
- Anything else falls back to the store-wide default rate, using the same shape. That fallback always exists, so no order is ever left without a processing-fee figure.
The resulting fee is subtracted as a cost in gross profit, so correcting a rate moves gross profit, margin and everything built on top of them. Where a figure rests on the default rather than a measured fee, that shows up in how MarginOS grades the reliability of the result — see the Defensible Profit Model and Data Trust levels.
Two behaviours are worth knowing. A fee change is applied to your whole order history, not just to orders from today onwards, and the save waits for that recalculation to finish before it returns — so the numbers you see straight afterwards already include it. And an old order that arrived without per-payment detail is charged the default rate against the order total, because there is nothing finer to work from.
Example
Illustrative numbers, not a real store. Say Payment Gateways shows three rows:
shopify_payments— 612 orders · 62% of revenue · Actualpaypal— 401 orders · 31% of revenue · Default, using 2.9% + $0.30gift_card— 74 orders · 7% of revenue · No fee
A $120 PayPal order under the default is charged $120 × 2.9% + $0.30 = $3.78. But PayPal’s real published rate for this store is 3.49% + $0.49, which is $120 × 3.49% + $0.49 = $4.68. MarginOS is understating the cost of that order by about $0.90 — and it is doing so on every PayPal order. Across 400 of them in a quarter, that is roughly $360 of gross profit the store never actually earned.
Typing 3.49 and 0.49 into that row and saving fixes it everywhere at once: the badge becomes Configured, every PayPal order in the history is recharged at the real rate, and the margins in Catalog Profit and the Command Center drop to the truth. The Shopify Payments row is untouched, because it was never a guess.
Common questions
Why can I not add a processor by hand?
Because the list is built from your own payment records. A name you typed would almost certainly not match what your payments data calls that processor, so the rate would never be applied to anything — a silent dead end. A processor appears on its own the first time an order runs through it, and that is the moment there is something for the rate to do.
Why is Shopify Payments not editable?
Shopify reports the exact fee it charged on each transaction, so MarginOS already has the real number. Letting you type a rate there would mean replacing a measurement with an estimate, which is always the wrong trade.
The badge still says Default after I saved. Why?
The list of processors is loaded once when you open the screen and is not rebuilt by the save. Your rate is stored and already in use — reload the page and the badge reads Configured.
Does changing the rate alter what my processor charges me?
No. Nothing here reaches your processor. It changes only what MarginOS subtracts when working out your profit, so your reported margin matches the bill you were already paying.
What happens to a processor I have stopped using?
Once 90 days pass with no orders through it, it leaves the main list and appears below under Configured gateways (no orders in the last 90 days), where you can still adjust the rate or remove it with the bin icon. Removing it does not change history that has already been costed at that rate; it only stops the rate applying to anything new.
Why will it not accept the rate I typed?
The percentage has to be between 0 and 25, and the fixed amount cannot be negative. The ceiling sits well above any card rate on purpose, because marketplace tenders also arrive here and the cut they take is far larger than a card processor would ever charge.
Can I turn the default fallback rate off?
No, and that is deliberate. It is the last resort that guarantees every order carries a processing-fee figure instead of a blank. Set it to the published rate of the processor you use most, then narrow it by configuring the individual processors above.
How far back does a change apply?
To your entire order history. MarginOS recalculates the processing fee on every order as part of the save, rather than only going forward from today, so you never end up with two eras of differently-costed orders.
Related
- Set your store-wide COGS, shipping and pick-pack fallbacks — the sibling settings card, for the cost side rather than the fee side.
- How MarginOS calculates Gross Profit (CM1) — where the processing fee is subtracted.
- The Defensible Profit Model — how MarginOS grades a measured cost against an assumed one.
- Data Trust levels — what a figure resting on the default rate does to its reliability grade.
- Why MarginOS shows “N/A” instead of a made-up number — the stance behind labelling a guess as a guess.
- Set up MarginOS: the 3-step Express Setup — where your first default processing rate came from.
- Connect your Shopify store — the source of the orders this screen reads.
About the author
Founder of MarginOS, a Profit & Inventory OS for Shopify DTC brands who live and die by margin. Previously 11 years at Google across Ads and Global Business Operations, building large-scale systems. Now focused on giving DTC operators true profit by product, channel, and customer after COGS, 3PL, shipping, returns, and fees, and on showing exactly how much to trust every number behind those decisions.
Read Aron's story