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.

ℹ️

This feature requires prior enablement and configuration. Please contact the Account Management team to get started.


How it works

Follow these steps to create a payment with surcharge amount:

Step 1: Verify Merchant Eligibility:

Confirm that MX™ Advantage is enabled for the merchant. Please reach out to the Account Management team for confirmation.

Step 2: 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 Vaulting for steps to generate a token for future use. Note: CVV, avsZip, and avsStreet may only be required based on your Loss Prevention settings ; reach to the Account Management team for confirmation.

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

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. 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 Vaulting for steps to generate a token for future use. Note: CVV, avsZip, and avsStreet may only be required based on your Loss Prevention settings ; reach to the Account Management team for confirmation.

    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. Once the payment request is submitted, our system performs a series of system-level validations before sending the transaction to the card network. These validations check for:

    1. Missing or invalid required fields
    2. Incorrect parameter formats or values
    3. Merchant configuration or permission issues.

    If any validation fails, the request is rejected immediately, and an error response is returned. You must correct the issue and resubmit the request. For a complete list of validation errors and how to resolve them, refer to the System Error Codes guide.

  4. If all system-level validations pass, 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.
  5. 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