FAQ
Frequently asked questions
Honest answers to the things prospects and trial users actually ask. Don't see your question? Email support — we read every message.
Getting started
Pluma turns any PDF into a fillable form you drive from a REST API. Upload a PDF (an invoice template, a contract, a government form), draw fields on top, then POST JSON to /api/v1/.../templates/<id>/generate to get a filled PDF back. Designed for teams that need to generate a lot of structurally-similar documents without writing PDF code.
No. The Free tier gives you 10 renders/month, 1 workspace, and 5 templates — enough to confirm Pluma fits your workflow before you spend a euro. No card on file, no auto-upgrade.
Five minutes to a working render. Sign up → upload a PDF → click to add a few fields → generate an API key → POST your first JSON. Most people produce their first filled PDF inside 10 minutes.
Plans & billing
Free: 1 MB per rendered PDF, max 6 pages per template. Advanced: 5 MB, no page limit. Pro: 10 MB, no page limit. Enterprise: 50 MB, no page limit. Rendering above your cap returns HTTP 413 with a clear upgrade hint — never a silent truncation. See the pricing page for the full comparison.
On Free: it's a hard cap — further renders return HTTP 402 until the quota resets on the 1st of the next month, or you upgrade. On paid plans: overage renders bill from a prepaid balance at €0.02 per render. You can top up the balance from your Billing page; we email you before it runs out.
Yes. Upgrades take effect immediately and are prorated. Downgrades take effect at the end of the current billing period (you keep what you paid for). Cancellation is one click in the Stripe customer portal we link from your Billing page — no email, no retention call.
Yes — annual prepay gives you two months free (10× the monthly price for 12 months of service). Toggle "Annual" on the pricing page to see the comparison.
Data & retention
Templates stay as long as your subscription is active — we never delete them while you are paying. Rendered PDFs have a tier-based retention TTL (Free 30 min, Advanced 7 d, Pro 30 d, Enterprise 90 d); pull the file or store the bytes yourself if you need it longer. Free plans: if a workspace goes 11 months with no logins and no API renders, we send a warning email. At 12 months, we delete the workspace's templates and uploaded files from storage and deactivate the workspace. Your user account stays — you can sign in and start fresh on Free anytime.
In the European Union (Hetzner Object Storage, Nuremberg). PDFs are private — only readable via a short-lived presigned URL we generate for the requesting tenant. We never share template content or rendered PDFs with third parties.
Yes. From your account page, click "Download my data" — owners get a JSON export with profile + tenant data (templates with field definitions, schemas, API key metadata, usage records, plus short-lived presigned URLs for source PDFs and field images). Plain JSON, no Pluma-specific lock-in. Rendered PDFs aren't bundled — pull them via the response URL or GET /renders/:id/url within their retention TTL. After export you can downgrade to Free (data dormant) or delete the workspace entirely (24-hour grace window before permanent removal).
API & integrations
The render API is plain HTTP + JSON, so anything that speaks HTTP works — curl, Postman, every backend language. There are no language SDKs yet; the OpenAPI 3.1 spec at /openapi.json is kept current, so you can generate a typed client for your stack with any OpenAPI generator. See /docs for examples.
In the Webhooks settings page, add a destination URL and pick the events you care about (job.completed, job.failed, signature.signed, etc. — the full catalog is in the docs). We POST a signed JSON body to your URL with retry-on-failure (5 attempts, exponential backoff). See /docs#webhooks for the payload schema and signature verification.
Yes — POST a job to /api/v1/:workspace/jobs with a templateId and an array of input rows. We render them in parallel, collect them into a ZIP, and webhook you when it's done (or you poll the job status endpoint). Designed for batch sizes up to 10,000 rows on Pro and Enterprise.
Security & compliance
Two layers. (1) Application-layer tenant scoping on every query (workspaceId + tenantId on every record). (2) PostgreSQL Row-Level Security — even if a bug bypassed the application check, RLS would block cross-tenant reads at the database. We rotate the per-tenant DB role password on boot. Render output is per-tenant and never crosses workspaces.
Yes. Pluma is operated from Germany under EU law. We provide a Data Processing Agreement (DPA), keep all data in the EU, support every data-subject right (access, rectification, erasure, portability), and run a documented retention policy. See /privacy for the full policy and /dpa to download our standard DPA.
Self-hosting
Yes. Self-hosted Pluma is a single Docker container — bring your own Postgres (or use the bundled SQLite for a single-team install), give it a license key for paid features. No SMTP, no email provider, no external services required: member invites are delivered as copy-paste links inside the app. We publish the image on Docker Hub. See the Self-Host page for the 5-minute install.
Same product, same features (gated by your license tier). Hosted is a SaaS we operate — you get auto-updates, backups, and our render cluster. Self-hosted runs on your infrastructure — you control the data and uptime. Self-hosted Pro adds the Publish feature: export a workspace as a standalone renderer image you can deploy to your own customers.
Support
Sign into Pluma → click your avatar in the top-right → "Get help" opens the support page where you can open a ticket and see its history. Free tier replies in 3-5 business days; Advanced is email next-business-day; Pro is priority; Enterprise has an SLA you negotiate at signup. For quick lookups, you're already on the right page — the FAQ.
Still stuck?
Open a support ticket from inside the app, or email us — we'd rather you get an answer than guess.