From the U.S. Treasury Department’s legal tender FAQ (emphasis mine):
“I thought that United States currency was legal tender for all debts. Some businesses or governmental agencies say that they will only accept checks, money orders or credit cards as payment, and others will only accept currency notes in denominations of $20 or smaller. Isn’t this illegal?
The pertinent portion of law that applies to your question is the Coinage Act of 1965, specifically Section 31 U.S.C. 5103, entitled “Legal tender,” which states: “United States coins and currency (including Federal reserve notes and circulating notes of Federal reserve banks and national banks) are legal tender for all debts, public charges, taxes, and dues.”
This statute means that all United States money as identified above are a valid and legal offer of payment for debts when tendered to a creditor. There is, however, no Federal statute mandating that a private business, a person or an organization must accept currency or coins as for payment for goods and/or services. Private businesses are free to develop their own policies on whether or not to accept cash unless there is a State law which says otherwise.“
One consequence of this distinction is that the U.S. Constitution’s clause stating that no State shall “make any Thing but gold and silver Coin a Tender in Payment of Debts” shows that it is only referring to the constitutional authority of the States to make gold and silver coins legal tender for payment of public and private debts, and doesn’t force private businesses and individuals to accept them as payment for goods and services.
I demonstrated earlier how that clause doesn’t require the States to implement legal tender laws, but if they do, then they are mandated under the Constitution to make only gold and silver coins legal tender in payment of public and private debts, but not for payment of goods and services.