A dual code authentication process combining a visible QR code with an invisible randomly generated code which can be alpha, numeric, symbol or image that can only be read with a reading device. A data generation engine is used to create the generated code which is assigned to the QR code and stored in a cloud based database. The QR code is decodable by a handheld reading device which communicates with the cloud based database releasing a copy of the generated code to the reading device. A reader is then used to decode the invisible printed code wherein the user can compare the printed code on the document and the code stored on the cloud based database to determine a match and authenticity.