Most QR codes use the lowest level of error correction but if you turn it up to the highest level, it can cope with 30% of it being covered / cropped away. Can also get away with sticking fake data around the edges, especially if you don't do all of them. Can happily use circles.