Advice on Supporting a Community Website via Patreon

The API is new and has limited functionality. The documentation is short enough to read through and get a good idea of what capabilities there are, but in summary based on my own experience the following functionality of the API will be relevant to your implementation:

  1. Receive a webhook when someone creates a pledge to your campaign
  2. Receive a webhook when someone updates a pledge to your campaign
  3. Receive a webhook when someone deletes a pledge to your campaign
  4. Send a request to the API to retrieve a list of all pledges to your campaign

The pledges endpoint cannot filter based on email address, nor will you receive payment information (although it is possible to determine payment status, and improvements are coming, see this thread) so to implement your system you would need to:

  1. Set up webhooks for new pledges, deleted pledges and updated pledges (note that pausing a pledge does not currently trigger a webhook) and use those to assign reward level in your local database.
  2. Routinely poll the pledges endpoint, iterating through each pledge, determining based on the declined_since and total_historical_amount_cents if the user has been charged for this month and is still eligible for their reward.

Notes:

  1. I highly recommend reading through not just the developer documentation but also the Patreon help center, it’s filled with very interesting information that is aimed at creators and patrons but will help you understand how the system works which is useful when implementing the Patreon API. There are edge-cases you might not expect, e.g: not charging upfront.
  2. Patreon starts billing on the first of the month at midnight PST and retries failed payments over the next few days, encouraging patrons to fix incorrect billing information, so a patron could show as being declined_since on the 2nd of the month but then their payment may succeed on the 3rd.
  3. You will need to decide how you handle whether or not a user is eligible based on their patronage status, Patreon does not default to charge upfront (and I believe enabling charge upfront is currently invite only, this page mentions it’s in beta) so people will be able to become patrons without being charged, do you grant their rewards once they’ve been charged? do you grant upfront and trust they’ll pay?
  4. There will be situations in which your users will use different email addresses for their account on your website and their Patreon account, therefore, you will need to include functionality that either allow a user of your website to authenticate with Patreon (to identify them accurately) or allow the user to specify their Patreon email (or user id) in a profile field on your site which you can then use to cross reference.
  5. There are some parts of the Patreon system that aren’t documented, and/or aren’t obvious if you’re unfamiliar with the platform, this thread covers some of the questions I had and has helpful answers from the Patreon team, it may be of value to you too.

Personally, as much as I am a fan of Patreon, as a developer who has worked with both the Stripe platform and the Patreon API (and as a developer who values the least code that requires the least maintenance), if I was in your situation I would not choose Patreon, but if the accounting considerations are that important to you then certainly you can achieve what you need to achieve with the Patreon API, and certainly based on what has been shared by the Patron team the Patreon API is getting better, so you could improve your implementation in future once payment information is available.