EPC Codes: Paying via QR

SergeantBiggs

technologyfinance

347 Words

2025-08-31 12:25 +0000


I recently learned about a new method of transferring money through SEPA: EPC Codes.

I encountered them when I got a bill with a QR code on it that I could scan with my banking app. When I did it, it autopopulated all of the necessary fields (recipient, IBAN, amount, etc). I wondered how it all works and it turns out being much simpler than I thought.

I initially thought it must be some kind of URL that causes an API request to be made to populate the necessary data. But when I scanned the code with a regular QR scanner I noticed that it’s a simple text format:

BCD
002
1
SCT

Alice
DE89370400440532013000
EUR5

The lines mean the following and are quite self-explanatory:

  1. Service Tag (always BCD)
  2. Version (001 or 002)
  3. Character encoding (1=UTF-8)
  4. “Identification” (always SCT)
  5. BIC of the recipient (optional in version 2 if inside the EEA)
  6. Name of recipient
  7. IBAN of recipient
  8. Payment amount (optional)
  9. Purpose (optional)
  10. Reference (optional)
  11. Reason for transfer (optional)
  12. additional (optional) (note to the user of max. 70 characters)

All optional fields can be either left empty or completely omitted if they are not followed by other non-empty fields.

All in all, it’s a pretty simple and robust system. It’s mostly handy for organisations sending out bills. QR codes can be autogenerated and scanning one is simpler and less error-prone than entering the information manually. It can also be used by organisations soliciting donations.

It (currently) isn’t ideal for quickly sending money between friends, because there’s no “user-friendly” way of generating these codes. Theoretically mobile banking apps could generate them pretty easily, since they already have all of the information. The user would just have to optionally enter an amount. Combined with SEPA instant transfer (which all Eurozone payment providers now have to support), it would be a pretty simple, decentralised, and privacy-preserving way of sending money between friends. I’m not aware of any banking application that uses this scheme, but it would be quite easy to implement and a nice alternative to centralised payment providers (e.g. Paypal).

Articles from blogs I read

Mastodon Stories for systemd v262

On September 22 we released systemd v262 into the wild. In the weeks leading up to that release (and since then) I have posted a series of serieses of posts to Mastodon about key new features in this release, under the #systemd262 hash tag. In case you aren…

via Pid Eins October 15, 2026

"No way to prevent this" say users of only language where this regularly happens

In the hours following the release of CVE-2026-92392 for the project curl, site reliability workers and systems administrators scrambled to desperately rebuild and patch all their systems to fix a use-after-free in HTTP/2 upload retries whe…

via Xe Iaso's blog October 14, 2026

Why is Hacker News like that?

Hacker News (aka HN) is a link aggregator where “hackers”1 gather to discuss technology, politics, and anything which “good hackers would find interesting”. HN is a means by which its host, prominent startup incubator Y Combinator, projects soft…

via Drew DeVault's blog September 23, 2026

Notes on Arrow's Impossibility Theorem

Plurality voting is still bad, and finding a better mechanism is still hard.

via Ξ September 7, 2026

Generated by openring