Paying too much to process cards? Get a cheaper quote today.Schedule a call →

Surcharging

Surcharging is the practice of adding an extra fee to a payment when a customer chooses to pay with a credit card. This allows businesses to offset the processing costs associated with credit card payments.

Surcharging Regulations

Surcharging is subject to strict regulations from card networks, as well as federal and state laws. Merchants and software platforms must understand these requirements to maintain compliance and avoid penalties.

Merchant eligibility

Not all merchants are eligible for surcharging. The following conditions must be met:

  • Flat-rate pricing only: Only merchants on flat-rate pricing are eligible for surcharging. Merchants on interchange-plus (IC+) pricing models are not eligible.
  • State eligibility: The merchant’s doing-business-as (DBA) address must be in a U.S. state that permits surcharging. See State restrictions below.
  • Registration required: Merchants must be registered with applicable card networks before surcharging can begin. See Merchant registration below.

Eligible card types

Surcharges may only be applied to credit card transactions from eligible card brands. A payment method is eligible for surcharging when all of the following conditions are met:

  • The BIN (bank identification number) represents a United States bank.
  • The card funding type is credit (not debit or prepaid).
  • The card brand is Visa, Mastercard, or American Express.

The following card types are not eligible for surcharging:

  • Debit cards (including signature debit)
  • Prepaid cards
  • Cards issued by non-U.S. banks

When a card-not-present payment method is created, Paydude automatically performs a BIN lookup to determine whether the card is eligible for surcharging. This value is stored in payment_method.card.surchargeable. Surcharges are only applied when this value is true.

Surcharge caps

The surcharge amount is capped by both card network rules and state laws:

Card NetworkMaximum Surcharge
Visa3% of the transaction amount or the merchant’s cost of acceptance, whichever is lower
Mastercard4% of the transaction amount or the merchant’s cost of acceptance, whichever is lower
American ExpressMust not exceed the surcharge applied to other accepted card brands (level playing field rule)

Paydude enforces a maximum surcharge rate of 3% across all card brands (or the merchant’s discount rate, whichever is lower) to ensure compliance with the most restrictive card network rules.

Some states impose additional caps below the card network maximums. For example, Colorado caps surcharges at 2%. Paydude automatically ensures the surcharge rate does not exceed any applicable state cap.

Disclosure requirements

Card brands require that surcharges be clearly disclosed to the customer before and during the transaction. Merchants and software platforms are responsible for meeting these requirements:

  • Point of entry: Clear signage must be displayed at all store entrances (for card-present merchants) or prominently on the website/app (for card-not-present merchants) informing customers that a surcharge is applied to credit card transactions.
    • Example: “We impose a surcharge on credit cards that is not greater than our cost of acceptance.”
  • Point of sale: At the time of payment, the surcharge amount must be clearly disclosed before the customer confirms the transaction. The customer must have the opportunity to choose an alternative payment method to avoid the surcharge (e.g., debit card, cash, or bank transfer).
    • Example: “We impose a surcharge of ____% on the transaction amount on credit cards, which is not greater than our cost of acceptance. We do not surcharge debit cards.”
  • Receipts: The surcharge must appear as a separate line item on all receipts, clearly showing the dollar amount of the surcharge.

Merchant registration

Card brands require advance registration before a merchant can begin surcharging:

  • Visa: The merchant must notify their acquirer (processor) at least 30 days before starting to surcharge. The notification must include the merchant’s name, address, whether surcharging will be at the brand or product level, and the surcharge amount.
  • Mastercard: The merchant must register with Mastercard at least 30 days before starting to surcharge.

Paydude facilitates the registration process. When surcharging is enabled for a merchant, Paydude handles the Mastercard registration and coordinates with the processor for Visa notification. Merchants cannot begin surcharging until the 30-day registration period has elapsed.

Brand-level vs. product-level surcharging

Card brands allow merchants to apply surcharges at one of two levels (but not both):

  • Brand-level: A surcharge is applied to all credit card transactions from a given card brand (e.g., all Visa credit cards).
  • Product-level: A surcharge is applied only to specific credit card products within a brand (e.g., Visa Signature cards only).

Surcharges must be applied consistently across card brands. If a merchant surcharges one brand, they must surcharge all brands that permit it, at the same rate.

State restrictions

Surcharging laws vary by state. The following states and territories prohibit surcharging:

  • California
  • Connecticut
  • Maine
  • Massachusetts
  • Puerto Rico

The following states allow surcharging with additional restrictions (such as lower caps or specific disclosure requirements):

  • Colorado (surcharge capped at 2%)

