Payment method · Vietnam

VietQR — VND collections by QR code

CVPay is a Singapore-licensed payment provider that lets businesses accept VND payments through VietQR, the national QR payment standard used by virtually every bank and e-wallet in Vietnam.

What is VietQR?

VietQR is Vietnam’s national QR payment standard, operated by NAPAS (the national payment switch). One QR format is recognized by the mobile apps of essentially every retail bank and major e-wallet in the country, which makes it the default way Vietnamese consumers pay — for everything from street food to e-commerce.

For businesses, VietQR replaces manual bank transfers. Instead of showing customers a static account number and hoping they type the right amount and reference, you present a dynamic QR that already carries the amount and an order-bound reference. The customer scans, confirms, and the transfer reconciles itself.

Key facts

Standard
VietQR / NAPAS 247, EMVCo-compatible
Coverage
Recognized by the apps of all major Vietnamese banks and e-wallets
Currency
VND (Vietnamese dong)
Pay-in speed
Typically 1–3 minutes after the customer confirms
Availability
24/7 including weekends and holidays
QR type
Dynamic — amount and order reference embedded per transaction
Limits
Per-transaction and daily limits follow your merchant configuration

How it works with CVPay

Accepting payments (pay-ins)

Create an order through the API and receive a VietQR payload bound to that order. Render it in your checkout or let CVPay’s hosted cashier page display it. The customer scans with any Vietnamese banking or wallet app, and your webhook receives the confirmation — typically within 1–3 minutes. Because every QR is dynamic, underpayments and orphan transfers are engineered out rather than reconciled after the fact.

Sending payouts

The same platform sends VND payouts to any VietQR-reachable bank account over the 24/7 fast-transfer network. Recipient-name verification is available before dispatch, and final status is delivered to your webhook. Typical arrival is minutes, day or night.

Integration

One REST API covers every payment method CVPay supports. Create an order, show the returned QR or account details to your customer, and receive the result on your webhook. A hosted cashier page and sandbox environment are available, and most merchants complete integration within days.

# Create a VND order with a VietQR code
curl -X POST 'https://{api-base}/api/pay/qrcode' \
  -d 'mchNo=M1234567890' \
  -d 'appId=YOUR_APP_ID' \
  -d 'mchOrderNo=ORDER-2026-0001' \
  -d 'wayCode=QRCODE247' \
  -d 'currency=vnd' \
  -d 'amount=500000' \
  -d 'sign=...'

# Response contains a VietQR payload bound to this order.
# Simplified example — see the API docs for the full
# field list and MD5 signature spec.

Frequently asked questions

Which banks and wallets can pay a VietQR code?+

Essentially all of them. VietQR is the national standard: customers of every major Vietnamese retail bank, and users of major e-wallets, can scan the same QR from their own app.

What is the difference between dynamic and static QR?+

A static QR only encodes an account, so the customer types the amount and reference by hand — a major source of reconciliation errors. CVPay issues dynamic QR codes with the amount and order reference embedded, so payments match orders automatically.

How fast do payments arrive?+

Typically within 1–3 minutes of the customer confirming in their app, 24/7. Your systems are notified through a signed webhook.

Does a QR code expire?+

Yes — each QR is bound to an order with a validity window. If a customer pays after expiry, the payment can still be recovered and matched through order-rescue flows rather than being lost.

Can I use VietQR for payouts too?+

Payouts are sent as account-to-account fast transfers to any Vietnamese bank account, which covers every VietQR-reachable recipient. QR parsing is also supported on the payout side, so a recipient’s VietQR code can be used to pre-fill their account details.

Start accepting payments today.

Create an account and go live, or talk to our team about your requirements.