FAQ
FAQ
Answers to the most common questions about VietQR(@viet-qr) — from licensing and security to bank compatibility and customization.
General & Trust
Is this library completely free?
Yes, @viet-qr is an open-source library distributed under the MIT License. You can use it freely in both personal and commercial projects subject to the MIT License terms.
Do you collect any user or payment data?
Absolutely not. The entire QR generation process runs locally in the user's browser. We do not track, store, or transmit any payment information to a server — there isn't one.
Technical & Performance
Does the library require an internet connection to work?
No. The core QR generation algorithm and bank BIN lookup run entirely offline (O(1) time complexity) on the client side — no API call is needed to generate a QR code.
Why does this library have zero dependencies?
Zero dependencies applies to @viet-qr/core: the EMVCo builder, CRC16 checks and bank lookup are implemented in TypeScript. QR rendering adapters have their own dependencies. Use the core alone when you only need payloads.
Is the Bank Data (BINs) updated automatically?
The library ships with a bank BIN directory, so you can pass a short code (e.g., VCB, TCB) and it resolves to the correct BIN in O(1) time. This bundled data is updated through package releases; if you need the freshest list at runtime, the fetchBankList() utility lets you pull it from any API or CDN.
Banks & Compatibility
Which banks are supported?
Payloads follow EMVCo and NAPAS 247 for banking apps that support VietQR. Test with your target banking apps before deployment.
Can I use this with React Native?
Currently, the ecosystem is optimized for web environments (React, Vue, Svelte, Vanilla JS). However, since the core is pure TypeScript, you can use @viet-qr/core to generate the payload string and pass it to any React Native QR code component.
Is there a transfer amount limit when scanning this QR code?
The payload accepts a non-negative integer amount of up to 13 digits. Actual transfer limits are determined by the banking app and bank policies.
Features & Customization
Why should I use this library instead of downloading a static QR from my banking website?
With @viet-qr, you can generate Dynamic QR codes for each transaction. The generated QR already includes the Amount and Transfer Message. Customers only need to scan and confirm, reducing manual entry. The payer should still check the details before confirming.
Does the library support customizing the QR code appearance (colors, logo)?
Absolutely. The framework wrappers (React, Vue, Svelte, Vanilla) ship with pre-built templates like CompactCard and PayStandee that let you easily customize colors, sizing, and even embed a logo to match your brand guidelines.
Does the library support checking payment status (whether money was received)?
No. @viet-qr is solely responsible for generating accurate QR codes on the frontend. To check balance changes and payment status, you'll need to integrate webhooks or APIs from your bank (or third parties like PayOS, SePay) on your backend.
Still have questions?
Can't find the answer you're looking for? Please chat to our friendly team.
Contact Us