Paywall your EmDash content with Stripe in minutes.

Restrict With Stripe is the first paid-content plugin for EmDash. Connect Stripe in one click, mark a post as premium, and let Stripe Checkout do the selling. No member database to babysit: Stripe is the source of truth.

Running WordPress? Download the original plugin, free.

How it works

Three steps from free post to paid post.

Everything about billing stays in Stripe. Your EmDash site only asks one question: does this visitor have access?

  1. Connect Stripe

    Click Connect to Stripe in the EmDash admin. Stripe Connect handles the handshake, so there are no API keys to copy and paste. Prefer your own key? Paste a Stripe restricted key instead.

  2. Create products in Stripe

    Add a product with a default price for each thing you sell, either a one-time purchase or a subscription.

  3. Restrict your entries

    Open a post or page and tick the products that unlock it. Visitors see a paywall, buy through Stripe Checkout, and come back unlocked.

Built for EmDash 1.x

One plugin. One line of config.

Restrict With Stripe is a native EmDash plugin. Register it next to your other plugins and a Restrict With Stripe screen appears in the admin, with a panel in the editor sidebar for every entry.

Full install guide
astro.config.mjs
import { defineConfig } from "astro/config";
import react from "@astrojs/react";
import emdash from "emdash/astro";
import { restrictWithStripe } from "emdash-restrict-with-stripe";

export default defineConfig({
  integrations: [
    react(),
    emdash({
      siteUrl: "https://example.com",
      plugins: [restrictWithStripe()],
    }),
  ],
});

Features

Everything a paywall needs. Nothing it doesn't.

Stripe already does checkout, billing, invoices, and receipts better than any plugin could. We connect it to your content and get out of the way.

  • Stripe Checkout

    Visitors pay on Stripe's hosted Checkout. One-time prices and subscriptions both work.

  • Stripe is the source of truth

    Access means an active or trialing subscription, or a paid invoice. Cancel or refund in Stripe and access ends.

  • Magic-link login

    Returning members get a single-use login link that expires in 15 minutes. No passwords to manage.

  • Customer portal

    Members update cards, download invoices, and cancel in Stripe's billing portal.

  • Per-entry restrictions

    Pick products from the editor sidebar. Restrictions are stored by entry ID, so renaming a slug doesn't drop them.

  • Server-side gating

    getAccess() keeps premium text out of the HTML entirely when your template needs a hard wall.

  • One-click Connect

    Connect through Stripe Connect. The key is checked against Stripe and stored encrypted with your site's encryption key.

  • Hardened sessions

    Hashed single-use tokens, server-verified Checkout sessions, and rate limits on every public route.

Two plugins, one idea

Pick your platform.

Both plugins use the same Stripe Connect server and the same access rule, so the experience carries over.

WordPress

Stable

Version 1.0.10

The original plugin. Free to install, built for the block editor and the classic editor.

  • Restrict posts, pages, categories, and tags
  • Stripe Customer Portal link and block
  • Stripe Checkout for one-time and recurring prices
  • Test mode for safe setup

With Stripe Connect, the WordPress plugin adds a 2% application fee to payments, on top of Stripe's processing fees.

Your best writing deserves a price tag.

Install the plugin, connect Stripe, and publish your first paid post today.