One QR.
Every way to pay.
Indonesian merchants take rupiah via QRIS and crypto via NEAR Intents. One QR, two worlds. The merchant receives USDC on NEAR, at satuqr.near.
Live demo. Crypto quotes are still dry-run; no funds move.
01 · Merchant
Create a rupiah invoice.
Type the shop name and the amount. The backend converts rupiah to USDC at the Frankfurter rate, then builds a QRIS payload with the amount.
Rupiah customers scan this code with any payment app. Without a static QRIS string, this is a DEMO payload.
02 · Crypto buyer
Pay from any chain.
Pick the origin asset, enter a refund address, then request a quote. NEAR Intents swaps your asset into USDC and sends it to satuqr.near. The buyer needs no NEAR account.
Quote details
03 · Merchant
Invoice dashboard.
All invoices, statuses, and CSV export. The rupiah rail is confirmed manually by the merchant, because this demo has no acquirer webhook yet.
| ID | Merchant | Amount | USDC | Status | |
|---|---|---|---|---|---|
| Not loaded yet. Press reload. | |||||
04 · How it works
Three steps, two worlds.
- 01

Merchant creates an invoice
The rupiah amount converts to USDC at the Frankfurter rate. The QRIS payload is built from the shop static string, or a DEMO payload when empty.
- 02

Customer picks how to pay
Rupiah customers scan QRIS as usual. Crypto customers pick an origin asset, and NEAR Intents 1Click returns an EXACT_OUTPUT quote into USDC on NEAR.
- 03

Merchant receives USDC
USDC lands in satuqr.near. The invoice status flips to paid. The merchant sees every invoice in the dashboard and exports a CSV.
Honest about this demo
There is no live QRIS acquirer integration yet. That needs a MID and a bank partnership. The rupiah rail uses the merchant own static QRIS and is confirmed manually. The rupiah-to-crypto rail uses a simulated off-ramp in the demo. Intents only runs on mainnet, so quotes here are dry-run and no funds move. 1Click fee: 0.01% for stablecoin pairs with an API key, 0.20% for other pairs. The solver spread sits inside the quote.

