Prerequisites
{{aggregator_id}}and{{secret_key}}aggregator_merchant_identifierfor the merchant collecting funds- Optional order metadata and amount
Flow summary
1
Load merchant identifiers
Retrieve the
aggregator_merchant_identifier from the merchant creation response.2
Create the dynamic QR
Call
POST /v1/aggregators/{{aggregator_id}}/qrs with type: DYNAMIC and the order details.3
Render the QR
Render the returned
data.code string as a QR image in your checkout UI.4
Track the outcome
Listen for payment webhooks or poll the payment endpoint to confirm settlement.
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
string
required
Use
DYNAMIC to create a single-use QR code.string
required
Token returned from merchant creation (
data.token).string
Recommended to guarantee idempotency. Reuse only when retrying the same payload.
string
Optional order reference surfaced in webhook payloads.
integer
Amount in paisa to embed in the QR; omit to let the payer choose the amount.
integer
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.