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.

NodeDescriptionExample Value
payment.mxAdvantageEnabledIndicates whether MX™ Advantage Surcharge is enabled for the merchant.false
payment.mxAdvantageFeeLabelLabel used for the surcharge fee in transaction details."surcharge"
payment.mxAdvantageFeesDefines surcharge configurations applicable for the merchant.Array of objects (see details below)
payment.mxAdvantageFees.LabelMemberNameField name for the surcharge label."SurchargeLabel"
payment.mxAdvantageFees.AmountMemberNameField name representing the surcharge amount."SurchargeAmount"
payment.mxAdvantageFees.RateMemberNameField name representing the surcharge rate."SurchargeRate"
payment.mxAdvantageFees.LabelDisplay label for the surcharge."surcharge"
payment.mxAdvantageFees.RateSurcharge 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:

  1. Verify Merchant Eligibility: Confirm that MX™ Advantage is enabled for the merchant.
  2. 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.
  3. 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

Amount to charge (in USD currency)

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 CARD for card transactions.

paymentType

Type of transaction. It is defaulted to SALE

mxAdvantageEnabled

Confirmation if the MX Advantage feature is enabled. Should be passed as TRUE.

mxAdvantageFeeType

Surcharge fee type, should be passed as PERCENTAGE.

mxAdvantageFeeAmount

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 payment amount provided in the request.

Create Payment with Surcharge

To create a surcharge payment:

  1. Customer provides payment info (e.g., swipes or enters card details).

  2. Make a POST /checkout/v3/payment payment 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 CARD for card transactions.

    paymentType

    Type of transaction. It is defaulted to SALE

    surchargeAmount

    Surcharge amount fetched through POST checkout/v3/payment/enrich/mxadvantage API endpoint

    surchargeRate

    Surcharge rate (in percentage) applicable to the merchant.

  3. 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 the status and responseCode fields in the response.

    1. status: The primary outcome of the transaction, either Approved or Declined.
    2. responseCode: A detailed code explaining the reason for the status. See our comprehensive Response code guide guide for full list.
  4. For every approved payment, it is critical to store two identifiers

    1. id : The unique Payment ID. Use this for retrieving or voiding the transaction before it settles.
    2. 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


© 2025 Priority Technology Holdings LLC. All rights reserved.