Don't build a billing system. Or at least not a precise one.
Have a price list as normal, but just guestimate the user's bills based on any easily accessible information.
Eg. For a hosting company I might just count how many VM's they have active when the billing script runs . If the user isn't happy with the total, give them a button to correct the total and pay that.
Spot check what the user's pay, and warn then ban any users which are clearly deliberately paying substantially less than list price for your services.
Someone's going to reverse engineer your heuristic and min-max it. At that point, you'll need to defend your heuristic against edge cases. And then you may as well just make it official.
Also, B2B customers are allergic to "pay what you feel"-type schemes.
You’d still have to apply the right tax rate for every line item. If you allow the user to edit the total, then which of the tax amounts are you going to recalculate?
Don't build a billing system. Or at least not a precise one.
Have a price list as normal, but just guestimate the user's bills based on any easily accessible information. Eg. For a hosting company I might just count how many VM's they have active when the billing script runs . If the user isn't happy with the total, give them a button to correct the total and pay that.
Spot check what the user's pay, and warn then ban any users which are clearly deliberately paying substantially less than list price for your services.