Surcharges
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.
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 and Moov will review your request and start and start the registration process. Incomplete forms will delay the process.
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
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
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
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
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. 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 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.
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 refunds can be processed through the reversals endpoint. 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).
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. In this scenario, both the original amount and surcharge are half refunded.
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"
}
}
}'