> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.runpayments.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.runpayments.io/_mcp/server.

# Surcharging on Device

Surcharging is supported through the [Merchant Surcharge Program](/docs/guides/payments/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.

| Field          | Max length | Type | Description                                                                                                                                                     |
| -------------- | ---------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fee_format`   | 7          | AN   | The surcharge format configured for the merchant account. Always `"percent"` when a surcharge is applied. Empty (`""`) if the surcharge was waived or bypassed. |
| `fee_value`    | 3          | N    | The surcharge rate applied, in basis points — for example, `"300"` for a 3.0% surcharge. `"0"` if the surcharge was waived or bypassed.                         |
| `fee_type`     | 13         | AN   | The type of fee applied. Always `"SURCHRG"` when a surcharge is applied; `"SURCHRG_WAIVED"` if it was waived or bypassed.                                       |
| `fee_amount`   | 14         | N    | The surcharge amount applied, in dollars and cents. `"0.00"` if the surcharge was waived or bypassed.                                                           |
| `fee_authcode` | 6          | AN   | Duplicate of the `authcode` field.                                                                                                                              |
| `fee_mid`      | 16         | —    | Not applicable for surcharge transactions; returns an empty value (`""`).                                                                                       |
| `fee_txn`      | 14         | —    | Not applicable for surcharge transactions; returns an empty value (`""`).                                                                                       |

> **Tip**
>
> 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.

```json
{
  "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.