Mobile Payments SDK surcharge plus application fee

Hello Square Developer Support,

I’m evaluating in-person payments for CampusShelf, a textbook marketplace where a buyer and seller meet.

The proposed flow is:
- The seller accepts payment inside CampusShelf using Square Mobile Payments SDK / Tap to Pay.
- The buyer pays the listed book price plus a surcharge only if Square identifies an eligible credit card. We would not surcharge debit or prepaid cards, including debit cards run as “credit.”
- CampusShelf collects a 1% application fee from the seller’s proceeds on payments processed in the app.
- CampusShelf charges no fee when buyer and seller pay outside the app.

Can you confirm whether Square supports the surcharge and application fee together in one marketplace payment through the React Native Mobile Payments SDK? In particular:
1. Does this work with Tap to Pay, and is that SDK capability generally available or still in beta?
2. Does Square identify eligible credit cards versus debit/prepaid cards, including cards presented through Apple Pay or Google Pay?
3. Does each seller need a Square account, OAuth connection, surcharge enablement, and their own Dashboard surcharge settings?
4. Can the application fee be calculated as 1% of the book price, excluding the surcharge? How are processing fees, refunds, and disputes handled?
5. Are there Square marketplace or California-specific requirements we should resolve before building?

Thank you,
Memleak

Hi @Memleak , welcome to the forums!

Concerning your questions:

  1. The Mobile Payments SDK and Tap to Pay (iPhone and Android) are generally available in the US, and surcharging works with Tap to Pay. Surcharges aren’t available for offline payments or pre-existing orders. In React Native, set allowCardSurcharge in PaymentParameters. Please test it on both iOS and Android in sandbox.
  2. Square handles card detection for you. Surcharges apply only to eligible US credit cards, never to debit or prepaid cards, and the same rules apply to Apple Pay and Google Pay. The applied surcharge appears on the payment’s card details.
  3. Indeed each seller will need their own Square account. The recommended way to handle permissions here is to authorise your app through OAuth (standard Mobile Payments SDK permissions plus ITEMS_READ for surcharging and PAYMENTS_WRITE_ADDITIONAL_RECIPIENTS for app fees). You’ll also have to turn on/set surcharge.
  4. appFeeMoney is a fixed amount you calculate, so you can set it to 1% of the book price before the surcharge. Square’s processing fee is charged to the seller. On refunds, app_fee_money sets how much of your fee goes back toward the refund; if you leave it out, you keep the fee. Disputes are raised against the seller’s account, and your fee isn’t automatically reversed.
  5. Each payment must go to the seller’s own Square account; (that they sign up and go through the onboarding checks for). Your platform can’t collect funds for them and then redistribute. Surcharging rules vary by state, including California’s disclosure and pricing rules, I can’t give legal advise so please confirm your approach with legal counsel.

Finally, what I would advice is setting up a quick sandbox prototype to confirm the full flow end to end as that usually provides a lot of clarity.

Let me know if you have any further questions!