Brink Development has confirmed that the registers are working the way the software was designed. The way the software works currently, all items need to be rang up first before any discounts are applied. This feature was specifically written into the code to help prevent fraud.
This functionality is by design. Punchh discount amounts depend on order content and value. If these change then the Punchh discounts must be re-applied.
Order large pizza for $20 and a drink for $5, apply Punchh "Free pizza discount". $20 discount applies.
Replace large pizza with small pizza for $15 dollars. Now we don't want $20 discount to be applied, so it is removed.
Order small pizza for $15 and a drink for $5, apply Punchh "Free most expensive pizza". $15 discount applies.
Add large pizza for $20 dollars. Now we want $20 discount to be applied instead of $15, so it is removed.
Each time menu items are added, deleted or replaced any previously applied Punchh discounts will be removed. Cashier can re-apply them later by having the guest generate a new QR/redemption code.