Visa Pay · Making cross-border QR payments feel local
Designing a UPI-like payment experience for Southeast Asia, backed by Visa's global rails.
Role
Product Designer with Visa Team
Shipped
Live across Asia Pacific, Nov 2025
From the streets of Singapore to the shores of Shanghai, Asia Pacific is having a mobile revolution - fast, fearless, and transforming how millions pay every day.
Visit any city in the region and you will see consumers paying with their smartphones, be it scanning QR codes at a food stall, making an account-to-account (A2A) transfer to their friends, or tapping their smartphone on a payment terminal. With mobile wallet users accounting for nearly two in three people in Asia Pacific this year, such “non-card payments” create new choices and conveniences alongside card payments that together are accepted (almost) everywhere.
We say almost, because amidst this explosive growth, non-card payments are still largely limited to domestic use. Enter Visa Pay: it combines decades of Visa experience in digital payments and Visa’s global network to make non-card and wallet payments useful everywhere. With Visa Pay, consumers can use their mobile wallets wherever they go, and merchants enjoy unified digital acceptance with peace of mind.
4.6%
Average lift in authorization rate
350+
Acquirers & Processors
99.999%
Uptime with no planned downtime
Indonesia built QRIS. Thailand has PromptPay. Singapore has NETS and PayNow. Malaysia has DuitNow. Each one works beautifully - inside its own border. Step across one and your wallet app is a very expensive camera.
We talked to people living in Singapore and Dubai about how they actually pay when they travel. Interoperability half-exists already. A Dana user in Indonesia can pay a Singapore NETS QR with a card. It's just clumsy, inconsistent, and nobody trusts it.
Visa's answer was to become the wire between all of them. Juspay built the SDK that makes it work. I designed the part a human being actually touches.
The strange part of the brief: this isn't an app. It's a set of screens that get dropped inside someone else's wallet, wearing their colors, running on infrastructure the user will never see and would not enjoy having explained to them.
You can't onboard someone into infrastructure. You can only onboard them into a moment.



Non-card payments face these three challenges
Here's what's actually happening under the hood: we take the money sitting in your home wallet, mint a virtual Visa card against it, tokenize that card to your device, and route a cross-border transaction through it.
Here's what the user thinks is happening: they're paying for noodles.
So we don't introduce the product at install. We introduce it when the phone crosses a border. You land in Singapore, and the app says welcome to Singapore - with Singapore on the screen, not a generic globe.
The best onboarding is the one that waits until the user has a reason to care.

We have to ask for your card number before the product has done anything for you.
Enrollment is the worst trade in the product. We want the most sensitive number a person owns, and in exchange they get a card they can't use until they're standing in another country.
So every screen here is doing one job: removing a reason to walk away.
Scan or type, because people fumble cameras in bad light. A whole bottom sheet explaining CVV, because our user is holding an unfamiliar card somewhere unfamiliar. Terms branded to the issuing bank, not to us, because whoever carries the risk should be legible. Face ID instead of an OTP, because waiting for a text is where people put the phone down.
Then the last frame asks a different question. Now that we've made a card - do we show it?
We didn't pick. showCard shipped as a config flag. Some partners want a Visa card visible in their wallet, some never will. Both are right.
When you have to ask before you can deliver, every screen is an argument for staying.


Here's the architecture, plainly: both the token and the scanned QR data have to travel downstream before Visa's systems can confirm whether that QR is even serviceable. Non-EMVCo code, unsupported acquirer, a connector Visa hasn't onboarded yet.

From the design review, verbatim: “What's the best we can do to bring transparency around FX charges? Some POS terminals let you choose source or target currency at swipe time - should we?” The answer that day was let me come back to it. It stayed open a long time.
Our own research had already sharpened the problem past “show a number.” People didn't want the converted amount. They wanted to know what they were actually going to lose - the live rate plus whatever their bank quietly adds on top. Nobody could promise that in real time.
So we split the difference, literally. The button says what you owe the merchant. A green strip directly above it says what it costs you, in your own money, with a way to dig in.


Every other screen here is private. The success screen isn't - it gets held up to a stranger across a counter who needs to believe it in a second, often without a shared language. That's why the Visa sensory moment is load-bearing, not decorative. It's the part that works without reading.
Underneath: processing, success, failure, and the hard one - we couldn't fetch the latest status. Unknown is worse than declined, and most products refuse to design it.
A confirmation screen has an audience of two. Design for the one who can't touch the phone.

There's a second user in this project I nearly forgot: the wallet partner's design team. They're integrating a foreign payment flow into a brand they've spent years building. You can't hand them a fixed design. You also can't hand them a blank canvas, or the flow stops being recognizably safe and the trust breaks.
So the design work is deciding what's negotiable and what isn't. Color, type scale, spacing, icons, illustrations - theirs. Core layouts, gaps between components, mandatory CTAs, Visa branding visibility - locked.
And when a partner goes out of bounds, the SDK corrects instead of failing. It never errors at an integrator. It just quietly holds the line.
Between v1 and v2 we took customization away - nav icons went from open to locked. Every freedom you grant is a support ticket you own later.
A design system for one team is a style guide. For ten, it's a contract.


In November 2024, Visa announced QR connector partnerships across Asia Pacific and named Juspay as the payments technology company providing the technical capability. A year later, at Singapore FinTech Festival 2025, Visa Scan to Pay went live across the region.

No funnel, no test data, no way to A/B anything inside ten partner apps. Every call came down to research, reasoning, and being willing to say this is right in a room that could overrule me. I got some of it wrong. I'd still rather have made the call than waited for a number that was never coming.
$4.5 Trillion
Wallet Payments by 2026
2.6 Billion
Mobile Wallet users in Asia Pacific
99.999%
Uptime with no planned downtime
