Prerequisites
{{aggregator_id}}and{{secret_key}}aggregator_merchant_identifierfor the merchant collecting funds- Optional order metadata and amount
Flow summary
Load merchant identifiers
Retrieve the
aggregator_merchant_identifier from the merchant creation response.Create the dynamic QR
Call
POST /v1/aggregators/{{aggregator_id}}/qrs with type: DYNAMIC and the order details.Set
{{base_url}} to https://dev.api.getsafepay.com/raastwire in Sandbox or https://api.getsafepay.com/raastwire in Production.Dynamic QR
- Request Fields
- API Example
- Sample Response
Use
DYNAMIC to create a single-use QR code.Token returned from merchant creation (
data.token).Recommended to guarantee idempotency. Reuse only when retrying the same payload.
Optional order reference surfaced in webhook payloads.
Amount in paisa to embed in the QR; omit to let the payer choose the amount.
Optional expiry window (defaults to 180) after which the QR is invalid.
Render the QR
Feeddata.code into your preferred QR library (for example, qrcode.react, qr-image, or qrcodejs). The returned string is EMVCo-compliant and ready for Raast banking apps.
Webhook events to expect
payment.createdpayment.completedpayment.settledpayment.failedpayment.rejected
GET /v1/aggregators/{{aggregator_id}}/payments/{{payment_id}} or your webhook handler to confirm settlement.