Surcharging
A credit card surcharge is a fee that is added to a payment when a customer uses their credit card. Surcharging allows merchants to pass on some of the costs of accepting credit cards to their customers.
Rules and Limitations
- A surcharge can only be applied to credit card transactions, not debit or prepaid cards.
- The merchant account must be set up for surcharging
- Existing merchant accounts with Stax who are interested in surcharging can reach out to us to get set up.
- Notice to your customers is also required that they will begin to assess a surcharge (in-person or online, we take care of this for you).
- Merchants must fill out Mastercard’s disclosure form to notify that they wish to surcharge their customers:
https://www.mastercard.us/en-us/surcharge-disclosure-webform.html - When implementing surcharging, the software must notify the customer that a surcharge fee is applied.
This may include the payment screen, receipts, emails, reporting, etc.
The documentation here only accounts for card not present transactions. For information about card present transactions, please reach out to support.
Compliance
The following will apply to comply with local state and federal law regarding surcharges.
- Required card network registrations for surcharging are completed.
- Any surcharges must be disclosed on the payment page and receipts.
- Customers must be provided with the ability to cancel a transaction before submission.
- By default, a surcharge will not be added to a transaction if:
- The BIN number of the payment method is a debit card.
- The billing state address (on the payment method) or the customer shipping address of the transaction is located in a prohibited State/Territory. State check functionality can be overridden by contacting Client or Partner Success.
- Any refund will include the refund of the surcharge (pro-rated for partial refunds).
Subscribe to the Stax’ status page to see API updates and scheduled maintenance alerts.
Technical Implementation
Create a customer (optional)
Tokenize a credit card – Tokenizing a card will handle creating a customer if no customer record already exists.
Calculate the surcharge amount to display to the payer using the tokenized card
Charge the tokenized card
Making the Surcharge Payment
With surcharging enabled, Stax will always assess a surcharge for credit card transactions on a merchant account that has surcharging enabled.
To understand if a merchant account is set up for surcharging, developers can query the GET Merchant Registration endpoint and check to see that the value cnp_credit_surcharge_rate is greater than 0. Additionally, querying the GET Merchant endpoint will return a boolean property is_surcharging_merchant which when true will indicate the merchant account is set up for surcharging.
Developers should NOT include the surcharge amount in the total being sent into the Charge a Payment Method route when making a payment.
Example If a transaction’s pre-surcharge total is $100, and a $3 surcharge should be assessed, the front end of the application should display that the surcharge will be $3, and that $103 will be charged to the customer, but the total that should be sent into the request to Stax API should remain 100.
Creating surcharged transactions does not require any special fields passed into the API. Using the $103 example from above, you would display to the payer that they will be charged $103, while the actual request POST body to the API will look something like this:
{
"payment_method_id": "853c9tt3-e361-4194-97eb-03a268a832e9",
"meta": {
"tax": 0,
"subtotal": 100
},
"total": 100,
"pre_auth": 0
}
Charge a Payment Method Documentation
Calculating the Surcharge Amount
To calculate the surcharge amount of a transaction, developers can use the Review a transaction’s surcharge information{:target=”_blank” rel=”noreferrer”} endpoint, which checks if the merchant is set up for surcharging, and will check that the tokenized payment method’s bin_type is "CREDIT" to provide relevant surcharge information to be used in a UI to indicate bin type, surcharge rate, surcharge amount, and the total with a surcharge added.
Using the same $103 example above, where the transaction’s total is $100, and the merchant’s surcharge rate is 3%, the response of the Review route on a credit card will look like this:
{ "bin_type": "CREDIT",
"surcharge_rate": 3.0,
"surcharge_amount": 3.00,
"total_with_surcharge_amount": 103.00 }
NOTE: When a card is detected to be a debit card, no surcharge will be added.
Refunding a surcharge transaction
For transactions where a surcharge was assessed, the entire transaction amount that includes the surcharge amount must always be fully refunded to the customer.
Using the above example, where the Sale is $100, and the surcharge is $3, the customer paid the total was $103. The full $103 amount would be refunded to the customer, and the merchant would have $100 removed from their bank account.
Testing Surcharging
A sandbox account must be specifically configured for surcharging. If you are interested in testing surcharging, please request a sandbox account and contact support to configure your sandbox account for surcharging.
Once your sandbox account is set up properly, you can fully test the Implementation flow outlined above using our test card numbers for both CREDIT and DEBIT bin types. When a bin_type is unavailable on a payment method, you should assume it is a DEBIT card, and a surcharge should not be assessed.
State Surcharging Compliance
As part of the compliance, some states regulate surcharging. These states can be identified in the merchant table to not allow for surcharging. You can, however, override this behaviour.
In the Merchant table, adding surcharge_policy to the option_column and setting it to _state_check will zero out any surcharge on a transaction made by a customer from one of these three states (CT, MA, and PR).
If the surcharge_policy is set to always_allow in the options column or surcharge_policy is not set, then the surcharge fee should be applied as normal, no matter the state.
If a state is not submitted with the transaction, a surcharge fee will be applied if the merchant surcharges.
To set the merchant table, use the following in the API call:
{ "options":
{ "surcharge_policy": "state_check" } }
where surcharge_policy can be set to:
state_check – Check to see if the state allows surcharging. if prohibited, then zero out the surcharge.
always_allow – Always allow surcharging if enabled.
Null – Always allow surcharging if enabled.
Note: To surcharge, we need full control over the flow (and the tokenization capability). With Digital Wallets, Apple Pay, or Google Pay, we do not currently have a way to check the BIN of a card before a transaction and, therefore, cannot validate surcharging.
Surcharging and Digital Wallets
If a customer pays a surcharging-enabled merchant with a digital wallet payment, the card will be treated as a non-surcharged transaction, and standard CNP rates configured within the account will apply.
Updated 7 months ago