Is there any way to connect Ghost to anything other than Stripe?

I have been blogging Ghost for about 7 days now and I found out that Stripe does not support my country… Is there no way I can open a paid membership in this case? I am wondering if I should move to another platform because of this.

Ghost only directly supports Stripe. Some people do work around the issue, by taking payments separately and then setting up users with complimentary access within Ghost. It can be set up to work ok, but is a little fussy, and you’ll want to have a mechanism for synchronizing between payments and Ghost.

There are some how-tos. For example:

Thanks a lot Cathy :)

Cathy is right that this is the standard workaround, and the sync mechanism she mentions is the part that decides whether it holds up.

The manual version is fine until volume picks up. Granting access is the easy half. Removing it is where things fall apart: someone cancels, the payment provider knows, Ghost does not, and they keep reading for weeks. Refunds and failed renewals cause the same mess in reverse.

Zapier, Make or n8n are the quickest way to close that gap. Provider sends a webhook, the platform calls the Ghost Admin API, done in an afternoon. You pay per task, which adds up on a busy site, and error handling is your problem. When a run fails at 3am you hear about it from a reader. Of the three I would take n8n if you can self-host it, since you get real retries and no per-task pricing.

Writing your own receiver gives you full control, and the Admin API itself is pleasant to work with. What nobody mentions is the maintenance: signature verification, duplicate events, retries when your endpoint is briefly down, providers changing their payload without announcing it.

I did that for my own site for a while, got tired of it being my weekend job, and turned it into a product. Full disclosure before the link: PayGlue. It listens for the provider’s webhooks and calls the Ghost Admin API, so access gets granted and revoked on its own. Polar, Lemon Squeezy, PayPal, Gumroad, Paddle, Ko-fi, Creem and Patreon are supported. Core is open source, self-hosting free, if you would rather run it yourself.

One quirk worth knowing whichever route you pick: assign a paid tier through the Admin API while Stripe is connected, and Ghost marks that member as complimentary, since the billing did not run through Stripe. Access works normally, but Ghost’s revenue numbers will look wrong. The real figures sit at your payment provider.

For your case, where Stripe simply is not available, this is a workable path. I would not move platforms over it.

Nuenni, without Stripe, are you limited to one paid tier? That’s been my experience, and even that much doesn’t show up in the Ghost dashboard.

@Cathy_Sarisky No. Ghost gives you its native free tier, and next to it you can run as many paid tiers as you like through the provider. (Of course not native in Ghost :rofl:)

Take India, since Stripe is not available there:

You create your tiers as products in Polar, say three of them, and put them in a PayGlue pricing table. Ghost’s own paywall is no use here because without Stripe it only knows free.

So the post stays Public and the PayGlue paywall takes over the job: it shows the teaser and hides the rest, with the paid memberships offered right next to the free tier. When someone buys, PayGlue creates the member in Ghost with a payglue-active label and a product label for the tier they picked, and the paywall opens for them. If they cancel at Polar, the label flips and the post closes again.

Example Paywall:


Members only keeps working for anything you want behind a login, and the free tier keeps doing the newsletter job. If you also have real Stripe subscribers, they pass the PayGlue paywall as well, so both paths live side by side.

Example: User creation without Stripe:

You can test this workflow in our demo blog for yourself with sandbox credit card (that is not connected to stripe), don’t take my word for it :wink:

Example: User creation with an active Stripe account connected in Ghost

You are right about the dashboard, though. PayGlue is not a plugin or a theme modification; it only talks to the Admin API, so nothing inside Ghost Admin changes. Ghost’s revenue numbers stay at zero because no money went through Stripe, and the real figures sit where the money is: at your payment provider. PayGlue’s own dashboard adds the grants per provider on top, it doenst show any payment analytics.

One limit I should be upfront about: the paywall currently opens for any paying member, so “this post only for the top tier” does not exist yet. The product labels would make it possible. If people ask you for that, I would like to hear it.

I already have customers in three countries where Stripe is not available and Polar or Paddle work fine. That is the situation this was initally built for.

I infer from this screenshot that the post content will be fully accessible in ActivityPub (“Social Web”) if the site has it on, to anyone accessing via the Content API, in the site’s RSS feed, and to anyone who opens the page in the browser and reads the source. Is that inference correct?

I’m not trying to rip you down here, but I think that providers who are hiding content with javascript and/or css owe it to their users to be really really clear about the level of paywalling being provided by their solutions, and whether it works on ActivityPub, RSS, Content API, and for users with JS disabled.

Here’s your full demo content. I did not sign in.

That doesn’t make your solution without value for some sites with some audiences. But, for example, it’s likely a problem for high value content and especially for a technical audience. And it precludes using Social Web.

I apologize in advance if I’ve overlooked where you describe that on your site. I looked through the how-it-works page and didn’t see it.

Thank you for testing it properly instead of taking my word for it. I read this as constructive. You look at it from the developer side, and that is the view a tool like this needs beside the regular customer view.

Your inference is correct.

Two things are stated openly in the dashboard and in the docs: PayGlue needs a code snippet in the post, and the paywall can be bypassed with enough technical understanding.

The reason is where Ghost draws its line

Integrations work through Ghost’s APIs and webhooks, PayGlue included, and none of them can hold back post content on the server. Only Ghost’s own visibility does that, and without Stripe there is no paid state in Ghost to hang it on.

So any external (client-side) paywall ends up working in the browser. Ours does, and as another example, as far as their docs describe it, Steady’s (steadyhq.com) widget does the same. Simplified, it is a softer paywall than Ghost’s native one. That is the trade, and it is written down where people set it up in the Dashboard and our Docs.

Conclusion

Your post @Cathy_Sarisky makes me think it belongs earlier than that, on the landing page, before anyone starts setting up. I already created the Tickets, to rework this as soon as possible. Thx.

The feed point is the useful part for me

Yes, with the post on Public, Ghost hands the full content to RSS, to ActivityPub and to the Content API, and that deserves a plain sentence right next to the snippet. Feedback like this is worth a lot, so thank you.

Server-side gate

If you can use Stripe, connecting an account, even an idle one, gives you Ghost’s own server-side gating on top of PayGlue. In the case this thread is about, where Stripe is not available, the soft paywall is what you get. For a newsletter or a community site that is a fair deal. For high-value content, or a site that lives on the social web, you should know the limit before you build on it.

Feature TBD

If a server-side gate turns out to matter to my customers, I can build one and upgrade the PayGlue features. It would be a different mechanism than today’s overlay, so no date from me, but I am not ruling it out.

I hope that covers your questions. Thanks again for taking the time to look this closely.

It is also possible to receive payments in cryptocurrencies from BTCPay: