LogoDOCS

QRPh Standard

UNIVERSAL QR

QRPh 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 required

Dynamic 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 Developers

Step 1: Generate a Dynamic QR Code

To create a Dynamic QRPh code, call the Payment Intents API and set the payment_method to qrph.

POST /v1/payment-intents
curl -X POST https://api.paynplus.com/v1/payment-intents \
  -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).