Free Invoice QR Code Reader
Scan or paste the QR code from a Saudi, Portuguese or Indian invoice to read and check its tax details.
What is an Invoice QR Code Reader?
This invoice QR code reader decodes the tax QR codes printed on invoices and receipts in Saudi Arabia, Portugal and India, and checks them. It shows the seller, the tax numbers, the date, the totals and the VAT, field by field, from a picture of the code or the text a scanner reads out.
Saudi ZATCA codes are tag-length-value data in Base64; Portuguese codes are letter-coded fields with the ATCUD and a VAT breakdown; Indian GST codes are signed tokens from the invoice registration portal. Tax numbers are checked by their check digits or format, and totals are added up again to catch errors.
Key Features
Three Countries
Saudi ZATCA, Portuguese ATCUD and Indian GST e-invoice codes.
Tax Number Checks
Portuguese NIF and Indian GSTIN check digits; Saudi VAT format.
Totals Added Up
Portuguese VAT lines and totals recalculated.
VAT Rate Check
Saudi 15% and Portuguese 6, 13 and 23% rates.
Scan From a Picture
Open a photo of a receipt’s QR code.
Perfect for everyone
- Accountants
- Auditors
- Finance teams
- Travellers claiming VAT and developers building e-invoicing
How to Use the Invoice QR Code Reader
Open a photo of the QR code on an invoice or receipt, or paste the text from a scanner app. The fields and checks appear straight away, so you can compare the code with the printed invoice and spot a mismatch before it reaches your books.
Scan or Paste
A photo of the invoice’s QR code, or its text.
Read the Fields
Seller, tax numbers, date, totals and VAT.
Run the Check
Check digits, VAT rates and totals.
Compare With the Invoice
The code should match what’s printed.
Invoice Codes, Decoded
Each row is an invoice QR code of the kind printed on Saudi, Portuguese and Indian invoices and receipts, with a few that don’t add up. Each answer is this tool’s fields or check, read straight from the code.
“ARRBbCBOb29yIFRyYWRpbmcgRXN0LgIPMzEwMTIyMzkzNTAwMDAzAxQyMDI2LTEwLTEyVDE0OjI1OjA5WgQHMTE1MC4wMAUGMTUwLjAw”
“ARRBbCBOb29yIFRyYWRpbmcgRXN0LgIPMzEwMTIyMzkzNTAwMDAzAxQyMDI2LTEwLTEyVDE0OjI1OjA5WgQHMTE1MC4wMAUGMTUwLjAw”
“ARRBbCBOb29yIFRyYWRpbmcgRXN0LgIPMzEwMTIyMzkzNTAwMDAzAxQyMDI2LTEwLTEyVDE0OjI1OjA5WgQGMjMwLjAwBQUzMC4wMAZYTldabFkyVmlOalptWm1NNE5tWXpPR1E1TlRJM09EWmpObVEyT1Raak56bGpNbVJpWXpJek9XUmtOR1U1TVdJME5qY3lPV1EzTTJFeU4yWmlOVGRsT1E9PQdHAyhNcpe84QYrUHWav+QJLlN4ncLnDDFWe6DF6g80WX6jyO0SN1yBpsvwFTpfhKnO8xg9Yoes0fYbQGWKr9T5HkNojbLX/CEIWAswVXqfxOkOM1h9osfsETZbgKXK7xQ5XoOozfIXPGGGq9D1Gj9kia7T+B1CZ4yx1vsgRWqPtNn+I0htkrfcASZLcJW63wQpTnOYveIHLFF2m8DlCi9UeZ4=”
“A:123456789*B:999999990*C:PT*D:FS*E:N*F:20261012*G:FS 2026A/154*H:JJ37MMMM-154*I1:PT*I7:10.00*I8:2.30*N:2.30*O:12.30*Q:9OIr*R:9999”
“A:123456789*B:999999990*C:PT*D:FS*E:N*F:20261012*G:FS 2026A/154*H:JJ37MMMM-154*I1:PT*I7:10.00*I8:2.30*N:2.30*O:12.30*Q:9OIr*R:9999”
“A:123456789*B:999999990*C:PT*D:FS*E:N*F:20261012*G:FS 2026A/154*H:JJ37MMMM-154*I1:PT*I7:10.00*I8:2.30*N:2.30*O:12.40*Q:9OIr*R:9999”
“A:123456780*B:999999990*C:PT*D:FS*E:N*F:20261012*G:FS 2026A/154*H:JJ37MMMM-154*I1:PT*I7:10.00*I8:1.30*N:1.30*O:11.30*Q:9OIr*R:9999”
“eyJhbGciOiJSUzI1NiIsImtpZCI6IkVEQzU3REUxMzU4QjMwMEJBOUYxNzlGQjNBQzhGRERCNUQ3RDJFMkEiLCJ0eXAiOiJKV1QiLCJ4NXQiOiI3VmQ5NFRXTE1BdXA4WG43T3NqekE0MXN2Q28ifQ.eyJkYXRhIjoie1wiU2VsbGVyR3N0aW5cIjpcIjI5QUFCQ1QxMzMyTDFaQVwiLFwiQnV5ZXJHc3RpblwiOlwiMjdBQVBGVTA5MzlGMVpWXCIsXCJEb2NOb1wiOlwiSU5WLzIwMjYvMDQxMlwiLFwiRG9jVHlwXCI6XCJJTlZcIixcIkRvY0R0XCI6XCIxMi8xMC8yMDI2XCIsXCJUb3RJbnZWYWxcIjo1OTAwMCxcIkl0ZW1DbnRcIjozLFwiTWFpbkhzbkNvZGVcIjpcIjg0NzEzMFwiLFwiSXJuXCI6XCJhNWMxMmRjYTgwZTc0MzMyMTc0MGIwMDFmZDcwOTUzZTg3MzhkMTA5ODY1ZDI4YmE0MDEzNzUwZjIwNDZmMjI5XCIsXCJJcm5EdFwiOlwiMjAyNi0xMC0xMiAxMTowNTowMFwifSIsImlzcyI6Ik5JQyJ9.cGxhY2Vob2xkZXItc2lnbmF0dXJlLW5vdC1yZWFs”
“eyJhbGciOiJSUzI1NiIsImtpZCI6IkVEQzU3REUxMzU4QjMwMEJBOUYxNzlGQjNBQzhGRERCNUQ3RDJFMkEiLCJ0eXAiOiJKV1QiLCJ4NXQiOiI3VmQ5NFRXTE1BdXA4WG43T3NqekE0MXN2Q28ifQ.eyJkYXRhIjoie1wiU2VsbGVyR3N0aW5cIjpcIjI5QUFCQ1QxMzMyTDFaQVwiLFwiQnV5ZXJHc3RpblwiOlwiMjdBQVBGVTA5MzlGMVpWXCIsXCJEb2NOb1wiOlwiSU5WLzIwMjYvMDQxMlwiLFwiRG9jVHlwXCI6XCJJTlZcIixcIkRvY0R0XCI6XCIxMi8xMC8yMDI2XCIsXCJUb3RJbnZWYWxcIjo1OTAwMCxcIkl0ZW1DbnRcIjozLFwiTWFpbkhzbkNvZGVcIjpcIjg0NzEzMFwiLFwiSXJuXCI6XCJhNWMxMmRjYTgwZTc0MzMyMTc0MGIwMDFmZDcwOTUzZTg3MzhkMTA5ODY1ZDI4YmE0MDEzNzUwZjIwNDZmMjI5XCIsXCJJcm5EdFwiOlwiMjAyNi0xMC0xMiAxMTowNTowMFwifSIsImlzcyI6Ik5JQyJ9.cGxhY2Vob2xkZXItc2lnbmF0dXJlLW5vdC1yZWFs”
“INV-2026-0412 total 1,180.00”
Invoice QR Codes by Country
Several tax authorities require a QR code on every invoice so that buyers and inspectors can read its key facts quickly. Each country defines its own content and encoding, and these are the three this reader decodes.
Saudi Arabia, phase 1
Five fields in Base64 TLV: seller, VAT number, time, total and VAT.
“What is the Saudi VAT rate?”
Saudi Arabia, phase 2
Adds the invoice hash, ECDSA signature and public key.
“What does phase 2 add?”
Portugal
Letter-coded fields joined by asterisks, including the ATCUD code.
“What does B:999999990 mean?”
Portugal VAT breakdown
Bases and VAT for the reduced, intermediate and normal rates.
“What is the mainland normal rate?”
India
A JSON Web Token signed by the invoice registration portal.
“What identifies an e-invoice?”
Inside a ZATCA QR Code
A ZATCA code is a short run of numbered fields, each a tag byte, a length byte and the value, encoded in Base64 so that it fits a QR code. Knowing the tags helps when a code won’t scan or a value looks wrong on the receipt.
Tags 1 and 2
The seller’s name as registered, and its 15-digit VAT registration number.
Tag 3
The date and time the invoice was issued, in ISO 8601 format.
Tags 4 and 5
The invoice total including VAT, then the VAT amount on its own.
Tags 6 to 8
In phase 2, the invoice’s hash, its digital signature and the signing public key.
Tag 9
For simplified invoices in phase 2, the tax authority’s stamp signature.
What the ATCUD Is
Portuguese invoices carry an ATCUD, a unique document code that ties each invoice to a series registered with the tax authority. It appears in the QR code’s H field and printed on the invoice above the code.
Validation Code
The part before the hyphen identifies the invoice series registered with the tax authority.
Sequence Number
The part after the hyphen is the invoice’s number within that series.
Hash Characters
Field Q holds four characters of the invoice’s signature hash, proving it came from certified software.
Working With Invoice Codes
Habits that make invoice QR codes useful in bookkeeping and audits rather than decoration on a receipt. They take seconds per invoice and save much longer queries later.
Match Code and Paper
The code’s totals should equal the printed totals.
Keep the Original
A photo of the receipt is evidence; the decoded text alone isn’t.
Check Before Claiming
Confirm VAT numbers before reclaiming VAT.
Mind Rounding
Totals within a cent are rounding; more is an error.
Signatures Need Keys
Verifying signatures needs the authority’s certificate.
How Tax Numbers Are Checked
A mistyped tax number can make an invoice useless for reclaiming VAT. These are the checks the reader runs, none of which needs to contact a tax authority.
Portuguese NIF
Nine digits; the last is a mod-11 check digit over weights 9 down to 2.
Indian GSTIN
Fifteen characters: state code, PAN, entity number, Z and a mod-36 check character.
Saudi VAT Number
Fifteen digits that begin and end with 3; there’s no public check digit.
Who Reads Invoice Codes
Anyone who handles invoices from these countries and wants to read or check them quickly, without logging in to a tax portal or retyping figures from a crumpled receipt.
Accountants
Capture invoice details without retyping.
Auditors
Spot invoices whose code doesn’t match the paper.
Travellers
Read receipts kept for VAT refunds.
Suppliers
Check the codes your invoicing software prints.
Developers
Debug e-invoicing integrations.
Invoice Code Pitfalls
The faults that turn up in invoice codes, often from billing software that was set up in a hurry or never updated when the rules changed. Each one below shows up in the check.
Wrong VAT Rate
A product taxed at the wrong rate shows up in the rate check.
Totals That Don’t Add Up
Rounding each line differently from the total.
Placeholder Tax Numbers
Test numbers left in production invoices.
Cut-Off Codes
A code printed too small or cropped can’t be read in full.
Missing Fields
Older software that omits newly required fields.