Tylt CrossRamp·Platform Feature · B2B Fintech

One field closed a fraud-submission gap and opened India's largest payment channel to crypto merchants.

CrossRamp
My role
Founding Designer
System design · 5 user roles
Merchants
9
Onboarded on CrossRamp India
Markets
3
India, Brazil, Europe
Roles
5
One payment system
India runs on UPI. Tylt ran on crypto. These two worlds didn't speak.

Merchants on Tylt couldn't reach India's largest payment audience. Every customer without crypto was a lost sale. Every lost sale was a merchant considering other platforms.

The brief was blunt: reuse the existing P2P trading infrastructure rather than build new backend. That turned this from an engineering problem into a design problem — the system already existed, it just had to speak a new language, in a flow where the customer pays UPI and the merchant receives USDT without either side touching the other's world.

UTR closed the fraud gap.

Once UTR became the single source of truth for matching a payment to its trade, cashiers could verify with certainty — even when two or more trades had identical amounts. It didn't end fraud outright; customers could still submit an old or incorrect UTR, which is why the cashier keeps a dispute option. But it closed the specific gap that let customers confirm a payment without ever making one.

9
Merchants onboarded on CrossRamp India
3
Live markets — India, Brazil, Europe
5
User roles, one payment system

“The escrow mechanic, introduced purely as fraud prevention, became the primary trust signal merchants cited when choosing to use the product.”

This didn't start from a blank page.
Binance P2PPaxful P2P
Competitor Analysis
Binance P2P & Paxful P2P — how they handled trust, escrow, disputes.
Tylt's own P2P
Tylt's Own P2P
Built an internal peer-to-peer trading system on those learnings.
CrossRamp
CrossRamp
That P2P model extended for merchants — fiat in via UPI, USDT out.
Five roles needed one system. None of them could break.

The business goal was blunt: open India's largest payment channel without a backend rebuild, and without opening a new fraud vector. The design goal was harder — five roles, each with different data, different pressure, and a different definition of done, all running through one payment flow.

Customer
Pays via UPI through the merchant's app. Never sees Tylt directly.
Merchant
Monitors transactions and settlement via the Tylt platform. Receives USDT.
Cashier
Verifies UTR in real time, releases or disputes. Highest-pressure role.
Support
Handles disputes via admin panel. Full chat + UTR + transaction history.
Internal Admin
Monitors corridor health and operational performance across all markets.
Built in six moves, each one a response to what broke.
01 · The solution, as first designed
Merchant embeds the flow. Customer never leaves the merchant's app.

The customer taps deposit inside the merchant's app, which opens Tylt CrossRamp as an overlay. The platform starts the trade, holds the crypto in escrow, and waits for the customer to pay via UPI and confirm.

CrossRamp embedded escrow flow, five screens
02 · What internal testing found
Three problems, all found before UTR existed.

Both internal test runs and early live trades surfaced the same friction points:

Payment confirmation
Cashiers running multiple trades had difficulty tracking which UPI transaction related to which trade.
Fraud submissions
Some customers clicked “Confirm Payment” without making any payment at all.
Payment screen
The screen itself needed to close trades more clearly — amount, UPI ID, and QR weren't prominent enough.
03 · The fix
UTR as the single source of truth.

Amount to pay, UPI ID, and a scannable QR moved up front. A new UTR field was introduced — the unique 12-digit number every UPI transaction generates, issued by the customer's bank. Customers can only submit a trade once they provide it, which directly closed the fraud-submission gap and gave cashiers an exact reference to match against.

Payment screen before and after UTR
04 · Fraud didn't stop there
Wrong or old UTRs still got submitted — so the dispute path had to hold.

Even with UTR required, some customers submitted an incorrect or outdated number. The cashier checks the UTR against the actual payment received on their UPI app or linked bank account, then decides in real time: RELEASE to confirm receipt, or DISPUTE to reject it. It held up even in cases where two or more trades had identical amounts.

Cashier RELEASE/DISPUTE panel, mobile
05 · Built for the highest-pressure role
A dedicated desktop view, designed for minimum clicking.

The mobile cashier view required a lot of back-and-forth across concurrent trades. The desktop version puts new offers, active trades, and the RELEASE/DISPUTE decision on one dashboard — built for a cashier running several trades at once under a countdown.

Cashier desktop dashboard
06 · Escalation: the support panel
What happens when the cashier can't resolve it alone.

A disputed trade goes to support, who open a chat with both customer and cashier, request proof of payment, and check it against the submitted UTR. Depending on what surfaces, they reverse the escrow back to the cashier or settle it toward the merchant.

Support dispute-resolution panel
The model held. The rail changed per market.

Once escrow and UTR-matching proved out in India, the underlying model — customer pays local fiat, merchant settles in crypto — carried into Brazil and Europe. What had to be rebuilt each time wasn't the model, it was the local rail: Pix in Brazil, KYC-gated Open Banking in Europe. Neither market uses escrow the way India does — the design language and state-management patterns are what carried, not the mechanic itself.

Market 01
India
UPI → USDT
9 merchants · Escrow + UTR model established
Market 02
Brazil
PIX → USDT
Internal Pix flow · Customer pays via Pix, merchant settles in USDT
Market 03
Europe
Open Banking → USDC
KYC-gated Open Banking · Merchant settles in USDC
Brazil Pix flow and Europe KYC-gated Open Banking flow
What I'd tighten if I were doing this again.

After launch, I took on the cashier role myself for a period and made a hierarchy fix based on what felt wrong under pressure — but I didn't document the specific change well enough to speak to it with precision today. Next time, I'd log what changed, not just that something changed.

The UTR result is directional, not measured — fewer disputed trades, fewer “wrong transaction” mismatches, but no clean before/after baseline was ever captured. If I were doing this again, I'd push for that baseline before shipping, so the result didn't have to rest on a qualitative read.

FintechUPICryptoSystem Design5 User RolesEscrow Logic

Metrics and outcomes shown are directional. Specific figures reflect overall trends, not audited data.