Surcharging
Learn how credit card surcharging works, key legal considerations, and how to post a payment with a surcharge via the Checkout API.
A payment card surcharge (also known as a checkout fee) is an additional fee that a merchant adds to a customer's bill when a credit card is used for payment. The ability to surcharge applies only to credit card purchases and only under certain conditions. United States merchants cannot surcharge debit card or prepaid card purchases.
Compliance / regulation mandates
PCI DSS Level 1
Ensures that all payment processing complies with the highest level of PCI security standards.
PSD2 Strong Customer Authentication
Meets PSD2 requirements for authenticating electronic payments within the European Economic Area.
AML & KYC
Adheres to Anti-Money Laundering and Know Your Customer regulations to prevent financial crime.
GDPR Data Protection
Protects personal data and ensures compliance with EU General Data Protection Regulation.
Create Surcharges
To create a surcharge payment:
- Use the POST
/checkout/v3/payment/enrich/mxadvantage
endpoint to calculate the surcharge. The request must include:
Parameter | Description |
---|---|
mxAdvantageFeeLabel | One of: surcharge , service fee , convenience fee , non-cash adjustment , cash discount . |
mxAdvantageFeeType | Type of surcharge (e.g., percentage ). |
mxAdvantageFeeAmount | Amount of surcharge (e.g., 0.03 for 3%). |
merchantId | Merchant location ID. |
tenderType | Set to Card for card transactions. |
amount | Transaction amount (in US currency units). |
cardAccount | Valid card details for the transaction. |
Request body:
{
"merchantId":1000000000,
"tenderType":"Card",
"paymentType":"Sale",
"cardPresentType":"CardNotPresent",
"cardPresent":false,
"cardAccount":{
"expiryMonth":"12",
"expiryYear":"33",
"entryMode":"Keyed",
"number":"4242424242424242",
"expiryDate":"12/33",
"avsStreet":"1231",
"avsZip":"12312",
"cvv":"123"
},
"isAuth":true,
"isSettleFunds":true,
"shouldVaultCard":true,
"mxAdvantageFeeLabel":"surcharge",
"mxAdvantageFeeType":"percentage",
"mxAdvantageFeeAmount":"0.03",
"sourceZip":"30009",
"amount":1212.12
}
Response:
{
"merchantId":1000003628,
"tenderType":"Card",
"amount":"1248.48",
"cardAccount":{
"entryMode":"Keyed",
"number":"4242424242424242",
"expiryMonth":"12",
"expiryYear":"33"
},
"surchargeAmount":"36.36",
"surchargeRate":"0.02999702999702999702999703",
"surchargeLabel":"surcharge",
"taxExempt":false
}
- Use the POST
/checkout/v3/payment
endpoint to create the payment. Include the surcharge values from Step 1 in the body:
surchargeAmount
surchargeRate
surchargeLabel
Request body:
{
"merchantId":1000000000,
"tenderType":"Card",
"paymentType":"Sale",
"cardPresentType":"CardNotPresent",
"cardPresent":false,
"cardAccount":{
"expiryMonth":"12",
"expiryYear":"33",
"entryMode":"Keyed",
"number":"4242424242424242",
"expiryDate":"12/33",
"avsStreet":"1231",
"avsZip":"12312",
"cvv":"123"
},
"isAuth":true,
"isSettleFunds":true,
"shouldVaultCard":true,
"mxAdvantageFeeLabel":"surcharge",
"mxAdvantageFeeType":"percentage",
"mxAdvantageFeeAmount":"0.03",
"sourceZip":"30009",
"amount":"1248.48",
"surchargeAmount":"36.36",
"surchargeLabel":"surcharge",
"surchargeRate":"0.02999702999702999702999703",
"source":"QuickPay"
}
Response:
{
"id":10000001505878,
"paymentToken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXbzaQ",
"merchantId":1000000000,
"tenderType":"Card",
"amount":"1248.48",
"status":"Approved",
"authCode":"PPSa78",
"surchargeAmount":"36.36",
"surchargeRate":"0.03",
"surchargeLabel":"surcharge",
"type":"Sale",
"currency":"USD"
}
- Wait for the Payment webhook to learn the outcome of the request.
Updated 3 days ago