انتقل إلى المحتوى
EXZIX

QR payments

QR Payments provide a merchant-managed public payment point with a default fiat or crypto currency, optional currency switching, expiry, theme, and an authoritative Payment Intent list.

Create and configure

From Merchant → QR Payments, create a page with name, default_currency (fiat:CODE or crypto:asset_public_id), allow_currency_switch, locale, theme, and expiry_seconds. Supported expiry values are 60, 120, 300, 600, 900, 1800, 3600, 7200, 21600, 43200, 86400, 172800, and 604800 seconds. Currency values are validated against the merchant’s active options.

Public QR endpoint

GET /qr/{qr_public_id} renders the public payment page. GET /api/v1/qr/{qr_public_id} returns the page configuration and available currencies for the public client. The QR page creates or displays payment requests through the existing Payment Intent authority; a QR scan alone is never proof of payment.

Payment QR for a Payment Intent

An authenticated merchant can open GET /merchant/{merchant}/payment-intents/{payment_intent}/qr to render a signed presentation payload. The payload uses exzix://pay/v1/, includes environment, payment reference, network, asset, atomic amount, destination and expiry, and is HMAC-protected. The server must compare decoded values with the authoritative Payment Intent before accepting a payment.

Currency and lifecycle

The merchant can enable or disable a QR page and update its currency, theme, locale, switch policy and expiry. QR pages do not alter a Payment Intent after creation. Expired or disabled presentation data must not be treated as payable.

Secret policy

Never encode an API key, webhook secret, wallet private key, seed phrase or unlock password in a QR code, URL, image, browser storage value or support screenshot.