# Surcharges

Enable surcharging to recoup credit card processing costs from cardholders. [Contact Moov](https://portal.moov.io/forms/surcharge-intake-form) to enable surcharging for accounts.

Surcharging is optional, but if enabled, must follow card brand caps, as well as additional federal and state regulations. Any business that intends to add a surcharge fee to credit card transactions must notify the acquirer and card brands 30 days before implementing surcharges.

| Card brand | Surcharge cap                                     | 30 day notice |
|------------|---------------------------------------------------|---------------|
| Visa       | 3%, or the cost of acceptance, whichever is lower | Required      |
| Discover   | Not greater than the cost of acceptance           | Required      |
| MasterCard | 4%, or the cost of acceptance, whichever is lower | Not required  |

When Moov authorizes the funds, we will neither calculate nor approve, in real-time, the surcharge applied to the transaction. The merchant and partner are responsible for following and implementing card brand, federal, and state regulations. The merchant and partner are wholly responsible for fines associated with non-compliance. Local surcharge regulations can change frequently - check your local laws to remain in compliance with surcharge regulations.

Surcharge fees can only apply to credit card payments. Fees for other types of processing may be added through service or transaction fees, as long as the fee is fully disclosed to the customer via line items.

Moov must enable surcharging for accounts. If you'd like the ability to add surcharge fees to card transactions, fill out the intake form on our [support site](https://portal.moov.io/forms/surcharge-intake-form) and Moov will review your request and start and start the registration process. Incomplete forms will delay the process.

## [Disclosures](#disclosures)

Surcharge fees must be disclosed to customers before the credit card transaction processes. This ensures customers have the option to choose a different payment method if they'd like to avoid the surcharge fee. Customers must also have the option to cancel the transaction to avoid the surcharge fee.

The following disclosures are required by card brands:

- Store entrance: Customers must be notified of surcharge fees before they enter the establishment, for example, a sign at the door, or in a front window
- Point of sale: Customers must be notified of surcharge fees at the point of sale, for example. a sign at the register or on the checkout screen
- Online/e-commerce: Customer must be notified of surcharge fees at the first mention of card brand acceptance, as well as on the final checkout page

Any disclosure must provide exact information about surcharge fees, such as **A 4% surcharge applies to all credit card purchases.**

Local regulations may require specific disclosure methods, such as signs at the checkout counter. Check local regulations and apply them accordingly.

### [Receipt](#receipt)

When surcharging is enabled, a receipt is required to have a structured breakdown of charges. Receipt line items should be derived from `amountDetails` when present. Any remaining amount not attributed to an item in `amountDetails` should be displayed within **Subtotal**.

- Subtotal: $20.00
- Sales tax: $2.00
- Surcharge: $2.50
- Tip: $2.50
- Total: $27.00

Local regulations may require additional disclosures on receipts. Check local regulations and apply them to receipts accordingly.

## [Create a transfer with surcharge](#create-a-transfer-with-surcharge)

You can pass in a `surcharge` to the transfer request when the following conditions are met:

- Moov has enabled the merchant for surcharging
- Transfer type is `card-to-wallet`
- Card type is `credit`

```zsh
 1curl -X POST "https://api.moov.io/accounts/{accountID}/transfers" \
 2  -H "Authorization: Bearer {token}" \
 3  -H "X-Moov-Version: v2026.07.00" \
 4  -d '{
 5    "source": {
 6      "paymentMethodID": "9506dbf6-4208-44c3-ad8a-e4431660e1f2"
 7    },
 8    "destination": {
 9      "paymentMethodID": "3f9969cf-a1f3-4d83-8ddc-229a506651cf"
10    },
11    "amount": {
12      "currency": "USD",
13      "value": 10000
14    },
15    "amountDetails": {
16      "surcharge": {
17        "currency": "USD",
18        "valueDecimal": "2.50"
19      }
20    },
21    "description": "Transfer from card to wallet",
22    "metadata": {
23      "optional": "metadata"
24    }
25}'
```

## [Refunds](#refunds)

When a transaction with a surcharge is issued a full refunded, the surcharge amount is automatically refunded as well. Full refunds can be processed with the `POST` reversals [endpoint](/api/money-movement/refunds/cancel/). Based on settlement status, the reversals endpoint either cancels the transfer if the transaction hasn't settled, or issues a refund if settlement is in progress or has completed. See our [reversals](/guides/money-movement/accept-payments/card-acceptance/reversals/) guide for more information.

If a partial refund is needed, the surcharge amount will need to be specified. Partial refunds need to be processed with the `POST` refunds [endpoint](/api/money-movement/refunds/create/).

On a refund with a surcharge fee, the refunded surcharge should be proportionate to the surcharge on the original transfer. In the full and partial examples below, the original cost is $100.00 with a $3.00 surcharge.

[Full refund](#tab-732964518-2-0) [Partial refund](#tab-732964518-2-1)

Full refunds can be processed through the reversals [endpoint](/api/money-movement/refunds/cancel/). The `amount` must include the refunded surcharge fee, which is specified in `amountDetails`. If a partial amount entered on the reversals endpoint, the refund endpoint will be triggered instead (see partial refund tab).

```zsh
curl -X POST "/accounts/{accountID}/transfers/{transferID}/reversals" \
  -H "Authorization: Bearer {token}" \
  -H "X-Idempotency-Key: UUID" \
  -H "X-Wait-For: rail-response" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "amount": 10300,
    "amountDetails": {
      "surcharge": {
        "currency": "USD",
        "valueDecimal": "3.00"
      }
    }
  }'
```

Partial refunds need to be processed through the refunds [endpoint](/api/money-movement/refunds/create/). In this scenario, both the original amount and surcharge are half refunded.

```zsh
curl -X POST "https://api.moov.io/accounts/{accountID}/transfers/{transferID}/refunds" \
  -H "Authorization: Bearer {token}" \
  -H "X-Idempotency-Key: UUID" \
  -H "X-Wait-For: rail-response" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "amount": 5150,
    "amountDetails": {
      "surcharge": {
        "currency": "USD",
        "valueDecimal": "1.50"
      }
    }
  }'
```
