TL;DR
Payload CMS 3.0 + the official SaaS Starter is the only boilerplate that gives you a full admin panel for free — because the CMS IS the admin panel. Payload 3.0 runs directly inside Next.js with no separate backend service. The SaaS Starter wraps it with Stripe, Auth.js, and a landing page. The result: a CMS-first boilerplate where content editors, admins, and developers share one interface. Ideal for content-heavy SaaS products (course platforms, CMS tools, content marketplaces). Overkill if you don't need flexible content modeling.
Key Takeaways
- Type: Free, open source (MIT) — Payload CMS is free, starter template is free
- Stack: Next.js 15, Payload CMS 3.0, MongoDB or Postgres, Auth.js, Stripe, Tailwind
- Core value: CMS = admin panel — no separate admin UI to build
- Best for: content-heavy SaaS, platforms needing flexible data modeling, apps where non-devs manage content
- Not ideal for: pure app-logic SaaS where you don't need content management
- Price: Free (MIT)
What Makes Payload Different
In Payload 3.0, the CMS runs as part of your Next.js app:
Traditional setup:
Next.js app → REST/GraphQL → separate admin panel
Payload setup:
Next.js app (includes Payload CMS + admin UI)
→ /admin = Payload admin panel
→ /api/payload = Payload REST API
→ All in one Next.js deployment
No separate services. No separate deploys. The admin panel comes with:
- User management with roles
- Media library
- Content collections (your custom data models)
- Access control rules
- Custom fields (rich text, blocks, relationships, arrays)
Tech Stack
Framework: Next.js 15 (App Router)
CMS: Payload CMS 3.0 (runs inside Next.js)
Database: MongoDB or PostgreSQL (with Drizzle adapter)
Auth: Payload's built-in auth OR Auth.js
Payment: Stripe (subscriptions in SaaS Starter)
UI: Tailwind CSS
Email: Resend or Nodemailer
Deployment: Vercel, Railway, Render
Payload Collections (Data Modeling)
Payload's killer feature is flexible data modeling via Collections:
// collections/Users.ts
import type { CollectionConfig } from 'payload/types';
export const Users: CollectionConfig = {
slug: 'users',
auth: true, // Payload handles auth for this collection
admin: {
useAsTitle: 'email',
},
fields: [
{
name: 'name',
type: 'text',
required: true,
},
{
name: 'role',
type: 'select',
options: ['admin', 'user', 'editor'],
defaultValue: 'user',
},
{
name: 'subscription',
type: 'group',
fields: [
{ name: 'plan', type: 'text' },
{ name: 'stripeCustomerId', type: 'text' },
{ name: 'status', type: 'text' },
],
},
],
};
// collections/Courses.ts — example content collection
export const Courses: CollectionConfig = {
slug: 'courses',
access: {
read: ({ req }) => {
// Free courses: public. Premium: require subscription
if (req.user?.subscription?.plan === 'pro') return true;
return { free: { equals: true } };
},
},
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'description', type: 'richText' },
{ name: 'free', type: 'checkbox', defaultValue: false },
{
name: 'lessons',
type: 'array',
fields: [
{ name: 'title', type: 'text' },
{ name: 'videoUrl', type: 'text' },
{ name: 'duration', type: 'number' },
],
},
],
};
This automatically creates:
- Admin UI for managing courses
- REST API at
/api/courses - Full access control enforcement
Admin Panel (It's Just Payload)
The /admin route provides a fully-featured admin panel out of the box:
- User management (list, create, edit, delete)
- Content management for all collections
- Media uploads (S3, local, Cloudinary)
- Role-based access control
- Audit log (built-in)
No separate admin dashboard to build or maintain.
SaaS Starter Additions
The official Payload SaaS Starter adds:
// Stripe integration:
// - Checkout session creation
// - Customer portal
// - Webhook handling (updates user.subscription in Payload DB)
// Landing page:
// - Hero section
// - Features section
// - Pricing page (reads plans from config)
// - CTA sections
// Auth flow:
// - Email/password via Payload auth
// - Email verification
// - Password reset flow
What's Included vs Missing
| Feature | Status |
|---|---|
| Admin panel | ✅ (Payload CMS) |
| Content management | ✅ Core |
| Role-based access | ✅ |
| Stripe subscriptions | ✅ |
| Landing page | ✅ |
| Authentication | ✅ |
| Media library | ✅ |
| REST + GraphQL API | ✅ Auto-generated |
| tRPC | ❌ (REST/GraphQL instead) |
| Multi-tenancy | Partial (custom) |
| Teams/Organizations | ❌ |
Payload vs Other Boilerplates
| Payload Starter | ShipFast | T3 Stack | |
|---|---|---|---|
| Admin panel | ✅ Free (Payload) | ❌ | ❌ |
| Content modeling | ✅ | ❌ | ❌ |
| CMS features | ✅ | ❌ | ❌ |
| Landing page | ✅ | ✅ | ❌ |
| Price | Free | $299 | Free |
| Complexity | High | Medium | High |
| tRPC | ❌ | ❌ | ✅ |
Who Should Use Payload Starter
Use Payload Starter if:
→ Building a content-heavy SaaS (courses, newsletters, CMS tools)
→ Need an admin panel without building one
→ Want flexible data modeling (nested fields, relationships, blocks)
→ Non-developers need to manage content
→ Self-hosting on a VPS/Railway/Render
Skip Payload Starter if:
→ Building a pure application (todo app, analytics tool, etc.)
→ Need tRPC or strictly typed API layer
→ Want the simplest possible setup
→ Need React Native companion app
Verdict: Payload Starter is excellent for content-heavy SaaS where you'd otherwise spend weeks building an admin panel. The free admin UI alone justifies choosing it for the right use case. Avoid it for pure-app SaaS where the CMS overhead isn't justified.
Getting Started with Payload SaaS Starter
# Clone the official Payload SaaS Starter
git clone https://github.com/payloadcms/payload-saas-starter my-saas
cd my-saas && pnpm install
# Copy and configure environment
cp .env.example .env
# Configure:
# DATABASE_URI=mongodb://localhost:27017/my-saas
# PAYLOAD_SECRET=your-secret-key-here
# NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...
# STRIPE_SECRET_KEY=sk_test_...
# RESEND_API_KEY=re_...
pnpm dev # → localhost:3000 (app) + localhost:3000/admin (Payload admin)
Payload's admin panel is available at /admin immediately. The first user you create becomes the super-admin. Unlike apps that need to configure a separate admin role system, Payload handles this natively through its built-in access control on collections.
Payload vs ShipFast for Content-Heavy SaaS
| Feature | Payload Starter | ShipFast |
|---|---|---|
| Admin panel | ✅ Full (Payload CMS) | ⚠️ Basic dashboard |
| Content management | ✅ Custom collections | ❌ |
| Database | MongoDB or PostgreSQL | MongoDB or Supabase |
| Auth | Payload built-in | NextAuth.js |
| Price | Free (MIT) | $199 |
| Complexity | High | Medium |
| Best for | Content platforms | B2C tools |
Payload wins decisively when content management is central to the product. ShipFast wins when you need a faster setup for a pure-app SaaS without content management requirements.
Key Takeaways
- Payload CMS 3.0 runs inside Next.js as a first-class integration — no separate backend service, no separate deploy
- The
/adminpanel is the killer feature: user management, content management, media library, and audit logs without building any admin UI - Flexible collection system allows complex data models (nested fields, relationships, rich text, arrays) with automatic REST + GraphQL API generation
- Free and MIT-licensed — the entire stack including the CMS admin panel costs nothing
- The MongoDB-or-PostgreSQL choice is made at setup time; PostgreSQL via Drizzle is the better choice for teams who want relational data with referential integrity
- Best use case: course platforms, newsletter tools, CMS-as-a-service products, or any SaaS where non-developers need to manage content
- Avoid Payload for pure-app SaaS (analytics tools, productivity apps, task managers) where the CMS overhead adds complexity without benefit
- The Payload community has grown significantly since 3.0's release — active Discord with Payload team members responding directly to questions
- Payload's access control system is field-level, not just collection-level: you can hide specific fields from specific user roles, enable read-only fields for certain roles, and restrict field values based on the requesting user's properties — more granular than most admin panel alternatives
- Vercel deployment works for Payload 3.0 but requires careful setup: the admin panel's file uploads need external storage (S3 or Cloudinary) since Vercel's filesystem is ephemeral; Railway or Render with persistent volumes are simpler for media-heavy products
- Payload's auto-generated REST and GraphQL APIs are production-ready and eliminate the need to hand-write API route files for CRUD operations — the collection definition generates both the admin UI and the API simultaneously
When Payload's CMS Architecture Becomes a Liability
Payload's strengths become liabilities in specific scenarios. Understanding these prevents the mismatch problem that happens when you choose the wrong tool for the job.
The admin panel is Payload's biggest feature, but it's also a constraint: the admin UI is Payload's UI, not yours. If your SaaS requires a highly customized internal tooling interface — custom charts, embedded maps, drag-and-drop workflow editors — you'll be building that separately anyway, which removes the admin panel advantage. Products where the primary admin task is CRUD management of structured data (content, users, subscriptions, media) are Payload's sweet spot. Products where admins need custom visualization or workflow tooling get less value from Payload's built-in panel.
The CMS overhead also matters for simpler products. A straightforward SaaS tool (URL shortener, uptime monitor, invoice generator) doesn't need flexible content modeling or a rich admin panel. The Payload collection system, while powerful, adds conceptual overhead that ShipFast or T3 Stack don't carry. For a product where your data model is known upfront and unlikely to need flexible schema changes, Payload's flexibility is complexity you're paying for without using.
The MongoDB-vs-PostgreSQL choice, while flexible at setup time, can become a constraint if you change your mind later. The Payload team recommends PostgreSQL for most production applications, but the migration between adapters requires migrating data, not just changing a config option. Make the database choice deliberately at the start.
Finally, Payload's community is significantly smaller than ShipFast, T3 Stack, or Makerkit. When you encounter a specific configuration question or a Payload-specific bug, the community-answered content is sparser. The Payload team is active in their Discord and GitHub issues, but the self-service answer rate is lower than boilerplates with larger communities.
Payload's Real Competitive Advantage
Despite these constraints, Payload's admin panel advantage is real and significant in the right context. The comparison that makes it clearest: building a course platform.
A course platform needs: course content management (titles, descriptions, video URLs, lesson sequences), user progress tracking (which lessons completed), access control (free vs premium courses), and an admin interface to add and update course content without developer involvement.
With ShipFast, T3 Stack, or Makerkit, you build the content management interface yourself — typically 2-3 weeks of admin panel work. With Payload Starter, you define a Course collection and a Lesson subcollection, and Payload's admin panel handles the content editing interface immediately. A non-developer content editor can add courses and lessons through the admin panel on day one.
For this use case — or any CMS-adjacent product — Payload Starter compresses the admin panel development time to near zero. That's the core value proposition, stated precisely.
The boilerplate that works best is the one your team can productively extend. Documentation quality, community activity, and the clarity of the codebase architecture matter as much as the feature list when you're making the decision for a product you'll maintain for years.
Compare Payload Starter with other SaaS boilerplates on StarterPick.
See our best free open source SaaS boilerplates guide for other free alternatives.
Browse best SaaS boilerplates 2026 for the full comparison including paid options.
See how Payload compares to dedicated CMS options in Payload CMS vs Strapi vs Sanity starter comparison.