Overview
QR codes bridge the gap between your app and the customer’s banking/wallet app. A single scan populates all payment fields, eliminating transcription errors.PayID QR Codes (AUD)
PayID QR codes follow the standard format:payid:john.doe@example.com
When scanned with an Australian banking app, the PayID field is auto-populated and the customer only needs to enter the amount and confirm.
Supported Banks
All major Australian banks support PayID/Osko QR scanning:| Bank | PayID Support | QR Scanning |
|---|---|---|
| Commonwealth Bank | Yes | Yes |
| ANZ | Yes | Yes |
| NAB | Yes | Yes |
| Westpac | Yes | Yes |
| ING | Yes | Yes |
| Macquarie Bank | Yes | Yes |
| Bendigo Bank | Yes | Yes |
| Suncorp Bank | Yes | Yes |
Implementation
Node.js
Python
TypeScript / React
Best Practices
| Aspect | Recommendation |
|---|---|
| Format | Always use payid: prefix for AUD payments |
| Error Correction | High (H) level — allows logo overlays and better scan reliability |
| Minimum Size | 200×200px for digital display, 2×2cm for print |
| Colors | High contrast (dark on light). Avoid light colors |
| Border | Minimum 2-4 modules quiet zone around the QR code |
| Resolution | Minimum 72 DPI for screen, 300 DPI for print |
| Testing | Always test with actual banking apps before launch |
Crypto Address QR Codes
For crypto deposits, use the standard URI format:Simple Crypto QR Generator
Integration Flow
Display in UI
Embed the QR code in your payment page alongside the text PayID and BSB + Account Number.
Customer Scans
Customer opens their banking app, scans the QR code, enters the amount, and confirms.
Testing
Verify your QR codes before deploying:- Online scanner: Use an online QR decoder to verify the content matches
payid:{address} - Banking app test: Scan with a real Australian banking app (CommBank, ANZ, etc.)
- Edge cases: Test with different phone cameras, lighting conditions, and screen sizes

