Set up Stripe

Connect Stripe in test mode, run a test subscription end to end with a test card, then switch the same site to live.

Stripe takes the money. Publisher never sees a card number: checkout and the billing portal are both hosted by Stripe, and everything that follows — invoices, receipts, failed-payment retries, cancellations — is Stripe’s job. Your site only listens for what Stripe tells it.

Do this in test mode first. A test subscription costs nothing, proves the whole chain works, and can be thrown away.

1. Create the Stripe account

Sign up at stripe.com. You can connect and test long before your account is approved for live payments — the business details, bank account and identity checks only gate the live keys.

2. Connect in test mode

  1. In the Stripe dashboard, turn on the Test mode toggle (top right).
  2. Go to Developers → API keys, find Secret key, and click Reveal. It begins with sk_test_.
  3. In WordPress, go to OwlDraft → Membership → Stripe.
  4. Set Mode to Test mode, paste the key into Secret key, and click Connect.

Publisher validates the key and installs its own webhook at Stripe for you — three events: checkout.session.completed, customer.subscription.updated and customer.subscription.deleted. There is nothing to paste back. When it works, the card reads Connected to … · test mode · Webhook active.

A restricted key (rk_…) works too, if you would rather scope it: write access to Customers, Checkout, Billing Portal, Products, Prices and Webhook Endpoints, and read on Subscriptions and Events.

Keys in wp-config

As with Resend, a key is better kept out of the database:

define( 'OWLDRAFT_PUBLISHER_STRIPE_KEY_TEST', 'sk_test_xxxxxxxx' );
define( 'OWLDRAFT_PUBLISHER_STRIPE_KEY_LIVE', 'sk_live_xxxxxxxx' );

The field then says the key is defined in wp-config.php and cannot be set on screen. Press Connect anyway — that is what validates it and installs the webhook.

3. Make sure you have something to sell

You need at least one paid tier with a price before checkout has anything to show. If you have not set them up yet, do tiers now and come back.

Each tier you save while Stripe is connected creates the matching product and prices at Stripe automatically. In test mode they are created in your test data, and they do not carry over when you go live — the live products are created the same way, the first time you save a tier with the live key connected.

4. Run a test subscription

  1. Open your site in a private window, so you are not signed in as the admin.
  2. Go to your Sign up page and choose a paid tier.
  3. At Stripe’s checkout, pay with the test card:
Field Value
Card number 4242 4242 4242 4242
Expiry any future date
CVC any three digits
Postcode any
  1. You should land on your Welcome page as a paying member.

Now check all three sides:

  • Members in WordPress shows the reader on the paid tier.
  • OwlDraft → Membership → Stripe shows a recent Last event received.
  • A paid post opens for that reader and is still gated in another browser.

Worth testing too: on the reader’s Account page, Manage billing should open Stripe’s hosted portal, where they can change card or cancel. Cancel there, and within moments WordPress should show them demoted.

If the member never appears, the webhook is the thing to suspect. Your site must be reachable over HTTPS from the public internet — Stripe cannot deliver to localhost, to a site behind HTTP basic auth, or to a staging box with no certificate. Resync from Stripe on the same screen pulls the current state in by hand and is the quickest way to tell a webhook problem from a key problem.

5. Go live

  1. Get your Stripe account approved for live payments (business details and bank account).
  2. Turn Test mode off in the Stripe dashboard and copy the live Secret keysk_live_….
  3. In OwlDraft → Membership → Stripe, set Mode to Live mode, paste the live key, and Connect. A live webhook is installed the same way.
  4. Save each of your tiers once, so their products and prices exist in live data.
  5. Run one real subscription with your own card, then refund it from the Stripe dashboard.

Once the site has real paying members it will refuse to go back to test mode — a test key cannot see live subscriptions, and the next sync would demote everybody.

Next: set up Google Analytics.

Last updated September 13, 2026

Something missing or out of date? Ask us and we will fix the page.