Stripe on WooCommerce for a Romanian Shop: 3D Secure, RON, and Real Fees
A practical guide for a Romanian WooCommerce store: how to charge in RON, pass 3D Secure cleanly, and see the fees you actually pay.
You run a WooCommerce store and you want card payments in RON, without sending customers through broken checkout pages. Stripe is a solid choice: it's available in Romania, settles in lei, and handles 3D Secure automatically — if you set it up correctly. Trouble starts with a half-finished integration: orders stuck in "pending", cards declined at authentication, or money needlessly swapped between currencies.
This isn't an ad for a plugin. It's what you, as the shop owner, need to know before you hit "Go live": how Stripe works with the leu, why 3D Secure isn't optional in the EU, where orders actually get lost, and which fees show up month after month. All of it you can verify yourself in your own dashboard.
Stripe works in RON — and why that matters
Stripe is available to Romanian businesses, and the account can settle in lei to a Romanian IBAN. That matters: if your store prices are in RON and Stripe collects in RON, there's no currency conversion in between.
The classic mistake is leaving WooCommerce on RON while your Stripe account settles in EUR (or vice versa). Then every transaction runs through a conversion, and you quietly lose on the exchange rate. Check two things:
- In WooCommerce: General → Currency set to "Romanian leu (RON)".
- In Stripe: the payout currency and IBAN also on RON.
When both line up, the customer sees the price in lei, pays in lei, and you receive lei. No surprises on your statement.
Which plugin you use (and why it matters enormously)
For WooCommerce you have two official options, both from the team that maintains WooCommerce:
- The "Stripe" plugin (Stripe Gateway) — connects to your existing Stripe account.
- "WooPayments" — a solution built on top of Stripe, managed from WooCommerce.
Both use the modern Payment Intents API, which triggers 3D Secure correctly. Watch out for old or unmaintained plugins that still use the legacy "Charges" API — there, 3DS authentication doesn't happen properly and European cards get declined.
The simple rule: use an official, up-to-date plugin, and avoid obscure "free" solutions from forums. With payments, an unmaintained plugin isn't a saving — it's a risk of lost orders and poorly handled card data.
3D Secure / SCA is not optional in Europe
In the European Union, the PSD2 directive requires Strong Customer Authentication (SCA) for most card payments. In practice that means 3D Secure: the customer confirms the payment in their banking app or with a code. It's not something you "turn on if you like" — issuing banks decline transactions that should have been authenticated and weren't.
The good news: the official Stripe plugin handles this automatically through Payment Intents. When a bank asks for authentication, the customer is sent to the 3DS step and returns to the store after confirming — with no code written by you.
What you need to do:
- Test a real flow with a card that triggers 3DS (Stripe provides test cards for exactly this).
- Make sure the site runs on HTTPS — without a valid SSL certificate, modern payment won't even start.
Webhooks: where orders get lost
The most common Stripe-on-WooCommerce "bug" isn't at payment, but after: the order stays in "pending payment" even though the customer paid. Almost every time the cause is a missing or misconfigured webhook.
The webhook is the message Stripe sends the store saying "the payment completed, mark the order as paid". If it's missing, WooCommerce never learns the money came in.
What to check:
- In Stripe → Developers → Webhooks, the endpoint should point to the address given by the plugin.
- The API keys (test and live) should be entered correctly, without mixing them up.
- After setup, place a test order and confirm it moves automatically to "processing" or "completed".
Five minutes checking here saves you days of stuck orders.
Real fees: what you actually pay
Stripe has no monthly subscription and no minimum contract — you pay per transaction. The standard fee applies to each successful payment, and Stripe shows it transparently in your account, kept up to date. The honest advice: don't rely on numbers from old articles — look at Stripe's pricing page and your own dashboard.
What most people forget to factor in:
- Cards from outside the European Economic Area usually carry a higher fee than European ones.
- If currency conversion happens (store currency differs from settlement currency), a separate cost is added — one more reason to keep everything in RON.
- Refunds don't return the fee already withheld on the original transaction.
For a small shop just starting out, the "pay only when you sell" model is honest and predictable — exactly what you want early on.
How we handle the integration at MPO
At MPO Web Studio we build WooCommerce stores delivered fully remotely, from Cluj-Napoca, for clients across the country. We prepare a working demo before you pay anything, so you can see exactly how the cart and checkout look and behave.
On the Stripe side we do things in the right order: align the currency to RON, install the official plugin, configure the webhooks, test 3D Secure with test cards, and only then go live. Transparent pricing, no hidden costs, and no "you'll be #1 on Google tomorrow" promises — treat anyone who promises that with suspicion.
If you want to talk through your specific store, message us on WhatsApp and we'll tell you honestly what needs doing and how long it takes.
Frequently asked questions
Can I charge directly in RON with Stripe in Romania?+
Yes. Stripe is available to Romanian businesses and can settle in lei to a Romanian IBAN. The key is to set the store currency to RON and the payout currency to RON as well, so no unnecessary currency conversion appears.
Is 3D Secure mandatory? Can I disable it to avoid losing customers?+
You can't legally disable it in the EU — PSD2 requires authentication (SCA), and banks decline payments that should have been authenticated. The official Stripe plugin handles it automatically, so it adds no effort for the customer beyond confirming in their banking app.
Why do my orders stay in "pending" even though the customer paid?+
Almost certainly a missing or misconfigured webhook between Stripe and WooCommerce. Without it, the store never learns the payment completed. Check the webhook endpoint in Stripe and the API keys in the plugin, then place a test order.
What fee does Stripe take, and are there hidden costs?+
Stripe charges a per-transaction fee, with no monthly subscription, shown transparently in your account. "Hidden" costs only appear if you allow currency conversion (currency different from settlement) or with cards from outside the European Economic Area. Always check Stripe's current pricing page.
Do I need a registered business to use Stripe?+
Yes, Stripe requires an entity that can legally collect payments — typically a sole trader (PFA) or company (SRL) — plus identification details and a bank account. It won't activate for a private individual without a legal form. Prepare your business documents before starting setup.
7 mistakes that drive clients away from your website
Leave your email and get the guide right here, instantly. No spam.
Want to see what your business's website could look like?
Message us on WhatsApp and we'll build you a free demo website with your business name on it. See it first, then decide — no strings attached.