HubSpot Payments & APIs: Uncovering the Hidden Truth About Processing Fees on Invoices

HubSpot Payments & APIs: Uncovering the Hidden Truth About Processing Fees on Invoices

Hey ESHOPMAN community! As your go-to experts for all things HubSpot and e-commerce, we love diving into the real-world challenges you face. Recently, a fascinating discussion popped up in the HubSpot Community that struck a chord with anyone trying to maintain accurate financial records and manage payment processing fees, especially when using HubSpot’s API for invoice generation. It’s a classic case of 'working as designed' meeting 'but it doesn't work as expected for me!'

Let's unpack this. The original poster highlighted an issue where HubSpot's built-in payment checkout fees, specifically for credit card payments, were not being assessed on invoices created via the HubSpot API, despite being enabled as an account-level setting. Now, if you're like us, you'd expect an account-level setting to just... apply everywhere, right? Especially when you're trying to seamlessly build your online store and automate your billing processes.

The Discrepancy: UI vs. API

The original poster observed that when creating an invoice directly in the HubSpot UI, the credit card fee was correctly applied and even showed a pre-checked box allowing for an override. This indicates the system knows about the fee and applies it by default.

However, when the same invoice was created programmatically via the HubSpot API, these fees were nowhere to be found at checkout. This is a crucial point for businesses relying on automation for their e-commerce operations, whether you're managing a complex B2B storefront or a simple website builder for clothing store.

Further investigation revealed a hidden property on the invoice object: hs_allowed_checkout_fee_ids. It seems the UI somehow sets this internally. The kicker? The actual payment checkout fee ID is also hidden and can't be retrieved via the standard payment fees API:

curl --request GET \
 --url 'https://api.hubapi.com/crm/objects/2026-03/fees?limit=10' \
 --header 'Authorization: Bearer [token omitted]'
{"results":[]}%  

This is particularly frustrating because other payment settings, like allowed payment methods, are correctly handled when using the invoice API, as noted in the HubSpot documentation.

The official word from HubSpot support? "Working as designed." Ouch. That's a tough pill to swallow when you're trying to maintain accurate financial reporting and leverage HubSpot payment gateway integration fully.

Community's Input & Workarounds

A helpful community member quickly identified this as a product/API gap, suggesting that while the UI writes invoice-level checkout fee eligibility, the public API doesn't expose a supported way to set this. They recommended against relying on hidden properties unless explicitly supported.

Their initial workaround suggestion was to add the surcharge as a regular invoice line item. While auditable, this wasn't feasible for the original poster. Why? Because they don't know the client's preferred payment method (ACH vs. credit card) at the time of invoice creation. If a client pays via ACH, a credit card surcharge would be incorrectly applied.

The "Elegant-Not" Solution That Works

Necessity is the mother of invention, right? The original poster came up with a clever, albeit unofficial, workaround. Here's the gist:

  1. Create a Reference Invoice in UI: Manually create an invoice in HubSpot's UI, ensuring the credit card processing fee is applied as expected.
  2. Query the UI-Created Invoice via API: Use the HubSpot Invoice API to retrieve the properties of this manually created invoice.
  3. Discover the Hidden Fee ID: In the API response, look for the hidden property hs_allowed_checkout_fee_ids. This will contain the ID of your credit card processing fee.
  4. Apply the Hidden ID to API-Generated Invoices: When creating subsequent invoices via the API, explicitly set the hs_allowed_checkout_fee_ids property with the ID you discovered.

This approach effectively mimics what the UI does behind the scenes, ensuring the fee is applied even for API-generated invoices. It's not officially supported, and as the original poster put it, "Elegant it is not... But it seems to work…"

ESHOPMAN Team Comment

This community discussion perfectly highlights a common frustration with API development: discrepancies between UI behavior and exposed API functionality. While the workaround is resourceful, it's a clear indicator of an API gap that HubSpot should address. Relying on hidden properties creates technical debt and potential instability. We believe HubSpot needs to provide a documented, supported way to manage these account-level payment fees via API for robust e-commerce and RevOps automation.

What This Means for Your HubSpot E-commerce Operations

For HubSpot users, RevOps professionals, and marketers running stores, this issue underscores the importance of thoroughly testing your HubSpot payment gateway integration, especially when using automation. If you're generating invoices programmatically, always verify that all expected fees and settings are applied correctly. While waiting for official API support, the community-devised workaround offers a path forward, but it's crucial to document your implementation and keep an eye on HubSpot updates.

Ultimately, community discussions like this are invaluable. They shed light on areas where the platform can improve and provide practical solutions from those in the trenches. If this issue impacts you, consider heading over to the HubSpot Ideas Forum and upvoting a feature request for explicit API support for payment checkout fees. Let's keep making HubSpot better, together!

Share: