Payload CMS Pricing: Cloud vs Self-Hosted Real Bill
The real Payload CMS pricing math: free MIT core, managed Cloud vs self-hosting, infrastructure ranges, and the admin hours nobody budgets for.

Payload CMS Pricing: Cloud vs Self-Hosted Real Bill
Payload CMS pricing starts with a free, MIT-licensed open-source core, then splits into two very different bills: managed Payload Cloud and the self-hosted infrastructure you assemble yourself. The line item most teams argue about — infrastructure — is usually the smaller half of the real number; the unbilled build and admin hours are the rest.
Payload CMS pricing: the zero-dollar core and what still costs money
The core software is $0. Payload is free, open source, and MIT-licensed, with no per-seat license fee to run the CMS itself. As KVY Technology puts it, Payload does not have a price — but that is not the same thing as being free to operate.
G2 lists four Payload CMS pricing editions starting at $0, which matches the open-source license. The $0 includes the admin UI, API, auth, access control, and collections. What it does not include:
- A place to run the Node.js app
- A Postgres or MongoDB database
- Media storage and a CDN
- Transactional email for password resets or notifications
- Preview and staging environments
- Backups and restore rehearsals
- The time to model content, weld auth, and debug migrations
Payload Cloud vs self-hosted: two bills side by side
The decision is managed Payload Cloud vs self-hosted infrastructure. Use the Payload CMS pricing calculator for Cloud Standard and Cloud Pro when you want the current managed plan math, because Cloud is priced per project with metered overages, not as a traditional per-seat Contentful-style license.
Cost line | Self-hosted | Payload Cloud |
|---|---|---|
Software license | $0 | Included |
Node.js compute | $0–25/mo Vercel or $5–40/mo Docker | Per project plan |
Database | $0–30/mo Postgres or Mongo | Included or metered |
Media storage/CDN | $0–20/mo S3 or R2 | Included or metered |
Email adapter | $0–20/mo Resend or Postmark | Bring your own adapter |
Preview/staging | $0–25/mo extra environment | Depends on plan |
Backups | $0–25/mo DIY | Usually included in managed |
Admin/dev time | Largest line item | Lower |
Self-hosted cost walkthrough: Vercel, Docker, Postgres, Mongo, S3/R2
If your frontend is Next.js, the lean production stack is Payload on Vercel plus managed Postgres plus Cloudflare R2 or S3. A small production site can run for roughly $20–$70/month before accounting for your time.
Stack | Stage | Typical monthly range |
|---|---|---|
Vercel Pro | Production compute | $20–$25/mo |
Neon or Supabase | Postgres database | $0–$19/mo |
Cloudflare R2 or S3 | Media storage and CDN | $0–$5/mo |
Resend or Postmark | Transactional email | $0–$20/mo |
Lean total | Small production | $20–$69/mo |
If you need Docker, a comparable stack on Railway, Render, or Fly with MongoDB Atlas lands in roughly $30–$110/month depending on traffic, staging, and backup retention.
Stack | Stage | Typical monthly range |
|---|---|---|
Railway/Render/Fly | Node.js app | $5–$25/mo |
MongoDB Atlas | Database | $0–$30/mo |
S3 or Cloudflare R2 | Media storage | $1–$10/mo |
Resend or Postmark | $0–$20/mo | |
Docker total | Small production | $6–$85/mo |
For a self-hosted Docker + Mongo baseline, this is the kind of file that anchors the stack:
# docker-compose.yml — Payload + MongoDB for staging/prod
services:
payload:
build: .
ports:
- '3000:3000'
env_file: .env
depends_on:
- mongo
mongo:
image: mongo:7
volumes:
- mongo-data:/data/db
volumes:
mongo-data:Media and email are where the bill hides. Wire them explicitly:
// payload.config.ts — S3/R2 media + Resend email
import { buildConfig } from 'payload'
import { s3Storage } from '@payloadcms/storage-s3'
import { resendAdapter } from '@payloadcms/email-resend'
export default buildConfig({
plugins: [
s3Storage({
collections: { media: true },
bucket: process.env.S3_BUCKET!,
config: {
endpoint: process.env.S3_ENDPOINT, // set this for R2
region: process.env.S3_REGION,
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY_ID!,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
},
},
}),
],
email: resendAdapter({
defaultFromAddress: 'noreply@yourdomain.com',
defaultFromName: 'Your App',
apiKey: process.env.RESEND_API_KEY!,
}),
})If you are wiring Payload into a Next.js app, our how to use Payload CMS with Next.js guide shows the app-pattern that keeps the server and frontend bill predictable.
The stages that actually create the bill
The honest Payload CMS pricing math is per-stage, not just per-host. For a founding team, the ranges most projects actually hit are:
Stage | What you are buying | Realistic range |
|---|---|---|
Initial build | Content model, collections, auth, preview, email adapter | $0 license, many hours |
Staging/preview | Extra environment or preview deployment | $0–$25/mo |
Production hosting | Managed Cloud or self-host | Self-host $20–$100/mo; Cloud by plan |
Media storage/CDN | S3, R2, or managed storage | $0–$20/mo |
Email adapter | Password reset, invitations, notifications | $0–$20/mo |
Backups | Snapshots, exports, restore tests | $0–$25/mo |
Admin overhead | Migrations, upgrades, debugging, content support | The bill nobody quotes |
The admin time nobody budgets
For small teams, the infrastructure line usually ends up around half the number founders expect. The other two-thirds of the real bill is development and admin time: data model changes, access-control rules, draft preview, media transforms, email flows, S3/R2 adapter setup, backup restore rehearsals, and Payload upgrades.
If you are pricing Payload CMS pricing decisions, price your team’s hours in the same spreadsheet as the VPS. A $30/month infrastructure stack is not cheaper than managed hosting if your lead spends a week getting live preview and password reset email working.
If you do not want to spend those hours in-house, our web build team handles Payload data modeling, auth, media, email, and deployment as a scoped build. If you are still comparing the build pattern, start with our Payload CMS with Next.js guide.
When managed hosting stops being worth the premium
Payload Cloud earns its premium for a team with no DevOps hours, one production project, and enough launch pressure that included backups and staging are worth more than the monthly delta. It stops being worth it when you already deploy to Vercel or Docker comfortably, when you run multiple tenants, or when metered overages push your Cloud bill past fixed self-hosted infrastructure.
Self-hosted open-source solutions can be order-of-magnitude cheaper than managed platforms when serving thousands of tenants. In the common Sanity vs Payload pricing comparison, Payload’s free software is the deciding line: you are not paying a per-seat CMS tax, only the infrastructure.
FAQ
Is Payload CMS actually free?
Yes. The core is free, open source, and MIT-licensed, with no per-seat software fee. You still pay for hosting, database, media storage, email sending, backups, and the time to run it.
How much does self-hosting Payload cost per month?
A lean Vercel + Postgres + R2 + Resend stack usually runs about $20–$70/month. A Docker + MongoDB Atlas + S3 stack can run about $30–$110/month once you include staging, backups, and transactional email.
Payload Cloud vs self-host: which is cheaper long-term?
For one project with no DevOps time, managed Payload Cloud can be cheaper once you honestly bill admin hours. For multiple projects, high traffic, or an existing Vercel/Docker workflow, self-hosting usually becomes cheaper because the software is free and the infrastructure scales without a per-project premium.