Skip to content

Surcharging

Add a credit card surcharge within the card network rules, on any gateway.

Updated View as Markdown

A surcharge passes the cost of accepting a credit card on to the cardholder. Card networks allow it within strict rules, and OrderCard applies them on every charge.

The rules OrderCard enforces

  • Credit and charge cards only. Debit, prepaid and unidentified cards are never surcharged. The card type comes from the card’s BIN, its first 6 to 11 digits.
  • At most 3% of the amount.
  • Never in states that ban surcharges: Connecticut, Massachusetts, Maine and Puerto Rico, by the billing address.
  • Never on recurring charges unless you turn that on for the gateway.
  • Refunds return the surcharge in proportion: refunding half the payment refunds half the surcharge, and the last refund takes whatever surcharge is left.
  • The surcharge is not taxed. It is a percentage of amount, which already includes any tax.

You must also tell customers about the surcharge before they pay. The gateway’s surcharge.disclosure has suitable wording, and your card brand agreements may require registering with the networks first.

Who decides the amount

Gateway How it works
Fortis Fortis decides, from the surcharge settings of your Fortis location. Sync the gateway to read them; OrderCard then asks Fortis’s surcharge calculator on every charge. The state rule above still applies, and so does the card type: a card OrderCard knows to be debit or prepaid is not surcharged, whatever the calculator would say.
Converge Your Converge terminal adds the surcharge itself. Tell OrderCard its rate so quotes match; OrderCard checks Converge’s own card lookup before charging and records the surcharge Converge reports.
NMI, Authorize.net, Deluxe, Test OrderCard adds it, from the rate on the gateway (Gateways → Edit → Surcharging, or settings.surcharge in the API).

Showing the surcharge at checkout

Quote it before you charge, so the customer sees the total:

curl -X POST https://api.ordercard.io/v1/gateways/gw_…/surcharge \
  -H "Authorization: Bearer $ORDERCARD_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "card_type": "credit", "amount": 10000, "billing": { "state": "GA", "country": "US" } }'

Before the card is tokenized, send the type from the hosted fields cardMeta event as card_type. It is pending until the customer has typed enough digits; quote credit until then, the most a card can be surcharged. After tokenizing, send the payment_method_token instead. Pages without hosted fields can send the card’s first 6 to 8 digits as first6. The answer has surcharge_amount, total_amount, and waived_reason when there is none (disabled, recurring, state, debit, prepaid, unknown_card or gateway).

Never charging more than you showed

Send the total you displayed as max_total. If the final surcharge would make the total higher (for example Fortis’s calculator answers differently), nothing is charged and you get 409 surcharge_changed with the new figures to show the customer.

{ "payment_method_token": "tok_…", "amount": 10000, "max_total": 10300 }

Controlling it per charge

surcharge.mode Effect
auto (default) The gateway’s set-up decides, as above.
none No surcharge on this charge. On Fortis the required fields are sent with a zero surcharge; a Converge terminal may still add its own.
amount You send surcharge.amount, the figure you worked out. The rules above still apply, and it cannot exceed 3%. Not available on Fortis or Converge.

The transaction records subtotal_amount, surcharge_amount, and surcharge.rate, surcharge.source and surcharge.waived_reason.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close