In this case the contract is that 1) you tell them you're doing this and 2) that it is capped to a certain amount and 3) you are visibly doing it and the customer is properly informed.
These are all pretty reasonable contractual terms, IMHO.
No, I can't.
If you have me sign a contract that says "refurb agrees to no longer walk in exchange for $50,000", that will not be enforceable in court.
https://blog.ipleaders.in/unenforceable-contracts-what-you-n...
You said "If you want to have fun, you can report them to Visa/MC and watch that go away within a few days.", so no, if they are following the contract terms, it won't go away.
And Visa isn't able to include a blanket ban on surcharges due to changes in the law that would make such a contract illegal and unenforceable.