Skip to content
N
NoPOS
Back to Blog
Best PracticesOctober 25, 20266 min read

Cash Discounting & Surcharging: Cover Card Fees Without Breaking the Rules

A practical guide to offsetting card processing fees on NoPOS: cash-discount vs surcharge vs dual pricing, receipt disclosure rules that keep you compliant, and how to configure each model per location.

N
NoPOS Team
Developer Relations

The NoPOS developer relations team writes practical guides for building on the NoPOS REST API — from first smoke test to production POS.

Card fees eat two to four percent of every card sale. Passing that cost through is legal in most places — but only when the program is labeled correctly, disclosed before the sale, and printed on the receipt exactly the way the card brands require. The difference between cash discounting and surcharging is not marketing; it is which price is the "regular" price, and getting it backwards is what triggers fines.

Pick the right model before you touch the terminal

  • Cash discounting posts one price and discounts it for cash — every guest sees the card price as the regular price, and cash payers get a break at checkout.
  • Surcharging posts the cash price and adds a fee for credit cards only — the surcharge cannot exceed your cost of acceptance, never applies to debit or prepaid cards, and is banned outright in a few states.
  • Dual pricing lists both prices side by side so the guest chooses before tendering — the clearest disclosure of the three, and the easiest to defend in a dispute.
  • Pick one model per location and keep it consistent across counter, kiosk, and online checkout so the receipt always matches the posted price.

Disclose the price before the guest pays

  • Post the program at the entrance and at the point of sale — a sign at the door plus a line on the menu or checkout screen covers both walk-in and regular guests.
  • Show the fee as its own line item before tender, not buried in the total — the guest must see the card total and agree to it before the payment runs.
  • Train staff to state the total out loud for phone and pay-at-table orders where signage cannot do the work.
  • Keep debit transactions fee-free everywhere: route debit to PIN or exempt it automatically so a regulated card never carries a surcharge.

Make the receipt prove compliance

  • Print the program name, the fee amount, and the card brand total as separate lines so any auditor or dispute reviewer sees the math without asking.
  • Store the fee separately from the sale in your reports so end-of-day reconciliation shows gross sales, fees collected, and net deposits distinctly.
  • Review fee totals weekly against processor statements — a drift between what the POS added and what the processor charged is the earliest sign of a misconfigured terminal.
  • Revisit the setup whenever state rules or card-brand caps change, and update signage the same day you update the terminal so the posted price never lags the charged price.

Use Swagger UI or OpenAPI for the current tender, fee-line, and receipt request shapes.

Build from the current contract

Open the gateway for OpenAPI, Swagger, AGENTS.md, llms.txt, and the first X-API-Key smoke test.

Developer Gateway