Skip to main content
Static QR codes are reusable. They identify your aggregator merchant but leave amount and payer details open, making them ideal for countertop displays and printed invoices.

Prerequisites

  • {{aggregator_id}} and {{secret_key}}
  • aggregator_merchant_identifier for the merchant collecting funds

Flow summary

1

Load merchant identifiers

Retrieve the aggregator_merchant_identifier from the merchant creation response.
2

Create the static QR

Call POST /v1/aggregators/{{aggregator_id}}/qrs with type: STATIC.
3

Render and share

Render the returned data.code and distribute it digitally or physically.
4

Reconcile payments

Match webhook payloads or list QR payments to reconcile each payment.
Set {{base_url}} to https://dev.api.getsafepay.com/raastwire in Sandbox or https://api.getsafepay.com/raastwire in Production.

Static QR

type
string
required
Set to STATIC for reusable codes.
aggregator_merchant_identifier
string
required
Token returned from merchant creation (data.token).
request_id
string
Recommended to prevent duplicate QR creation on retries.

Rendering tips

  • Feed data.code to any QR generation library (qrcode.react, qr-image, etc.).
  • Print the QR with usage instructions or embed it in digital invoices.
  • Use GET /v1/aggregators/{{aggregator_id}}/qrs/{{qr_id}}/payments to list transactions tied to this QR.

Webhook events to expect

  • payment.created
  • payment.completed
  • payment.settled
  • payment.failed
  • payment.rejected

See also