$99 for your first mod, $75 for every mod after. Own production-ready source code forever—zero subscriptions, zero platform fees.
HelpfulMods

Operations

Paid Membership and Teams

B2B workspaces, paid seats and secure team invitations.

Upgrade your app to B2B team workspaces and per-seat billing. Give customers role permissions, one-step ownership transfers and expiring email invitations that reserve seats and verify the current Stripe subscription before granting access.

$99 first mod · $75 each additional mod · One-time license

See the included admin workspace

View full-size screenshot

The built-in admin workspace, shown with sample data. Your coding agent adapts the UI to match your app.

Test-drive the live workspace with sample data. Nothing is charged or sent. Your sample workspace lasts up to 15 minutes.

Paid Membership and Teams admin workspace preview, version 1.2.0, using sample data.
Included in version 1.2.0 · Sample data

Example scenario

Team invitations backed by paid seats

A workspace owner invites a teammate. The mod reserves a paid seat, locks the invite to that person's account, and verifies the team's Stripe subscription before granting access.

From setup to the result

  1. Create a workspace with one owner.
  2. Start a subscription checkout for the team's seat count.
  3. Send secure invites that only the intended teammate can accept.
  4. Update access and seat limits when Stripe confirms plan, quantity, renewal, or cancellation changes.

What the package handles

What you can build with it

  • Team roles and expiring invitations that reserve paid seats.
  • Transfer workspace ownership in one step while keeping an owner in place.
  • Team seat counts, plans, and renewals checked against Stripe, with automatic holds on disputed payments.

Included capabilities

  • Team roles, expiring invites for named recipients, seat reservations, and one-step ownership transfers.
  • Per-seat subscription billing, with plan and seat changes checked against Stripe.
  • Current Stripe checks for renewals, invoices, refunds, disputes, and fraud alerts.
  • Queued recipient-bound invitation emails through Resend, with saved delivery receipts and recovery.
  • Billing-owner access to your configured Stripe portal.
  • Invitation history uses bounded pages, so older invitations remain accessible as a workspace's history grows. Membership and billing permissions are checked for each request.

Before you choose

Architecture & Runtime Specs

Who it is for

  • Software products selling access to teams.
  • Paid communities with different membership roles.
  • Client workspaces that need shared billing and separate permissions.

Hosting and connections

V1.2.1

Runs on Node.js 22.13+ and PostgreSQL 17, with a persistent service and background worker for queued work. Deploy on Railway, Render, Fly.io or a VPS configured for those processes.

Self-host on Node.js 22.13+ and PostgreSQL 17 with zero Helpful Mods platform or per-seat fees. Your customer data stays in your database.

Connects directly to your own Stripe accounts with zero middleman fees.

Show the integration

Your app backendPaid Membership and TeamsStripe

Your app calls the mod on your server. The mod saves its records in your database and uses your own provider accounts for the features you enable.

Install the package, run its migrations, configure the mod and start its HTTP service as described in README.md. Set MOD_ORIGIN to the service’s origin. Keep its operator token, customer signing secret and provider keys in your server environment. Use the configured HTTPS service origin in production.

Connect a signed-in customer

Create an organization owned by the verified customer. Your backend verifies the person’s session and workspace membership, then chooses their actorId and tenantId from its own records. The helper signs a 60-second token limited to this mod and the customer role.

Customer request example

Save this helper beside the installed package’s package.json. Call customerRequest from your authenticated backend with that verified customer record. Set HM_AUTH_SECRET to the same private signing secret used by the mod. Do not construct verifiedCustomer from the browser’s request body.

Use the verified account email and a stable operationId saved by your backend for this organization-creation request. Reuse it when retrying a lost response. Organization creation does not buy a plan.

import { signToken } from './dist/core/auth.js';

export async function customerRequest(verifiedCustomer) {
  const token = signToken({
    aud: 'helpfulmods', sub: verifiedCustomer.actorId,
    tenant: verifiedCustomer.tenantId, role: 'customer', mods: ['teams'],
    exp: Math.floor(Date.now() / 1000) + 60, external: false,
  }, process.env.HM_AUTH_SECRET);
  const response = await fetch(new URL('/api/teams/commands/create', process.env.MOD_ORIGIN), {
    method: 'POST', redirect: 'error', credentials: 'omit',
    signal: AbortSignal.timeout(10000),
    headers: { Authorization: 'Bearer ' + token, 'Content-Type': 'application/json' },
    body: JSON.stringify({ name: 'Example workspace', email: verifiedCustomer.email, requestKey: verifiedCustomer.operationId }),
  });
  if (!response.ok) throw new Error('Customer request failed: ' + response.status);
  const result = await response.json();
  return result;
}

