Last updated: August 9, 2026
This Privacy Policy describes how MatrixQR ("the App", "we", "us", or "our") handles information when you use our mobile application. We built MatrixQR to work as much as possible directly on your device, and this policy explains exactly what data is involved, where it goes, and why.
By using MatrixQR, you agree to the collection and use of information in accordance with this policy.
MatrixQR does not require you to create an account.
Scanned and generated code content is processed on your device.
Content you protect with Secure Code (PIN encryption) is encrypted locally using AES-256; your PIN and the decrypted content are never sent to us or to any server.
We use the Camera only to scan codes in real time — no photos or video are recorded or uploaded.
Dynamic QR codes store a title, target URL, and scan count in a local database on your device only. They do not sync to any server unless you optionally configure a self-hosted API (see Section 2.6).
Batch Generate creates up to 50 codes at once and exports results as Excel or CSV files saved locally on your device.
The Home Screen Widget (Receive Money) stores your bank name and account number locally in app preferences so the payment QR can be displayed on the widget without opening the app.
We use third-party services (Google AdMob and Firebase Analytics) that may collect limited technical and advertising data as described below.
MatrixQR does not require registration, sign-in, or any personal information (name, email, phone number) to use its core features.
MatrixQR requests Camera access solely to scan QR codes, Data Matrix codes, and other supported barcode formats in real time. The camera feed is processed live on your device to detect and decode barcodes.
We do not record, store, or transmit camera images or video.
We do not access your camera roll through the camera permission.
If you choose to scan a barcode from an existing image, MatrixQR requests access to your photos/gallery only for the image you select. The selected image is processed locally to detect a barcode and is not uploaded, copied elsewhere, or retained by the App beyond the scanning operation.
When you tap Save to Gallery, the generated QR/barcode image is written to your device's Photos library (under a "MatrixQR" album). This image stays on your device and is not uploaded by us.
MatrixQR lets you protect QR or Data Matrix content with a PIN. This works entirely on-device:
The content you enter is encrypted using AES-256 with a key derived from your PIN, before the code is generated.
Your PIN is not stored by the App, not transmitted to us, and not recoverable by us if you forget it.
Decryption happens only on the device that scans the code and enters the correct PIN.
We have no ability to access, view, or recover the original content of any Secure Code you create.
MatrixQR keeps a local history of codes you have scanned or generated so you can find them again later. This history is stored in a local database on your device only. It is not synced to any server or account, and it is permanently deleted if you clear the App's data or uninstall the App.
The Dynamic QR feature lets you create QR codes whose target URL can be updated without reprinting. By default, Dynamic QR data (title, target URL, scan count, timestamps) is stored only in a local database on your device. A Dynamic QR created this way only works when scanned with MatrixQR on the same device.
Optional cloud mode: If you choose to configure a self-hosted backend API (e.g., a personal Cloudflare Worker), the App will send your Dynamic QR records (title, short ID, target URL) to that server, which you control. MatrixQR itself does not operate or have access to any such backend; you are solely responsible for the privacy and security of your own server.
The Batch Generate feature creates sequences of up to 50 codes at once. Generated codes are displayed in-app and can be exported as:
Excel (.xls) — a SpreadsheetML file written to your device's app cache and shared via the system share sheet.
CSV (.csv) — a plain-text file written to your device's app cache and shared via the system share sheet.
These files contain only the code labels and generation status you entered. They are created locally and are not uploaded to any server by the App.
The Receive Money widget displays a payment QR code (VietQR) directly on your home screen. To do this, the App saves the following information in local app preferences (SharedPreferences) on your device:
Bank name
Account number
Account holder name (optional)
This information is stored locally only, is never transmitted to us or any third party, and can be cleared by removing the widget or clearing the App's data.
MatrixQR lets you enable or disable optional scan feedback (beep sound, vibration, auto-copy result to clipboard) in the About / Settings section. These preferences are stored in local app preferences on your device and are never transmitted to us.
MatrixQR displays ads through Google AdMob. To serve and measure ads, AdMob and its partners may collect:
Advertising ID (a resettable, non-permanent device identifier)
Device information (device model, OS version, language, general location inferred from IP address)
Ad interaction data (impressions, clicks)
This data is collected and processed by Google in accordance with the Google Privacy Policy and the How Google uses information from sites or apps that use our services page. You can opt out of personalized advertising through your device's ad settings (Android Settings → Google → Ads → Opt out of Ads Personalization).
MatrixQR uses Firebase Analytics (a Google service) to understand how the App is used, so we can improve it. This may include:
App usage events (e.g., screens viewed, features used, session length)
Device and app information (device model, OS version, app version, crash/diagnostic data)
Advertising ID and ad revenue data at the impression level, used to measure how app usage relates to ad performance
This data is aggregated and does not include the actual content of any QR/Data Matrix codes you scan or create. It is processed by Google in accordance with the Google Privacy Policy.
Permission Purpose
Camera Real-time scanning of QR / Data Matrix / barcodes
Photos / Media (read) Scan a barcode from a selected image
Photos / Media (write) Save generated QR images to Gallery
Internet / Network State Load ads, send anonymous analytics events; optional Dynamic QR cloud API
Vibrate Haptic feedback on scan / actions (user-configurable)
We only request permissions required for the features you actively use.
We use the limited data described above to:
Provide core scanning and generation functionality
Keep your local scan/generation history on your device
Display the Receive Money widget on your home screen using your locally saved account details
Serve and measure advertising through Google AdMob
Understand aggregate usage trends and improve app stability and features through Firebase Analytics
Diagnose and fix crashes or technical issues
We do not sell your personal information. We do not have access to the decrypted content of your Secure Codes or the content of any QR codes you create or scan.
We share limited technical/advertising data only with the following service providers, each of which processes data under their own privacy policy:
Google AdMob — https://policies.google.com/privacy
Google Firebase (Analytics) — https://firebase.google.com/support/privacy
We do not share your data with any other third party, and we do not sell data to advertisers or data brokers.
If you optionally configure a self-hosted Dynamic QR API backend, data is sent to a server you control — not to us.
Local data (history, saved codes, Dynamic QR records, widget account details, encrypted Secure Code content) is retained on your device until you delete it within the App, clear the App's storage, or uninstall the App.
Exported files (Excel/CSV from Batch Generate) are stored in the app's cache directory and may be automatically cleared by the system when storage is needed.
Analytics/advertising data processed by Google is retained according to Google's own retention policies, which you can review at the links in Section 4.
Delete local data: Clear the App's data or uninstall the App to remove all locally stored history, Dynamic QR records, widget preferences, and content.
Limit ad personalization: Use your device's ad settings to reset or opt out of your Advertising ID.
Camera / Photos access: You can revoke Camera or Photos permission at any time in your device Settings. Scanning features will not function without the relevant permission.
Scan feedback: Toggle beep, vibration, and auto-copy in the About / Settings section of the App.
If applicable local law (e.g., GDPR, CCPA) grants you additional rights such as access, correction, or deletion of personal data, you may contact us using the information in Section 10. However, because MatrixQR does not collect personally identifiable information on our own servers, most such requests can be fulfilled by deleting local app data.
MatrixQR is not directed at children under 13 (or the minimum age defined by local law), and we do not knowingly collect personal information from children. If you believe a child has provided us with personal information, please contact us so we can address it.
We take reasonable technical measures to protect information processed by the App, including on-device AES-256 encryption for Secure Code content. However, no method of electronic storage or transmission is 100% secure, and we cannot guarantee absolute security.
We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated "Last updated" date. We encourage you to review this policy periodically.
If you have questions about this Privacy Policy, please contact us at:
Email: phongba.mobile@gmail.com
Developer: phongba_mobile