How to charge so the exact amount you need lands in Stripe
Divide by what Stripe leaves you. Do not add the fee on top. Adding it is the most common reason people search for a Stripe fee calculator, and it always comes up short. Say you need $500 in your balance and Stripe takes 2.9% plus $0.30. You charge $500 plus 2.9% plus 30 cents, which is $514.80. What lands is $499.57.
The fee is charged on the amount you actually charge, and that is a bigger number than the one you wanted. Raise the charge to cover the fee and the fee goes up with it. It is a small circular problem. A second pass of adding fees will not close it. The algebra above does:
charge = (net + fixed fee) ÷ (1 − rate)
For $500 net at 2.9% + $0.30 that is (500 + 0.30) ÷ 0.971 = $515.24.
Charge that and exactly $500.00 lands. The naive version misses by a predictable amount,
net × rate² + fixed × rate: 43 cents here, 85 cents on a $1,000 net. The miss
always goes the same direction. Against you.
Forty-three cents is no reason to build a tool. Ten thousand invoices is. The error also grows with the square of the rate. On an international card with currency conversion, where the combined percentage can reach 6%, the naive method leaves about $3.62 behind on every $1,000 of net.
Stripe's percentage is several fees stacked on one charge
The headline rate is the minimum you pay. Several separate percentages can apply to the same charge. They add together first, and the fixed fee is applied once at the end:
- The base card rate is what Stripe publishes for a standard domestic card in your account's country, and it varies a lot by market: around 2.9% + $0.30 in the US, roughly 1.5% + €0.25 for European cards inside the EEA, and about 3.99% + R$0.39 in Brazil.
- A card issued outside your account's country carries an international surcharge on top of the base rate. The card decides it. The customer's shipping address and the language of your checkout do not, so you cannot spot it from the order alone.
- Charging in one currency and settling in another adds currency conversion, priced as one more percentage. Charging in the customer's local currency can lift conversion, and it costs money. Decide both at the same time.
- Stripe Billing puts a percentage of billed volume on subscriptions and invoices, on top of processing. People forget it because it does not appear on the payments pricing page most of them read.
- Connect charges marketplaces and platforms a volume fee on payouts to connected accounts. That is separate again from what the connected account pays to process the card.
A subscription charged to an international card in a foreign currency through a Connect platform pays four of these at once. The calculator puts each layer on its own line, because you can only push back on "6.35%" when you can see where it came from.
The fixed fee is what makes small Stripe charges expensive
A percentage costs the same share at any size. The flat per-transaction fee does not. It is 30 cents on a $3 charge and 30 cents on a $3,000 one, so your effective rate is a curve instead of a straight line.
| Charge | Fee at 2.9% + $0.30 | Effective rate |
|---|---|---|
| $3 | $0.39 | 12.90% |
| $10 | $0.59 | 5.90% |
| $50 | $1.75 | 3.50% |
| $500 | $14.80 | 2.96% |
| $5,000 | $145.30 | 2.91% |
If you sell $3 items, you pay nearly 13%, and no discount on the percentage will fix it. The fixed fee is the problem. That is the math behind minimum order values, credit bundles, and annual plans priced below twelve monthly payments. Each one makes the flat fee hit fewer times.
It also explains why fixed-fee and percentage-only payment methods behave so differently. Brazil's boleto is a flat charge with no percentage at all, so it gets cheaper in relative terms as the ticket rises. Pix is a percentage with no fixed fee, so it stays proportional all the way down. Neither one wins everywhere. Where they cross depends on your average order value, and the calculator shows you that point.
A Stripe refund still costs you the fee
Until 2019 Stripe gave the processing fee back when you refunded a payment. It no longer does. You send the customer 100% of what they paid, and the fee Stripe already took stays taken.
So a refund costs you the entire fee on a sale you no longer have. A $200 order refunded at 2.9% + $0.30 leaves you $6.10 down with nothing to show for it. A store with a 5% refund rate on $100,000 of monthly volume burns roughly $150 a month in fees on reversed transactions. That is before return shipping, restocking and labor.
One lever is worth knowing. A payment canceled before capture costs nothing, and a very early refund may go through the card network as a reversal instead of a refund. If you refund a real share of orders soon after they are placed, split authorization from capture: hold the funds and capture only when you ship. Some of those refunds become free cancellations.
Stripe dispute fees cost you even when you win
A chargeback hits harder than a refund. When a cardholder disputes a payment, the issuer reverses it right away and Stripe debits both the payment amount and a dispute fee from your balance. You find out afterward.
What catches people off guard is the win. Stripe's documentation says that, unless your contract says otherwise, the fee for receiving a dispute is never returned. A win gets the sale amount back and leaves the fee where it is. (A second fee, charged for submitting evidence, is returned on a win. The first one is not.)
Model a dispute as two bad outcomes of different sizes. There is no good one:
- If you win, you keep the net minus the dispute fee.
- If you lose, the money goes back, the original processing fee still is not returned, and the dispute fee stands. Your balance drops by the fee plus the dispute fee, and the product is gone too.
When the fee is large next to your average order, say a $15 fee on a $20 product, or R$55 on a R$40 one, one lost dispute wipes out the margin on several clean sales. The calculator shows how many. That count is usually what settles the argument over whether fraud screening is worth the friction it adds.
Passing the Stripe fee to the customer usually costs more than it saves
Once people see the gross-up formula, they want to add it to every invoice. For B2B invoicing, where the amount is negotiated anyway, that works fine. Almost everywhere else it works badly, and you should know why before you build it.
Surcharging card payments is regulated, and the rules change by country, card network and card type. Debit surcharges in particular are restricted in many markets. A fee that shows up at checkout is also the most reliable way to lose a cart: a late charge reads as bait-and-switch even at three dollars. And if the surcharge is part of the amount charged, Stripe takes its fee on the surcharge too. You end up grossing up the gross-up, the same circular problem one level down.
The quieter fix is what most businesses end up doing. Raise the headline price by the effective rate and stop itemizing it. You collect the same money with no checkout surprise and no regulatory exposure. Use the gross-up number to set the price. Keep it off the receipt.
Why every Stripe rate here is an editable field
Stripe changes its prices, per country and per product, and it does not ask first. It does not happen often. A calculator with the rate compiled into it does not break when it happens. It keeps giving confident answers with last year's number, and nothing on the screen tells you it is stale. That is worse than an error message, because at least an error is visible.
So the rates here are inputs. The country and method presets fill them with typical published values to get you started. Overwrite them with what your own pricing page or invoice says. That is the only rate you know is true for your account, your volume and your negotiated terms. High-volume accounts, nonprofits and businesses on interchange-plus pricing all have numbers no preset can guess.
Treat the presets as a sensible default and the invoice as the source of truth. That way the tool stays right after Stripe changes something, without waiting for us to notice.
Your Stripe numbers stay in your browser
Every figure is calculated on your device. Nothing is uploaded or logged, and there is no account. That matters more here than on a unit converter: what you type is your pricing, your margins and your dispute exposure, the numbers you would not paste into a stranger's form.
Frequently asked questions
What do I charge to receive exactly $100 with Stripe?
Charge $103.30. At 2.9% + $0.30 the formula is (net + fixed fee) ÷ (1 − rate), so (100 + 0.30) ÷ 0.971 = $103.2956, which rounds up to $103.30. The answer is not $102.90. If you add 2.9% on top of $100 and then the 30 cents, you get $103.20, and that charge nets $99.91. Nine cents short. That looks harmless on one invoice. Across a few thousand invoices it adds up quietly, and always against you.
Does Stripe refund its processing fee when I refund a customer?
No. Stripe stopped returning processing fees on refunds in 2019. You give the customer the full amount back and the original fee stays with Stripe, so a refunded sale costs you the whole fee on revenue you no longer have. On a $200 order at 2.9% + $0.30 that is $6.10 lost. Run a 5% refund rate and it becomes a real cost line, one your dashboard never shows you as a single number.
Do I get the chargeback fee back if I win the dispute?
No. Stripe's own documentation says that, unless your contract says otherwise, the fee for receiving a dispute is never returned. Winning gets you the disputed sale amount back and nothing more. There is a separate fee for submitting evidence, and that one is returned when you win. So price disputes as a risk to prevent. Winning them still leaves you paying.
Why is my effective Stripe rate higher than 2.9% + 30¢?
Several percentages stack on the same charge. A card issued in another country adds a surcharge. Converting between the charge currency and your settlement currency adds another. Stripe Billing takes a percentage of invoiced volume, and a Connect platform adds a volume fee. A charge that hits all four can land near 6.5% before the fixed fee. The calculator breaks out each layer on its own line so you can see which ones you are paying.
Are the rates in this calculator kept up to date?
The presets are typical published rates, and at some point they will go stale. That is why every rate is an editable field instead of a constant in the code. Paste the numbers from your own Stripe pricing page or invoice and the tool is right for your account today, no matter when we last updated it.
Are my numbers sent anywhere?
No. Every calculation is plain arithmetic in your browser. Nothing is uploaded or stored, and there is no account. That matters here, because what you type is your real pricing and your real margins.