Wallet API reference
The resolver is the only operation needed for a read-only wallet integration: send one typed identifier and consume a structured resolution response.
POST /v1/resolve
POST /v1/resolve
Authorization: Bearer <api-key>
Content-Type: application/json
{
"type": "custom",
"value": "rezva-test-merchant"
}type is an active, resolution-eligible identifier type. It may be omitted when the value is a full EMV / Bangla QR payload — the resolver classifies that as bangla_qr. value is normalized by the resolver according to that type. Every identifier value is capped at 700 characters.
POST /v1/resolve
{
"type": "bangla_qr",
"value": "00020101021126…6304B3C2"
}For bangla_qr, paste the full QR text and resolve that exact string. Do not rewrite it into a merchant ID or chain address before calling the resolver.
Response
{
"protocol_version": "1",
"status": "active",
"payment_ready": true,
"identifier": {
"type": "email",
"value": "pay@example.com",
"normalized_value": "pay@example.com"
},
"registration": {
"registered_at": "2026-08-29T12:00:00.000Z",
"activated_at": "2026-08-29T13:00:00.000Z",
"last_updated": "2026-08-29T12:00:00.000Z",
"last_payment_update": null
},
"payment_options": [
{
"chain": "base",
"asset": "USDC",
"address": "0x…",
"token_contract": "0x…",
"network_identifier": "eip155:8453",
"payment_ready": true
}
]
}Payment decision
const canPay = result.status === "active" && result.payment_ready === true && result.payment_options.some((option) => option.payment_ready === true);
statusis the registry lifecycle state.payment_readyis the top-level payability signal.payment_optionscontains chain, asset, address, token contract, and constraints.registrationtimestamps support trust and warning UX.trust.warnings, when present, must be shown before confirmation.
Discovery and error handling
GET /v1/identifier-types— discover active types and capabilities.GET /health— check service health; it does not authenticate.401— authentication or provider approval failure.400— invalid identifier or unsupported type.404— no mapping exists for the normalized identifier.429— retry after the response’sRetry-Aftervalue.
See the OpenAPI specification for the machine-readable contract. Free API keys cannot call registry mutation endpoints.