To date it has been contractual. However, as a result of an antitrust lawsuit, Visa and Mastercard changed the provisions that ban merchants from charging a credit card surcharge. But states are now trying to bad adding those surcharges: http://www.cnbc.com/id/100485094.