Paydude maintains an up-to-date list of state surcharging regulations. When a merchant enables surcharging, Paydude verifies that their DBA address is in an eligible state. If the merchant is in a prohibited state, surcharging cannot be enabled.

ℹ️

Surcharging regulations are subject to change. Merchants should consult legal counsel to ensure ongoing compliance with applicable laws in their jurisdiction. Paydude updates its state eligibility rules as regulations change, but merchants are ultimately responsible for understanding and complying with the laws that apply to their business.

Compliance penalties

Non-compliance with surcharging regulations can result in significant penalties from card networks, including fines that can range from $25,000 to $150,000 or more. Card networks may also use secret shoppers to audit merchants for compliance. Paydude mitigates this risk by automating surcharge logic and eligibility checks, but merchants and software platforms are responsible for meeting disclosure and signage requirements.

Surcharging with Paydude

Paydude provides an automated surcharging solution that handles surcharge eligibility, calculation, and compliance checks. This eliminates the need for software platforms to build and maintain their own surcharge logic.

Surcharging is enabled at the merchant account level. Once enabled, merchants have a surcharging_settings object on their account with the following fields:

FieldDescription
surcharging_settings.enabledWhether surcharging is enabled for the account
surcharging_settings.surcharging_rateThe surcharge rate as a percentage (e.g., 3.0 for 3%). Maximum value is 3.0.

How surcharge eligibility is determined

When a payment is processed with apply_surcharge: true, Paydude automatically determines if the payment is eligible for surcharging by checking the following criteria:

  1. The merchant’s DBA address is in a state that allows surcharging.
  2. The BIN represents a United States bank.
  3. The card funding type is credit (not debit or prepaid).
  4. The card brand is Visa, Mastercard, or American Express.
  5. The payment uses automatic capture (not manual capture).

If all criteria are met, the surcharge is calculated and applied. If any criterion is not met, the payment cannot proceed with a surcharge.

How the surcharge amount is calculated

The surcharge amount is calculated as:

surcharge_amount = floor(amount × surcharging_rate / 100)

The result is rounded down to the nearest cent. For example, a $100.00 charge (amount: 10000) with a 2.5% surcharge rate would produce a surcharge of $2.50 (surcharge_amount: 250).

If the merchant is in a state with a surcharge cap (e.g., Colorado at 2%), the rate is automatically capped at the state maximum.

Compatible processors

Surcharging is supported on the following processors:

  • TSYS (card-not-present)
  • Valor (card-present, via TSYS)

Testing in sandbox

The standard test cards listed in the Testing guide are not guaranteed to be surcharge-eligible, because their BIN attributes are sourced from a third-party lookup service. Paydude provides a separate set of surcharging test cards whose BINs are fixed in sandbox so that each card deterministically produces a given eligibility outcome — useful for exercising both the eligible and ineligible branches of your integration.

One-Time Payments

To apply a surcharge to a one-time payment, set apply_surcharge: true when creating a Payment IntentAPI. The surcharge amount is calculated automatically based on the merchant’s configured surcharging_settings.surcharging_rate and added to the total charge.

Requirements:

  • The merchant account must have surcharging enabled.
  • The payment intent must use automatic capture (capture_method must be automatic, the default).
  • The payment method must be surchargeable (payment_method.card.surchargeable = true).
  • apply_surcharge cannot be combined with confirm in the same request. Create the payment intent first, then confirm it separately.

Step 1: Create a Payment Intent with surcharge

curl -L 'https://api.sandbox-paymentsonline.io/v1/payment-intents' \
    -H 'payments-account: {{MERCHANT_ACCOUNT_ID}}' \
    -H 'Content-Type: application/json' \
    -H 'payments-api-key: {{SECRET_KEY}}' \
    -d '{
      "amount": 10000,
      "currency": "usd",
      "payment_method_types": ["card"],
      "payment_method_id": "pm_xxxx",
      "apply_surcharge": true
    }'

The response will include a surcharge_amount field (in the smallest currency unit) indicating the surcharge that was calculated.

Step 2: Confirm the Payment Intent

curl -L -X POST 'https://api.sandbox-paymentsonline.io/v1/payment-intents/pi_xxxx/confirm' \
    -H 'payments-account: {{MERCHANT_ACCOUNT_ID}}' \
    -H 'payments-api-key: {{SECRET_KEY}}'

Refunds

When you refund a surcharged payment, enter the original amount or less. Do not include the surcharge. If you enter the full charge amount (original amount + surcharge), the refund will fail.

