← all posts

Payments

Pix: How Brazil's Instant Payment System Works

Pix isn't an app and isn't a company. It's a payment system the central bank built and operates itself, which is exactly the part that confuses people outside Brazil.

Card with the title Pix: How Brazil's Instant Payment System Works over a purple asterisk on a light background

Whenever I explain Pix to someone who didn't grow up with it, the conversation follows the same path. They nod along at "instant bank transfer, free, works at 3am on a Sunday", and then stop dead at the next sentence: the central bank wrote the software and runs it.

That's usually the moment it stops sounding like a payments app and starts sounding like infrastructure.

The central bank is a participant, not a regulator standing outside

Every institution in Pix holds an account at the Banco Central called a Conta Pagamentos Instantâneos, a PI account. When money moves over Pix, what settles is a debit and a credit between two of those accounts at the central bank. No correspondent bank in the middle, no netting window at the end of the day.

That single decision explains most of what people find surprising. It runs 24/7 because there's no clearing cycle to close. It's instant because settlement and messaging happen in the same flow instead of one following the other hours later.

A Pix key is a lookup, not an address

This is the part I got wrong for a long time. When you send money to someone's phone number, you aren't sending money to a phone number.

A separate system called DICT, the directory of transactional account identifiers, maps a key (a phone number, an email, a tax ID or a random UUID) to the real destination: the institution's ISPB code, the branch, the account number and the account type. Your app resolves the key first, gets bank details back, and only then builds the payment.

Every Pix is a transfer to bank details by the time it reaches the settlement system. The key is a convenience layer in front, and keeping it separate is why it can be redesigned without touching how money moves.

One consequence: a transfer between two accounts at the same institution never needs the central infrastructure at all. The bank recognises its own ISPB and settles internally.

The messages are XML, and that's deliberate

Pix speaks ISO 20022. The payment order is a pacs.008, the status report that says whether it worked is a pacs.002, and a request to return money is a camt.056.

The format is XML, which surprises people who expect something modern from a system launched in 2020. The reason is boring and good. ISO 20022 was already where financial messaging was heading, and Brazil's existing interbank system used the same family of standards. Picking a battle-tested format over a nicer one meant every participant already had people who understood it.

Where SEPA went the other way

Europe has had the technical capability for years. SEPA Instant Credit Transfer launched in 2017, settles through TIPS or RT1, and clears in seconds.

The difference was never technology. It was that offering it stayed optional. A scheme run by the European Payments Council, an industry association, could define the standard but couldn't compel a bank to adopt it, so for years whether you could send an instant euro transfer depended on your bank and your recipient's bank.

Legislation changed that. The Instant Payments Regulation required euro-area providers to receive instant transfers from January 2025 and to send them from October 2025, with providers outside the euro area following in 2027. The same regulation forced instant transfers to cost no more than regular ones, removed the €100,000 cap in October 2025, and added a free Verification of Payee check so you can confirm a name matches an IBAN before you send.

Brazil never had that gap. Participation was mandatory for the largest institutions from the day Pix launched in November 2020.

Verification of Payee is the clearest illustration of the split. Europe kept the IBAN and bolted a name check onto it. Brazil replaced the identifier with a directory lookup that returns the account holder before you send anything.

What it's built with, and where I have to stop

Red Hat published a case study with the Banco Central, so some of this is on the record. Pix runs on OpenShift for container orchestration, uses a Kafka-based broker for streaming between components, and uses Ansible for infrastructure automation. During the proof of concept it targeted 2,000 transactions per second, with 99% of internal transactions completing in four seconds, and it was designed to support up to 200 million users.

By early 2026 Pix had roughly 200 million monthly active users. It reached the ceiling it was designed for.

What I can't tell you is the language. The case study names products, not source code. There's a widely repeated claim that the central bank side is written in Java, which is plausible, but I haven't found it stated by anyone at the Banco Central in a source I can point to. Everything past that, the database behind DICT, the cloud model, the service boundaries, is inference from job postings and procurement documents.

I'd rather say that plainly than dress up a guess. If you read a confident breakdown of Pix's internal stack, check whether it's describing what's documented or what somebody assumed from outside.

The engineering is mostly not at the central bank

The Banco Central's job here is narrower than it looks. It orchestrates, and it keeps the accounting straight between PI accounts. That's enormous at its volume, and also not where most of the difficulty lives.

The hard parts sit with the participants: fraud checks that have to clear in a couple of seconds, balance locks, per-user limits, notifications, reconciliation, and crediting individual customer accounts, all inside a budget measured in seconds with no batch window to hide in.

That's also the honest conclusion for anyone hoping to copy it. The technology in Pix isn't exotic and none of it is out of reach. The unusual ingredient is a central bank willing to build, operate and mandate a payment system itself. That's a political decision rather than an architectural one, and it's the piece that doesn't port.