To be fair, that "internet goes down" aspect can be mitigated in software by pushing IDs of the packages that were ordered for your account to the machine as soon as they are known.
Why not simply encode the expiry date itself into the qr codes, then just decode that using software on the device. Even better, stamp a human readable date on the package like every other grocery product. Oh but then they couldn't track your usage and juicing habits! And you'd have to be able to read or something.