Incorrect billing amounts with multiple instances of Ghost

Hello,

I seem to have gotten myself into a fairly expensive pickle and I would really appreciate any help y’all can give me on how to get out of it.

I suspect the problem started because I have two Ghost newsletters — the Obsidian Roundup and The Iceberg. Both are running v4.12.1 with mysql database. I have both set up on Digital Ocean. I used the one-click installer for the Obsidian Roundup, but the Iceberg is on the same droplet as my Wordpress installation. I think this is unlikely to be the issue, but if you need more information about how that was set up, I’ll get my husband (a pro backend developer and the only reason I’ve dared to self-host Ghost) to explain it to me again. :sweat_smile:

I don’t have any errors in the console that I’m aware of; when I logged in via PuTTy to update I didn’t see any errors. I’m using Chrome but that seems irrelevant.

OK, now for the problem I’m having:

The Obsidian Roundup was the first Ghost newsletter I ever set up. I linked it to my stripe account, with the product being “Obsidian Roundup.” The pricing is $1 monthly, $10 yearly. I’ve confirmed that there’s a green “connected to stripe” button and Ghost reports 224 paid members, 1,979 total members, with a MRR of $239.

When I set up The Iceberg, I used the same account (Eleanorkonik), the product being “The Iceberg” with pricing set to $2 / $20. In retrospect this was a horrible mistake, but I don’t see any way to change it without unsubscribing all of my subscribers, which I am reluctant to do without asking for an alternative first, because Ghost reports a MRR of $107 and 99 paid members.

The problem I’m having is that Stripe has completely different numbers.

Stripe reports 32 active subscriptions for the Iceberg (MRR $41.28) and 207 active subscriptions for the Obsidian Roundup (MRR $188.61). So from what I can tell there’s at least a hundred dollars “missing” and a bunch of people who signed up for the Iceberg who … maybe didn’t get charged at all?

When I compare the actual payments, looking at the log on the dashboard, I can see individual people creating subscriptions in Ghost that sometimes (but not all the time) never appear in Stripe. At other times, the numbers are off — I see subscribers to The Iceberg getting charged the price for the Obsidian Roundup and both Ghost and Stripe report the numbers for a $1 payment instead of a $2 payment. It almost feels like there’s some kind of race condition happening? I filed a report with the people at Stripe but it’s been a couple of days and I’m pretty sure you guys would want to know too, if only to warn other unsuspecting people that running two different newsletters with the same Stripe “account” can be dangerous. The problem isn’t that it suddenly “stopped” working, it’s just… intermittent.

Anyway, I’ve shared a bunch of screenshots with @DonaldH (as a sanity check to make sure I wasn’t missing anything obvious as I tried to track down the discrepancy — Donald if I failed to include anything here that I shared with you and you think would be relevant, please feel free to add to this) and will happily redact any screenshots necessary to sanity check things like “gross v. net” and “are you sure you’re on the right account,” but I think the problem is that I have two ghost installations connected to the same stripe account (which I imagine not many people do) and I don’t know how to fix this without literally unsubscribing all of my subscribers, which I’m reluctant to do for obvious reasons.

Thank you for reading. I did my best to dig up and share all the relevant information I have, but I’m happy to explain more if necessary. I know it’s not really a “repro step” or a traditional bug report, sorry.

:green_heart:

Eleanor Konik

2 Likes

Have you had any luck with solving this issue yet, @EleanorKonik? I haven’t used paid memberships yet but I have a Stripe account and if you haven’t found a solution yet, I can spin up a couple of test websites to see if I can reproduce this and help you figure it out.

I haven’t had any luck yet, @DonaldH. I figure I’ll give it a week to hear something official back from Stripe or the Ghost team (I can’t imagine this corner case only impacts self-hosted people, so I want to give them a chance to ask questions about my setup before I nuke it), and then just export everything I can (if I can figure out how) and nuke all of the subscriptions back to nothing and start over and see if that fixes it. It will suck to lose the money into the ether, but money isn’t my main motivator and I don’t see a good alternative.

I imagine if you can come up with some repro steps that would be helpful, though! I’m not really in a position to test.

Stripe responded to my report with:

I’ve taken a look over your account and I am unable to locate the extra values as shown by Ghost. I would recommend reaching out to Ghost to determine why their values do not match the values within Stripe. As this is a third party, we wouldn’t be able to advise on any discrepancy as we don’t know exactly how Ghost are formulating their metrics.

As an example, you currently have 243 active subscriptions, this includes both Iceberg and Obsidian Roundup within your account. But the screenshots that you sent from Ghost, would indicate having over 300 paid subscribers for the two.

I believe that Ghost would be in the best position to explain how they create their graphs and metrics along with how the data is being pulled from your Stripe account.

1 Like

@EleanorKonik Having that information from Stripe is a step forward, at least. Hopefully somebody from the Ghost development team can offer some insight - I’m sorry I haven’t gotten to reproducing the issue yet with some dummy sites, as I’m rather buried under some work at the moment, but I’m trying my best to get to it ASAP as I know that you have put a lot of time, thought and energy already into solving this, and as we discussed on the Slack chat, part of your reason for wanting to figure this out is to help prevent other people falling into what might be a bug or other complication of some kind. And I think it’s admirable that you want to help others avoid the trouble this has caused you.

Actually @EleanorKonik, I think one thing you haven’t mentioned in your post (unless I missed it) is something that I think is important: You have two websites with paid subscribers and one Stripe account (which is normal) but you have both Ghost installations/websites connected to two products within one Stripe business/account, and I suspect (but of course, don’t know) that this might be the root or part of the problem. As you mentioned on Slack, there’s currently no option for you to change stripe accounts (as far as you can see) but only disconnect which it won’t let you do because you have active subscriptions. So your only option, seemingly, is to “nuke” your two sites in terms of losing all your current subscribers, and then reconnect these two separate websites/newsletters with two separate businesses/accounts (within the one Stripe login/account - again, the terminology can be a bit confusing).

This is not normal, and is most likely the cause of the problems. There’s more info and some suggested steps in this topic:

So, part of the problem that got me into this mess is that the Roundup and the Iceberg aren’t “unrelated businesses” — from my perspective, they’re both products under the Eleanor Konik brand, which is why I set it up the way I did in Stripe.

But it seems like the only answer is to manually delete all of my Ghost subscribers and then re-add them onto a different account on stripe’s end and import them, but it still leaves me with the problem of all of the people in Ghost’s database who think they’ve paid but Stripe has no record of.

I suppose there’s no way to solve that either, so I’ll try to fix it on my end or just eat the lost revenue. I was hopeful that there was some sort of export process that would make it easier, but I suppose that since you guys don’t have access to my Stripe database, you couldn’t even fix it if I migrated to the Concierge service.

Thanks for the confirmation!

` Eleanor