The payment guard checked the wrong thing. Orders that came through "Confirm Service" had their status set to sold immediately — before payment. So when the customer clicked "Pay Now," the guard saw status === 'sold' and blocked the payment, thinking it was a duplicate. The order was sold but not paid. The guard couldn't tell the difference.
The fix: check the paid amount instead of the status. (float) ($order->paid ?? 0) > 0 means "has actual money been collected," not "has the order advanced to a certain stage." Status is about workflow. Payment is about money. They move at different speeds.
The "Pay Per-App (no discount)" button got removed from the post-acceptance section — a simplification. "Pay Annually" became "Pre-Pay for the Year" across the quote components, because "annually" is accounting language and "for the year" is human language.