We are working on an alphabet of 59 possible values per char, for 4 chars is equivalent to 59^4 possible combinations.
Also, we ensure during the code generation that each redeem code is unique

. We can easily increase the number of chars if we see that the time to find an unique code arrives to certain amount.
And yes, I drop the "i", "1" and "0" to avoid mistakes

Thanks for your interest!
You could use only upper case letters (A-Z), numbers 0-9 and 6 chars. That would be already about ~1.838.265.625 codes what should be enough