Skip to navigation

Surcharging on Device

Apply the Merchant Surcharge Program to card-present credit transactions.

Surcharging is supported through the Merchant Surcharge Program, which lets eligible merchants add a percentage-based checkout fee to qualified credit card transactions to help offset their card processing costs. This page covers what integrators need to know to surcharge card-present credit transactions with the Terminal API.

Enrollment required

Merchants must be enrolled in the Surcharge Pricing structure to use these features.

How it works

For enrolled merchants, the gateway automatically determines whether the card presented is eligible for a surcharge, based on:

  • Card type — if the card is not a credit card, the surcharge is waived.
  • Surcharge rate — the credit card surcharge rate configured on the merchant account.

No additional request fields are needed on read-card or charge-card; eligibility and the surcharge amount are determined by the gateway.

Surcharging applies at the merchant ID level

When a MID is enrolled in the Merchant Surcharge Program, all terminals and transactions under that MID are subject to credit card surcharging.

Receipts

On Clover Flex and Clover Mini, receipts printed by the terminal include surcharge line items showing the subtotal, surcharge, and total amounts.

Refunds

To make sure the correct amount is returned to the cardholder, always pass the trans_id from the original transaction to the void or refund endpoint.

Surcharge response fields

The following fields are returned in result when polling charge-card interactions.

FieldMax lengthTypeDescription
fee_format7ANThe surcharge format configured for the merchant account. Always "percent" when a surcharge is applied. Empty ("") if the surcharge was waived or bypassed.
fee_value3NThe surcharge rate applied, in basis points — for example, "300" for a 3.0% surcharge. "0" if the surcharge was waived or bypassed.
fee_type13ANThe type of fee applied. Always "SURCHRG" when a surcharge is applied; "SURCHRG_WAIVED" if it was waived or bypassed.
fee_amount14NThe surcharge amount applied, in dollars and cents. "0.00" if the surcharge was waived or bypassed.
fee_authcode6ANDuplicate of the authcode field.
fee_mid16—Not applicable for surcharge transactions; returns an empty value ("").
fee_txn14—Not applicable for surcharge transactions; returns an empty value ("").

To detect a waived surcharge, check fee_type for "SURCHRG_WAIVED" (or fee_amount of "0.00") rather than relying on a missing field — all fee fields are always returned.

Example: successful charge with surcharge

A $19.99 sale on a credit card with a 3.0% surcharge. fee_amount is "0.60" and amount is the total charged, including the surcharge ("20.59"). "result": "A" indicates the charge was approved.

{
"interaction_id": "3a325f66-a111-4437-b707-ba4af4f48f4f",
"status": "succeeded",
"result": {
"amount": "20.59",
"fee_value": "300",
"resp_text": "Approval",
"comm_card": "N",
"fee_type": "SURCHRG",
"resp_code": "000",
"avs_resp": "Y",
"mid": "800000001780",
"emv": "8A023030910A7344A67B24F6578F3030",
"resp_proc": "RPCT",
"bin_type": "",
"bin_info": {
"country": "USA",
"product": "M",
"bin": "222300",
"purchase": false,
"prepaid": false,
"issuer": "B 2 16Test Mastercard2",
"cardusestring": "True credit, No PIN/Signature capability",
"gsa": false,
"corporate": false,
"fsa": false,
"subtype": "",
"binlo": "222300",
"binhi": "222360"
},
"expiration": "0426",
"trans_id": "267622540813",
"result": "A",
"fee_mid": "",
"fee_authcode": "PPS184",
"cvv_resp": "P",
"batch_id": "919",
"pos_entry": "EMV Contact",
"account_token": "9224538728824137",
"authcode": "PPS184",
"emv_tag_data": "{\"TVR\":\"0440008000\",\"PIN\":\"None\",\"ARC\":\"00\",\"Signature\":\"false\",\"Mode\":\"Issuer\",\"Network Label\":\"MASTERCARD\",\"TSI\":\"E800\",\"AID\":\"A0000000041010\",\"IAD\":\"0014A00003220000000000000000000000FF\",\"Entry method\":\"Chip Read\",\"Application Label\":\"Mastercard\"}",
"fee_amount": "0.60",
"fee_format": "percent",
"fee_txn": "",
"card_number": "9224538728824137",
"order_id": "3976260924152012",
"card_brand": "mastercard",
"trans_date": "09/24/2026 15:20:13",
"trans_type": "Sale"
},
"updated_at": "2026-09-24T15:20:15+00:00"
}
Surcharge is applied at the charge stage

If you’re using the two-step path (read-card + the Payments API’s charge endpoint), the amount returned by read-card does not include the surcharge — pass it through to the Payments API’s charge call as-is, and the surcharge will be added there when the charge is processed.