Pricing

Simple monthly plans. Predictable overage. The Free tier is hard-capped so a runaway loop never lands a four-figure bill.

Free

€0 forever

Try paperjet, prototype an integration, ship a side project.

  • 100 PDFs / month (hard cap)
  • Inline source + JSON data
  • Self-service API keys
  • Render history (24 h)
Start free

Hobby

€9 / month

then €0.01 / extra PDF

Side projects on the way to becoming companies.

  • 1 000 PDFs / month included
  • Templates from R2 bucket
  • Idempotency keys
  • Email support
Pick Hobby

Pro

Popular
€29 / month

then €0.005 / extra PDF

Production apps that need accessible, compliant PDFs.

  • 10 000 PDFs / month included
  • PDF/UA-1 accessibility tags
  • Render history 30 d
  • Priority webhook delivery
Pick Pro

Scale

€99 / month

then €0.003 / extra PDF

High-volume SaaS — invoices, statements, contracts.

  • 50 000 PDFs / month included
  • Higher rate limits (3000/min)
  • Render history 90 d
  • Slack support
Pick Scale

Need more, or something custom?

Enterprise: SLA 99.95%, dedicated capacity, custom rate limits, BYO regions, NDA.

Talk to us →

Common questions

What happens at the Free tier cap?
The 101st render of the month returns 429 with a clear message. Move to a paid plan to lift the cap and pay the cents-per-PDF overage rate. No automatic upgrade, no surprise charges.
How is overage billed?
Per-PDF, metered through Stripe Billing Meters. Each render fires one event, de-duplicated by render id so retries never double-bill.
Can I switch plans?
Anytime, both directions. Upgrades take effect immediately; downgrades at the next billing cycle.
Do you store rendered PDFs?
By default no — the response is the PDF, your code keeps it. The render-history endpoint (/v1/renders) only stores metadata (size, status, duration). Optional R2 archival is on the roadmap for paid tiers.
Where does the data live?
D1 (metadata) and R2 (templates) in Cloudflare's EU region group. Containers run on the Cloudflare network. RGPD-compliant — IP addresses truncated, emails masked in logs.