Surcharging
Apply an additional fee to eligible card transactions to offset card processing costs.
A surcharge is an additional fee added to certain card payments to partially or fully offset the costs of card processing (interchange, scheme fees, acquiring costs). Instead of embedding all card costs into product prices, some merchants choose to apply surcharges to cards that incur higher costs (e.g. credit cards).
Key points:
- The ability to surcharge only applies to credit card purchases and only under certain conditions. United States merchants cannot surcharge debit card or prepaid card purchases.
- Local, regional, and card-scheme rules govern where surcharging is allowed, how much can be charged, and how it must be disclosed.
- Merchants must comply with applicable state or federal laws which may prohibit or restrict surcharging of credit transactions.
- Surcharge is added to the original transaction amount; any captures, refunds, or adjustments also must consider the surcharge.
- Surcharging is allowed for all merchant category codes (MCCs) but is currently prohibited in Connecticut, Colorado, Kansas, and Massachusetts.
- Merchants must also comply with federal laws regarding deceptive or misleading disclosures.
For current rules and regulations regarding Surcharging visit:https://usa.visa.com/support/consumer/visa-rules.html
Merchants must comply with all state and federal laws, as well as Card Brand rules regarding surcharging and disclosures.
Configure Surcharge for a Merchant
Before applying surcharges, ensure that the MX™ Advantage Surcharge feature is enabled for the merchant.
Check Surcharge Enablement
Use the GET /checkout/v3/appStore?merchantId={merchantID} API endpoint to check for Surcharge enablement and rate configuration related details.
| Node | Description | Example Value |
|---|---|---|
payment.mxAdvantageEnabled | Indicates whether MX™ Advantage Surcharge is enabled for the merchant. | false |
payment.mxAdvantageFeeLabel | Label used for the surcharge fee in transaction details. | "surcharge" |
payment.mxAdvantageFees | Defines surcharge configurations applicable for the merchant. | Array of objects (see details below) |
payment.mxAdvantageFees.LabelMemberName | Field name for the surcharge label. | "SurchargeLabel" |
payment.mxAdvantageFees.AmountMemberName | Field name representing the surcharge amount. | "SurchargeAmount" |
payment.mxAdvantageFees.RateMemberName | Field name representing the surcharge rate. | "SurchargeRate" |
payment.mxAdvantageFees.Label | Display label for the surcharge. | "surcharge" |
payment.mxAdvantageFees.Rate | Surcharge rate applied to eligible transactions. | "0.0225" |
Update Surcharge Configurations for a Merchant
The above settings can be updated via the PUT /checkout/v3/merchantsetting/{merchantId} endpoint.
For more information, kindly refer to the Merchant Configuration and Payment Controls.
Contact your Account Representative or Support Team if you need assistance enabling this feature.
How it works
Follow these steps to create a payment with surcharge amount:
- Verify Merchant Eligibility: Confirm that MX™ Advantage is enabled for the merchant.
- Determine Applicable Surcharge: Identify the surcharge percentage or flat fee to be applied. Ensure that it complies with Card Brand rules and local/state laws.
- Create a Payment with Surcharge: Include the surcharge amount as part of the payment creation request. Submit the payment request and confirm the response includes both the transaction amount and the surcharge.
Determine applicable Surcharge
Once the merchant is enabled for MX™ Advantage Surcharge, you can fetch the applicable surcharge amount or percentage using the POST checkout/v3/payment/enrich/mxadvantage API endpoint, with following details:
Parameter | Required | Description |
|---|---|---|
| ✅ | Amount to charge (in USD currency) |
| ✅ | Valid Payment details eg. Card or secure Token. Refer to Card Tokenization for steps to generate a token for future use. Note: CVV, avsZip, and avsStreet may only be required based on your Loss Prevention settings. |
| ✅ | The Merchant's unique identifier that is used to process the payment. |
| ✅ | Set to |
| Type of transaction. It is defaulted to | |
| Confirmation if the MX Advantage feature is enabled. Should be passed as | |
| Surcharge fee type, should be passed as | |
| Surcharge fee value. |
The surcharge may vary by card brand, transaction type, and region.
In the response, note the following:
surchargeRate: The surcharge rate (in percentage) applicable to the merchant.surchargeAmount: The surcharge amount applicable on the payment on the paymentamountprovided in the request.
Create Payment with Surcharge
To create a surcharge payment:
-
Customer provides payment info (e.g., swipes or enters card details).
-
Make a POST
/checkout/v3/paymentpayment request with:Parameter
Required
Description
amount✅
Amount to charge (in USD currency), inclusive of surcharge amount.
cardAccount✅
Valid Payment details eg. Card or secure Token. Refer to Card Tokenization for steps to generate a token for future use. Note: CVV, avsZip, and avsStreet may only be required based on your Loss Prevention settings.
merchantId✅
The Merchant's unique identifier that is used to process the payment.
tenderType✅
Set to
CARDfor card transactions.paymentTypeType of transaction. It is defaulted to
SALEsurchargeAmountSurcharge amount fetched through POST
checkout/v3/payment/enrich/mxadvantageAPI endpointsurchargeRateSurcharge rate (in percentage) applicable to the merchant.
-
Our system will processes the payment and returns a response indicating the outcome. You can learn the outcome of the request via
GET/checkout/v3/payment/{id}or wait for the Payment webhook You can determine the result by checking thestatusandresponseCodefields in the response.status: The primary outcome of the transaction, either Approved or Declined.responseCode: A detailed code explaining the reason for the status. See our comprehensive Response code guide guide for full list.
-
For every approved payment, it is critical to store two identifiers
id: The unique Payment ID. Use this for retrieving or voiding the transaction before it settles.paymentToken: The secure Transaction Token. Use this for follow-up actions like refunds or adjustments after the transaction has settled.
See Also
Open / Pending items to be discussed
- Links of API Tryouts pages are pending
Updated 18 days ago