Skip to main content
Accept VietQR payments from customers in Vietnam with 2C2P as the payment service provider (PSP). The customer selects VietQR, scans the QR code on the 2C2P hosted payment page and returns to your site.

Supported workflows

Before you begin

Complete these steps before you send your first VietQR payment through 2C2P:
  1. Set up a 2C2P integration in your workspace. Follow the 2C2P integration setup guide if you don’t have one yet. To refund VietQR payments, also add the merchant private key and the 2C2P public key to the integration.
  2. Ask 2C2P to enable VietQR on your 2C2P merchant account.
  3. In the Payrails Portal, go to Settings → Integrations, open your 2C2P integration, select VietQR under Payment methods, and save.
  4. Add VietQR as a payment option in your workflow.

Request fields for 2C2P

Send these fields in the authorize request, in addition to the standard authorize fields. Payrails checks Required fields and returns an error when one is missing. Fields required by the PSP pass the Payrails checks but the PSP can decline the payment without them.

Authorize a VietQR payment

Call authorize a payment with vietQR as the paymentMethodCode. The response includes the redirect to the 2C2P hosted payment page.
Authorize request
After the customer confirms the payment, 2C2P returns them to your success or error URL. Confirm the result through webhook notifications or the execution status before you fulfill the order.

How 2C2P handles VietQR

  • 2C2P shows the QR code on its hosted payment page. For VietQR, Payrails leaves out card and 3D Secure data, and it sends no address or browser data.
  • VietQR through 2C2P is a sale: 2C2P settles the payment on success. VietQR has no separate capture or cancel step.
  • Payrails sends the execution’s merchant reference to 2C2P as the invoice number. 2C2P rejects an invoice number it has already received, so use a new merchant reference for each payment.
  • The customer’s return to your site doesn’t carry a signed result. Payrails queries 2C2P for the payment status, and 2C2P also sends a signed notification.
  • Refunds use 2C2P’s maintenance API and need the merchant private key and the 2C2P public key on your integration.
Last modified on October 2, 2026