Vaccination QR certificate

COVID-19 vaccination scanner in the app.

We have released a new android Bookla business app version containing a COVID-19 vaccination certificate scanner. Now you can easily verify the EU digital vaccination certificate the same way as you verify the QR code of the reservation. 

How to use it:

  1. Download the latest version of the android app (v. 1.19+)
  2. Open the Alerts section
  3. Tap on the QR code scanner button
  4. Select a use case for the scanner. Selection is required only once.
  5. Scan COVID-19 certificate’s QR code
  6. If the certificate can be scanned, you will see some data about the certificate:
    1. First name and last name of the owner of the certificate
    2. Green checkmark if the certificate is valid
    3. Red cross if the certificate is not valid

A short story of the implementation for nerds 🤓  

In the beginning, we thought that it would be an easy journey, as there are plenty of open-source projects that have already implemented such a feature. But we were wrong. Unfortunately, all out-of-the-box solutions were created with one specific country in mind. That made it almost impossible to reuse any of them entirely. However, we could use some OS libraries for some parts of our solution. The most notable example would be the HCERT-Kotlin library that we are using to check the integrity of the scanned certificate.

Checking rules differ country by country.

On a high level, extensively EU Digital Green Certificates are documented, and most of the specifications can be found at It gets slightly more complicated regarding the implementation level because most EU countries have implemented their specification version. Digital certificates have a strictly defined structure, and it seems that all countries have more or less similar rules. In short – each country can define a set of conditions that the certificate must fulfill for each use case, e.g., the “green mode”.

Unfortunately, there is no specification on defining and storing said rules, and therefore every country does it slightly differently. That was one of the primary reasons we created our solution tailored to Latvian national rules.

What was the most challenging part of implementation?

The most time we spent on reviewing the available documentation to understand how EU DGC should work and then matching it with existing solutions and specifics of Latvian national rule set data. Once it all came together, the rest of the implementation was relatively straightforward.

Future plans of development.

We plan to add support for the national rules for different countries and create a generic framework that could work in any number of countries. Also, there was always an idea that this feature could be eventually open-sourced.