SEPA QR code vs RoPay: why the code does not work with Romanian banks
14 June 2026 · 6 min read read
You generate a payment QR code, send it to a customer, and they tell you their "banking app can't see it". It is not a bug — in Romania two payment QR standards coexist and do not talk to each other: SEPA/EPC (European) and RoPay (national). Here is the difference, in plain terms, and what actually works today.
The "SEPA" QR code (EPC / GiroCode)
The most common one online is EPC, also known as GiroCode, defined by the European Payments Council. It holds the details of a SEPA transfer — beneficiary, IBAN, amount, reference — encoded per the EPC069-12 standard. You scan it, the app pre-fills the transfer, you just confirm. It is a European standard, denominated in euro (EUR) and, importantly, open: anyone can generate an EPC code for any IBAN. Details in the guide on what GiroCode and the EPC standard are.
RoPay — Romania's national standard
Romanian banks took their own route. RoPay, developed by Transfond together with the country's banks, is the national instant-payment infrastructure via QR codes and "payment requests": money arrives in seconds, in lei (RON). Unlike EPC, RoPay is closed and identity-bound: the code is generated from inside the banking app. An individual requests money straight from the app, and a merchant enables it through their bank. There is no public RoPay code generator, because the bank does the validation.
Why the code "isn't seen"
This is the crux. Romanian bank apps (ING, BCR, BT, etc.) are built around RoPay, not EPC. So an EPC code generated online — perfectly valid in Germany — is simply not recognised by the local bank app. Nothing is broken: they are two different "languages", and the phone does not speak the foreign one. See also which banks support the SEPA QR code.
In short: EPC = European, in euro, open, scanned by Revolut/bunq. RoPay = Romanian, in lei, closed, generated from your bank's app. There is (not yet) a universal code that works everywhere.
What actually works in Romania today
The good news: there is a bridge. Revolut — used by millions in Romania — recognises EPC codes. So does bunq. In practice:
- If you want to receive money via an EPC code, generate it from a euro IBAN (for example the EUR IBAN in Revolut), and whoever pays you scans it from Revolut or bunq.
- If you want an instant payment in lei from someone with a classic Romanian bank, the native solution is RoPay, generated from their banking app.
A few notes: N26 supports EPC, but cannot be opened in Romania. Wise uses other code types. Salt Bank, a Romanian neobank, also runs on RoPay.
What it means for freelancers and merchants
If you are a freelancer working with clients abroad too, the EPC code is great for them (especially via Revolut), but do not rely on it for a client paying from a Romanian bank app. For the local instant market, RoPay is the way. For merchants, RoPay through the bank is the route for instant in-store payments, while EPC stays useful for invoices and European customers.
How to choose, simply
The practical rule is one question: "which app does the customer scan with?" For European customers or Revolut users — EPC. For instant payments in lei from Romanian banks — RoPay. See also the guide on how to pay with a SEPA QR code.
Want to generate an EPC code?
If you get paid by European customers or Revolut/bunq users, you can create your own code in seconds, free and without an account, with the SEPA payment QR code generator. Add the beneficiary, the IBAN and (optionally) the amount, and the code is ready to put on an invoice or website.
Frequently asked questions
Why does my Romanian bank not read the SEPA QR code? +
What can I scan a SEPA (EPC) QR code with in Romania? +
Can I generate a RoPay code myself? +
What do I use if I get paid by clients abroad? +
Read also
How to pay with a SEPA QR code — step by step
Scan the code with your banking app, check the pre-filled details and confirm. Here is the whole process, step by step.
What is GiroCode and the EPC standard (and who supports it)
GiroCode is the European standard format for payment QR codes. See what it contains and how banking apps read it.