---
title: "Surcharging"
description: "Add a credit card surcharge within the card network rules, on any gateway."
image: "https://docs.ordercard.io/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.ordercard.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Surcharging

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:

```bash
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](/hosted-fields/events) 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.

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

Source: https://docs.ordercard.io/payments/surcharging/index.mdx
