Identifier types
Types define how values are normalized, validated, registered, and resolved. Integrations should discover active types instead of hard-coding assumptions.
Initial types
phone— normalized telephone numberemail— normalized email valuebangla_qr— full Bangla / EMV QR text (exact string match, max 700 characters)paypal,bkash, or merchant IDs where enabledcustom— operator-controlled integration valuesprovider_name— provider namespace names such asalice.redotpay
Discovery
GET /v1/identifier-types
{
"types": [
{
"name": "email",
"status": "active",
"registration_eligible": true,
"resolution_eligible": true
}
]
}A QR may already be the identifier value. For Bangla / EMV payment QR codes, send the full scanned or pasted text as bangla_qr (or omit type and let the resolver detect it). Other QR formats may still need the wallet to extract a typed identifier first.
Integration rule
const supported = await fetch("/v1/identifier-types").then((r) => r.json());
const type = supported.types.find(
(item) =>
item.name === input.type &&
item.status === "active" &&
item.resolution_eligible,
);
if (!type) throw new Error("Identifier type cannot be resolved");Keep type discovery server-driven because the set of active types and their registration eligibility can change independently of a wallet release.