Paydude works out the surcharge to refund from the amount you enter:

  • Full refund: Enter the original charge amount. The full surcharge is refunded with it.
  • Full refund with prior partial refunds: Enter the remaining base amount. The remaining surcharge balance is refunded.
  • Partial refund: Enter any amount below the original charge amount. The surcharge is refunded in proportion to that amount.

The RefundAPI object includes a surcharge_amount field indicating the surcharge portion refunded.

Example: For a $100 charge with a 3% surcharge (total charged: $103):

ScenarioAmount enteredSurcharge amount (3%)Total returned to customer
Original payment$100 charge$3.00 surcharge$103 collected
Full refund$100$3.00$103
Partial refund ($50)$50$1.50$51.50
Invalid$103—Refund fails

Subscriptions

To apply a surcharge to a recurring subscription, set apply_surcharge: true when creating a SubscriptionAPI.

Requirements:

  • The payment_method_id must refer to a payment method that is eligible for surcharging (see Eligible card types).

Confirmation flow

Because surcharging requires explicit customer consent, subscriptions with surcharging enabled enter a requires_confirmation status and will not begin processing until confirmed. Once the customer has been presented with the surcharge details and consents, call Confirm a SubscriptionAPI to activate it.

1. Create subscription with apply_surcharge: true → status: requires_confirmation
2. Present surcharge details to customer
3. Confirm subscription → status: pending
4. First payment succeeds → status: active
5. First payment fails → status: past_due (subscription system will retry)

Create a Subscription with surcharge

curl -L 'https://api.sandbox-paymentsonline.io/v1/subscriptions' \
    -H 'payments-account: {{MERCHANT_ACCOUNT_ID}}' \
    -H 'Content-Type: application/json' \
    -H 'payments-api-key: {{SECRET_KEY}}' \
    -d '{
      "customer_id": "cus_xxxx",
      "payment_method_id": "pm_xxxx",
      "price_id": "price_xxxx",
      "apply_surcharge": true
    }'

Confirm the Subscription

curl -L 'https://api.sandbox-paymentsonline.io/v1/subscriptions/sub_xxxx/confirm' \
    -X POST \
    -H 'payments-account: {{MERCHANT_ACCOUNT_ID}}' \
    -H 'payments-api-key: {{SECRET_KEY}}'

Subscription surcharge fields

The Subscription object includes these surcharge-related fields:

FieldDescription
apply_surchargeWhether a surcharge is applied to payments created by this subscription
surcharge_rateThe surcharge rate (as a percentage) based on the merchant’s account settings at the time of creation
surcharge_amountThe surcharge amount (in the smallest currency unit) applied per billing cycle

Updating a subscription

A subscription can be updated to enable or disable surcharging and to change the payment method. When updating:

  • Enabling surcharging (apply_surcharge set to true): The subscription returns to requires_confirmation status and must be confirmed before payments resume. The payment_method_id must refer to a surchargeable payment method.
  • Disabling surcharging (apply_surcharge set to false): The surcharge_rate and surcharge_amount fields become null and the subscription continues processing without interruption.
  • Payment method change while surcharging is active: The new payment method must also be eligible for surcharging.
  • No change to surcharge status: If apply_surcharge is not specified in the update request body, the existing surcharge setting is preserved.

Hosted Checkout

To apply a surcharge in a Checkout SessionAPI, include apply_surcharge: true in the payment_intent_data when creating the session.

curl -L 'https://api.sandbox-paymentsonline.io/v1/checkout/sessions' \
    -H 'payments-account: {{MERCHANT_ACCOUNT_ID}}' \
    -H 'Content-Type: application/json' \
    -H 'payments-api-key: {{SECRET_KEY}}' \
    -d '{
      "payment_intent_data": {
        "amount": 10000,
        "currency": "usd",
        "payment_method_types": ["card"],
        "apply_surcharge": true
      }
    }'

If the customer uses a payment method that is not surchargeable (e.g., a debit card), the surcharge is automatically removed when the checkout session is confirmed.

Paydude’s hosted checkout automatically handles surcharge disclosure. The surcharge amount is displayed to the customer before they confirm the payment, and the surcharge appears as a separate line item on the receipt confirmation screen.

Card-Present Surcharging

Surcharging is also supported for card-present (in-person) transactions on Valor terminals (TSYS). When surcharging is enabled for a merchant account, the surcharge configuration is pushed to all of the merchant’s Valor terminals. The terminal automatically applies the surcharge at the point of sale and the surcharge appears as a separate line item on the terminal receipt.

ℹ️

Card-present merchants are responsible for displaying proper signage at the point of entry and point of sale. See for required signage language.

Surcharging Resources