How does ZKP keep payment data seperate from the account. You can add a payment reference to your payment in some kind of cryptographic protocol, but if it's not in their database you can't login and if it is you can. So completely identifiable?
Some combination with TEE to act as a mixer with a time limited internal secret in the TEE sandbox for verification before converting it to a "paid" flag?