Skip to content
Logo

Yodl SDK

Best-in-class QR payments with a 15-minute integration.

Your users scan an everyday local QR code — PIX in Brazil, VietQR in Vietnam, GCash in the Philippines — and pay the merchant from their own wallet. The merchant receives their own currency, never crypto. Funds stay self-custodied until the moment of payment.

Why Yodl

QR payments are messy and hard to get right. Yodl has spent a year's worth of work integrating QR providers. They all come with endless quirks, failures, and constant fixes.

Payment UX looks simple on the surface. But every single payment is like Demo Day: countless things can go wrong, leaving users unable to pay. Traumatized. Churn.

Yodl SDK gives you best-in-class QR payments with a 15-minute integration:

  • UI/UX included — the SDK ships with a complete payment flow out of the box, guaranteeing consistent and fast payments.
  • Processor aggregation — we aggregate multiple processors, so you get the best rates, reliability, and feature set.
  • Wallet-agnostic — any EIP-1193 provider works: Privy, MetaMask, Coinbase Wallet, Rainbow, WalletConnect.
  • Self-custody — no deposits, no custodian. Funds leave the wallet at the moment of payment.

The devil is in the detail

Many "stablecoin orchestrators" claim to support a country's QR codes. In practice:

  • QR payments are slow and not optimized for paying in a shop. Churn.
  • Not every QR code "flavor" is supported. Users can't tell the difference, and 5% of QRs won't work. Churn.
  • Failure and refund flows are an afterthought. Payment failures go unhandled. Churn.
  • Nobody tests on slow mobile networks. Travel eSIM, slow SSL handshakes, servers far away. The loader spins 15 seconds just to resolve a QR. Churn.

For most, QR code payments are just a ✅ on a feature table. For Yodl Pay QR codes are priority #1.

What you actually integrate

A provider and a component. The React Native SDK ships the whole payment flow — localized per country, with no backend of yours involved.

If you want payment records on your own backend, that is a separate, optional layer: see backend integration. The payment flow works without it.