Rezva

Testing guide

Exercise resolve against live registry fixtures and Universal Name Resolution using the open-source reference wallets. Values below are active in the production registry (or public naming systems) and are safe for Free API / provider-key resolve tests.

Reference wallets

Clone either client, put your Free API (or approved provider) key in the wallet env, and point the resolver base URL at production or local as described in each README.

Also listed under Compatible wallets.

Auth and base URL

POST /v1/resolve
Authorization: Bearer <free-or-provider-key>
Content-Type: application/json

# Production Worker (example)
https://universal-payment-api.sabrishahtab.workers.dev/v1/resolve

Generate a Free API key at /dashboard/free-api. Prefer sending { "value": "…" } for name-like pastes; typed registry identifiers may include type.

QR / Test Merchant

Shared Test Merchant (from shared_test_merchant / active custom identifier):

{
  "resolver_url": "https://universal-payment-api.sabrishahtab.workers.dev/v1/resolve",
  "type": "custom",
  "value": "rezva-test-merchant"
}
  • Resolve body: { "type": "custom", "value": "rezva-test-merchant" }
  • Expected: status: active, Base Sepolia USDC destination (shared merchant wallet).
  • In the mobile wallet: scan the QR from the Free API dashboard Test Merchant panel. In Rabby: paste the value or the JSON payload if your build accepts QR JSON.

An active bangla_qr EMV string is also registered in the production DB and resolves with { "type": "bangla_qr", "value": "<emv-payload>" }. Prefer the Test Merchant QR for the standard payment demo; use bangla_qr only when testing that identifier type.

Email

Active registry emails you can paste into Send:

{ "type": "email", "value": "test@test.com" }

# Also active (same resolve shape):
# prod-test-536563835@example.com
# probe-real2-ee6b4399@example.com

Expect status: active and at least one payment option.test@test.com maps to a Base Sepolia USDC destination in the live registry.

Namespace name

Active provider namespace name from namespace_names:

{ "value": "shahtab.rabby" }

# Typed form (inferred automatically from value):
{ "type": "provider_name", "value": "shahtab.rabby" }
  • Namespace slug: rabby
  • Destination: Base Sepolia USDC
  • Expect status: active and payment_ready: true

Blockchain name resolution

Universal Name Resolution uses the same POST /v1/resolve. Send only the name string. Do not register these in the Identifier Registry. Verified live samples (five per provider):

ENS (.eth)

vitalik.eth
nick.eth
ens.eth
brantly.eth
luc.eth

Base Names (.base)

jesse.base
todd.base
colin.base
jacob.base
wilson.base

Solana Name Service (.sol)

bonfida.sol
solana.sol
serum.sol
mango.sol
dexlab.sol

SNS returns a Solana address. EVM-only Send UIs (for example Rabby) should show the resolved address and skip Pay when no compatible EVM option exists.

Unstoppable Domains

brad.crypto
sandy.crypto
bitcoin.crypto
myetherwallet.crypto
sandy.nft

Example request:

curl -sS -X POST "$API/v1/resolve" \
  -H "authorization: Bearer $REZVA_FREE_API_KEY" \
  -H "content-type: application/json" \
  -d '{"value":"jesse.base"}'

Success responses include trust.external_resolver.{ provider, namespace } (optional for wallets) plus normal payment_options. See API Reference.

Wallet checklist

  1. Paste or scan each fixture above.
  2. Confirm the wallet calls Rezva /v1/resolve for name-like pastes (not a local-only ENS short-circuit for payment).
  3. Show chain, asset, and recipient before signing. For Test Merchant / email / namespace, complete a small Base Sepolia USDC transfer if your build supports it.
  4. Treat 404 as “no payment destination”, 429 as rate limit, 502 as upstream naming RPC failure (retry later).

Full Free API payment walkthrough: Free API and Test Merchant.

Open Free API testing