Here are the very simple questions I need to answer:
- What is the list of currently-paid-up patrons?
- What are their tiers?
Note that Patreon only charges people once a month. This means that if you sign up on May 8th, they don't run your card until some time after June 1st, and sometimes they take 2 or 3 days before they get around to it. And once that happens, your membership for the month of June is active. This confuses and irritates people, because if they sign up early in the month, it could be a full 4 weeks before they can take advantage of their membership.
So by "currently paid up" I mean "I have their money", not "I might have their money next month".
And by "their tiers" I mean "the tiers that they have been charged for with the money that I have", not "the tiers that they would like in the future".
Problem 1: What tier?
Here's a pleasant little interaction I had with Patreon last year:
From: jwz
Date: Sep 1, 2021, 9:42 AM PDTHi, every now and then a current patron drops off of my list for some unknown reason, and I've finally tracked down an example of it happening with your API.
Here is my patron [REDACTED] - https://www.patreon.com/user/creators?u=[REDACTED]
Patron for 56 months. Status = "Paid". Payment history shows paid on Aug 1, Jul 1, Jun 1, etc.
However, today, Sep 1, the API output changed to indicate that this patron has no entitled tiers. Specifically, "currently_entitled_amount_cents" changed from 1000 to 0, and "currently_entitled_tiers" was blanked out. It used to be:
currently_entitled_tiers => { data => [{ type => "tier", id => 1246691 }]}
Can you explain this? Specifically how can I reliably get a list of my current paid-up patrons and the tiers to which they are entitled? Why is this user showing as not having a tier?
From: Debbie (Patreon)
Date: Sep 1, 2021, 1:32 PM PDTThank you for reaching out to Patreon support -- I'm happy to help here.
Due to resource constraints, we no longer provide Patreon developer support for our API. This doesn't mean the API won't work and developers tap into unmaintained APIs quite frequently, but we want to make sure you make informed decisions based on our plans for the future.
So after Patreon Support very politely told me to go fuck myself, I changed my code that calls their API to do some heuristic bullshit:
Their documentation says: "currently_entitled_amount_cents: Amount that the member is entitled to. This includes a current pledge, or payment that covers the current payment period." So it includes money that they haven't yet spent.
But sometimes "currently_entitled_amount_cents" is 0 even though I see that they were billed two weeks ago. In that case "will_pay_amount_cents" is non-zero. WTF?
So what I am doing is: regardless of what Patreon says about their pledge value, don't include them on the list if it has been more than a month since we have taken their money (or never). Really, I want to know how much they paid us at the beginning of this cycle, but I don't see any way to find that.
Also, as noted in the annoying non-support exchange above, sometimes patrons show up with no tiers. Maybe this is because they didn't select a tier, but just pledged an amount? So I add them to the list as if they had selected one of the appropriate price point.
Problem 2: What timeframe?
- I need to know "what has this patron paid for this month". This is confusing because Patreon likes to instead answer the question, "what has the patron requested for the future, which we have not yet charged them for."
- Jan 29: Sign up at $15.
- Feb 02: Charged $15.
- Feb 03: Change pledge to $60.
- Feb 04: Receive benefits appropriate to $60 tier.
- Feb 05: Change back to $15.
- Mar 02: Charged $15.
So when do I update my list? You might think that I should just update it daily, but that's no good because it allows this exploit:
Problem 3: Declines.
- Here's the latest act of this shitshow. Currently I have a few patrons who are not on the list who should be, because when I retrieved my list on June 3, Patreon told me that these patrons' cards had been declined, and so they were not charged for June. To me that can only mean: membership for June has lapsed.
But, SURPRISE, then on June SIXTH, apparently Patreon re-ran their cards and charged them for June anyway.
Patreon hides the log of this activity, or possibly straight-up lies about it.
When I click on "Payment History" for one of these patrons, it shows payments on Apr 1, May 1, etc., but then a payment on June 6. When I show "see all history", it shows... completely different dates, all on the 31st. It does not list any declines or re-tries.
Fortunately I kept logs of what Patreon's API was saying at the time, and it shows that on June 3, Patreon had this to say:
- patron_status => "declined_patron",
last_charge_date => "2022-06-01T21:14:46.000+00:00",
currently_entitled_amount_cents => 0,
last_charge_status => "Declined"
So, this person was not on the list for June because, for the first 6 days of June, including on the 3rd when I updated the month's list, Patreon said they hadn't been charged.
Then, they went and charged them a quarter of the way through the month anyway.
So what the absolute fuck am I supposed to do with this???
If you know someone who works at Patreon who understands how this crap works, I would really appreciate it if you could put me in touch with them.
Update: I'm flailing around in the dark here, but maybe the right thing to do is to ignore the 'currently_' and 'last_' fields and instead get the 'pledge_history' of each patron, find the date and amount of the last pledge, and just go by that: they are a member at level N if they were actually charged that within the last 5 weeks (a week of slack being necessary since Patreon takes its time charging people). This is assuming that 'pledge_history' isn't also full of lies...
Update 2: Today, June 15, I saw a missing patron re-appear on the list.
- Paid: Apr 2
- Paid: May 1
- Paid: Jun 15
- Join: Mar 18
- Paid: Mar 31
- Paid: Apr 30
- Paid: May 31
- last_charge_date: Jun 15