Feature(?) request: Update/fix the API and it's libraries

As a developer, I know how frustrating it is to try and learn how to use a library with minimal/vague/incorrect documentation, and currently Patreon’s JavaScript library falls under that category (I can’t speak for the others, since I don’t use them).

The libraries are sorely in need of some updates and fixes. The examples in some of the documentation flat-out error when I try to use it exactly how it says to use it.

A user by the name of “SkyCorp” does a great job at explaining how crucial the API is to many creators, Two paragraphs in particular stood out to me:

If this functionality stops working, or goes back to the state it was a couple years ago where it took an extra 17 days into the month to get the API data updated, any project that has an external website is just not going to be able to rely on Patreon for payment processing.

More than any other single controversial change, letting the API slide into an unreliable state will push your largest projects to different payment processors. A fancy mobile app is a nice to have feature, but we don’t depend on it. We do depend on reliable data so we can give our patrons a good customer experience.
An update on Patreon’s API - #5 by SkyCorp

And now considering we have multi-currency support, how does that effect the API? Since no one is supporting/updating the API, who are we even supposed to ask?

At this point, I am considering giving up on Patreon’s API myself, and finding something else I can use to charge my clients each month.

5 Likes

I’m on day three of retrofitting my site to support Patreon’s multicurrency (it’s requiring a total rewrite). All the API devs at Patreon are long gone at this point, and it’s painfully obvious no one left has thought through this changeover at all on the engineering end.

Just simply trying to activate rewards offsite for users who have paid for them is quite simply a technical disaster from a software engineering standpoint. It’s astonishingly clunky (borderline unusable) to get what a user actually paid for and when. Yet this is the most core, critical part of any payments platform. It boggles my mind that a payments company the size of Patreon is fumbling on this most essential of tasks.

Previously, we could rely on lifetime_cents and do some (hackish) tracking locally to figure out how much a user has actually paid and redeem rewards appropriately. Inelegant, but it worked and only took paging through the list of subscribers periodically.

With multicurrency, there’s no way to know what a user has actually paid for since cents could be anything, so you have to check their pledge history. This means you have to go through and spam the API for each active / recently active user. Potentially thousands of extra API calls, constantly slow polling for data changes.

Maybe you could optimize this significantly by comparing and caching last_charge_date and last_charge_status to cut down on unneeded polls, but last_charge_date isn’t consistent between the campaign’s list of members and the member’s resource pledge history at all. The campaign’s resource appears to be an actual charge time, whereas member’s pledge history gives 7 or 8am on the first day of the month only. Would have been handy if there was a last_charge_event_id or similar to compare against (or a consistent/real timestamp).

Even better, Patreon could have rolled out a new last_charge_tier so we could know what people last paid for, along with the existing last_charge_status and last_charge_date. Then we wouldn’t need a metric ton of extra API calls since we’d already have the key data.

Whoever wrote the currency updates doc is expecting people to use currently_entitled_tiers, but that includes stuff customers haven’t paid for yet, so it’s useless.

This sort of boondoggle is just another instance of Patreon’s schizophrenic leadership which prioritizes random shiny new features like merch and lens over making the core of Patreon’s payments platform actually stable and reliable. With no developers engaging with the community anymore, it leads to this negative cycle where Patreon is more and more out of touch with what we actually need to effectively use the platform.

We don’t want random extra features to pay extra percentage fees for. We want an affordable, reliable, well engineered payments platform.

1 Like

It didn’t even cross my mind that the multi-currency change (which is annoying enough on its own) could potentially impact the data being sent through the API. Setting aside the obvious garbage-fire aspects of really determining what a patron has paid and when (which is something that requires me to manually correct issues semi-frequently), we absolutely need to be told whether the “cents” reported by the API are going to remain consistent, and if not, what the data will actually mean moving forward.

If this multi-currency change is going to be forced on us in a little over a month, we should be told precisely how it’s going to impact the systems that allow us to automate our reward systems. It’s not asking for much - just basic open communication.