There is no single size that works for every QR code. The encoded data, print quality, contrast, and distance to the viewer all matter. Keep a clear quiet margin, avoid tiny modules, and print a test at the final physical size.
Try the printed code from where people will actually stand, using more than one phone and ordinary lighting. Confirm the decoded destination, not only that a camera recognized a square. If scanning is unreliable, enlarge the code or shorten the encoded URL rather than squeezing it into a fixed space.
Decorative overlays should come after this test.