QRPh Standard
UNIVERSAL QRQRPh is the National QR Code Standard mandated by the Bangko Sentral ng Pilipinas (BSP). By integrating QRPh, your business can accept payments from any participating bank or e-wallet (e.g., BDO, BPI, UnionBank, GCash, Maya) using a single QR code.
Static QRPh
Best for physical stores. The QR code contains your merchant ID, but the customer must manually type the amount to pay. You can generate this once from your Dashboard and print it on a standee.
No API requiredDynamic QRPh (API)
Best for e-commerce, POS systems, and self-ordering kiosks. A unique QR code is generated per transaction with the exact order amount embedded.
Recommended for DevelopersStep 1: Generate a Dynamic QR Code
To create a Dynamic QRPh code, call the Payment Intents API and set the payment_method to qrph.
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 350.00,
"currency": "PHP",
"payment_method": "qrph",
"description": "Table 4 Bill"
}'
Step 2: Display the QR Code
The API response will provide two ways to display the QR code: an image URL (qr_image_url) ready to be embedded in an <img> tag, and the raw EMVCo payload string (qr_payload) if you prefer to render the QR code using your own library.
"id": "pi_qrph_1122334455",
"status": "AWAITING_PAYMENT",
"next_action": {
"type": "display_qr_code",
"qr_image_url": "https://api.paynplus.com/qr/render/pi_qrph_1122334455.png",
"qr_payload": "00020101021238590015ph.com.paynplus..."
}
}
Listen for the Payment
Because the customer scans the QR code from their own banking app, your frontend will not automatically know when the payment is complete. You must set up a Webhook to listen for the payment.success event to update your UI (e.g., mark the POS order as paid).