Check the service from your private admin backend

Read the saved organizations, billing activity and worker status. This uses the installation’s operator credential for a private administration check. Your backend checks staff permissions before making this request.

Administration request example

Save this as integration-example.mjs and run node --env-file=.env integration-example.mjs. Set HM_API_TOKEN to the private operator token used by the service. These requests do not send email, take payment or call an AI model.

const origin = process.env.MOD_ORIGIN;
const token = process.env.HM_API_TOKEN;
if (!origin || !token) throw new Error('Set MOD_ORIGIN and HM_API_TOKEN');
const response = await fetch(new URL('/api/teams/state', origin), {
  method: 'GET', redirect: 'error', credentials: 'omit',
  signal: AbortSignal.timeout(10000),
  headers: { Authorization: 'Bearer ' + token },
});
if (!response.ok) throw new Error('Mod request failed: ' + response.status);
console.log(await response.json());

A useful handoff to your coding agent

How setup works

Point your coding agent at README.md and setup/SKILL.md. The zip includes architecture docs, an integration guide, an error reference, and automated checks so your agent can work directly from the source package. Live provider setup connects to your own accounts.

  1. Architecture scan. Your coding agent inspects your codebase, routes, database and authentication, then plans how to connect the mod.
  2. Answer a few quick questions. Your agent asks how you want the feature configured and connects your API keys in your private environment.
  3. Run the tests and go live. Your agent runs the included verification suite, checks the customer workflow and tests your connected services before launch.

What your agent will ask you during setup

  • Which Stripe subscription prices, per-seat amounts, and currencies define your plans?
  • How many seats can a team have, and how long should invitations last?
  • How does your app identify logged-in user accounts for workspace owners and invited teammates?
  • Where should Stripe return customers after checkout?

What your agent checks

  • Confirm that only the intended recipient can accept an invite and that competing requests cannot exceed the team's paid seats.
  • Transfer ownership and confirm that the workspace still has one owner.
  • Test downgrades, expired subscriptions, failed payments, and separation between team workspaces.

Focused Scope & Extensibility

Included scope, capacity and customization
  • Per-seat Stripe subscriptions connect workspace billing and invitations. Enterprise SSO, metered billing, custom tax calculation, prorated in-app upgrades and multi-seller billing can be added to your app.
  • Your app handles sign-in and identifies the owner and each invited account, so invitations stay tied to their intended recipient.
  • Support up to 100 seats per workspace. Access pauses when a subscription lapses or the team exceeds paid seats, and resumes when resolved. Invitation history is paged; checkout and payment-risk histories keep their documented maintenance limits.

Before you decide

Will this work with my existing app?

Yes. Each mod runs as a service alongside your existing app, whether you use Next.js, Rails, Django, Laravel, Go, Express, or another backend stack. Your backend makes HTTP requests and passes verified customer identities; your coding agent wires up the connection. This mod runs on Node.js 22.13+ and PostgreSQL 17 on a host that supports a persistent Node.js process.

What will my agent need from me?

Access to your codebase, your answers to the setup questions above, and API keys for any connected services. Store keys in your own private .env environment or secret manager.

What happens if setup fails?

The included setup/error-reference.json gives your coding agent error explanations and recovery steps. Every purchase includes 30 days of direct setup support and 12 months of bug and security updates. If a material defect cannot be fixed, our refund policy provides a full refund.

Is this a subscription?

No. You pay once ($99 for your first mod, $75 for each additional mod) and can use and modify the source code in your product forever. Includes 12 months of bug and security updates, with zero recurring Helpful Mods fees.

How do I buy this mod?

Add this mod to your cart and pay through Stripe Checkout. Instant delivery: Download your complete source zip, SQL migrations, and agent setup prompts the second Stripe confirms checkout.

Can I invite teammates by email?

Yes. Configure Resend to send recipient-bound invitations. Saved delivery receipts support recovery after an interrupted send; the recipient and paid-seat checks still determine who can join.

Can the billing owner manage the subscription?

The billing owner can open your configured Stripe portal from your app. The mod checks the resulting subscription and seat state before updating team access.

SHIP IT TODAY

Save weeks of plumbing on Paid Membership and Teams.

Add Paid Membership and Teams to your cart for $99 ($75 if it is an additional mod), or ask Mallow a technical question before you buy.