papermint

Launch offer · $199 lifetime access · limited time

Branded invoice PDFsin seconds. Code optional.

Developers send one POST request: JSON or a raw Stripe payload in, a locale-aware PDF out, nothing stored. Everyone else uses the free no-code designer below. Both get the same five templates.

Free renders are watermarked. No signup, no credit card.

median round trip, measured
~0.5s
median round trip, measured
of your data stored
0 bytes
of your data stored
locales and currencies
40+
locales and currencies
deterministic output
100%
deterministic output

Design an invoice right now

Use the controls, or edit the JSON directly if that is your thing. Free, watermarked, no signup. This playground is the actual API.

Accent
Logo
Locale
Currency
Paper
Payment link (adds QR)
invoice.json
PDF preview (watermarked)
Rendering your first preview…

From data to document in one round trip

01

Send your data

POST invoice JSON, or forward the raw Stripe invoice, payment_intent, or checkout.session payload straight from your webhook.

02

We render it

Deterministic pdf-lib layout in a plain Node function. Totals computed in integer cents, text wrapped and paginated, your logo and accent color applied.

03

You get PDF bytes

Email it, archive it, stream it to the browser. Nothing is stored on our side; the same request always produces the same bytes.

Five templates, zero design work

These are real, unretouched renders from the engine. Send a logo and an accent color and every document comes out on-brand.

Clean invoice template rendered by Papermint

Clean

Accent color band, alternating rows. The default for SaaS and agencies.

Classic invoice template rendered by Papermint

Classic

Centered letterhead and ruled tables. Formal, conservative, timeless.

Bold invoice template rendered by Papermint

Bold

Full-width accent header. Shown here with the QR payment block.

Minimal invoice template rendered by Papermint

Minimal

Hairlines and whitespace. The accent appears only where money is due.

Receipt invoice template rendered by Papermint

Receipt

80mm thermal-style with dynamic height. Perfect for point-of-sale flows.

Your Stripe webhook already has everything. Turn it into an invoice.

Customers pay through Stripe, then ask for a proper invoice PDF with your logo, their VAT ID, and correct totals. Instead of building a PDF pipeline, forward the payload you already receive to /api/v1/from-stripe. Papermint maps line items, taxes, and amounts for you, to the cent.

  • ✓ Works with invoice, payment_intent, and checkout.session payloads
  • ✓ Supports current and legacy Stripe API payload shapes
  • ✓ No 0.4% per-invoice fee, flat monthly pricing
  • ✓ Zero-decimal currencies (JPY, KRW) handled correctly
  • ✓ payment.url adds a scannable QR code and clickable pay link to the PDF
// Inside your Stripe webhook handler: the payload you
// already receive is the input. No re-fetching, no mapping code.
const res = await fetch("https://papermint.dev/api/v1/from-stripe", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PAPERMINT_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    stripe_object: event.data.object,   // invoice | payment_intent | checkout.session
    seller: {
      name: "Acme Studio LLC",
      addressLines: ["100 Market St", "San Francisco, CA 94105"],
      vatId: "US-EIN 88-1234567",
    },
    overrides: { branding: { accentColor: "#10b981" } },
  }),
});
const pdf = await res.arrayBuffer();

Ships in the time it takes to read this

One endpoint, standard HTTP. Works from any language, queue, or cron job.

curl -X POST https://papermint.dev/api/v1/invoice \
  -H "Authorization: Bearer $PAPERMINT_KEY" \
  -H "Content-Type: application/json" \
  -d @invoice.json \
  --output invoice.pdf

An honest comparison

General HTML-to-PDF services are great at what they do. Papermint only does invoices, which is exactly why it needs no template work and no browser.

 PapermintHTML-to-PDF servicesDIY Puppeteer
Rendering engineDeterministic pdf-lib, invoice-specificHeadless browser or Prince, generic HTMLPuppeteer + Chromium you maintain
Serverless cold startNone (plain Node function)n/a (their servers)10-15s Chromium boot, bundle-size limits
Stripe payload mappingBuilt in (/from-stripe)You write itYou write it
Template work requiredNone: 3 templates, logo + accent colorDesign and debug print CSSDesign and debug print CSS
Your invoice dataNever storedVaries by vendorStays in your infra
Pricing modelFlat monthly, no per-invoice feesMetered documentsYour engineering time

Built to be trusted with billing data

Nothing stored

Rendering is stateless. Invoice data lives in the request and dies with the response.

Signed webhooks

Every Stripe event is verified against its signature before anything happens.

Scoped API keys

Keys are bound to your billing account and validated in constant time on every call.

Predictable failure

Structured errors with exact field paths. Over quota returns 429; nothing silently degrades.

Flat pricing, no per-invoice fees

Watermarked playground is free forever. Paid plans unlock the API.

Starter

$19/mo

500 PDFs/month, all templates, no watermark

  • 500 PDFs per month
  • ✓ All templates, no watermark
  • ✓ /from-stripe endpoint
  • ✓ Custom logo and accent color

14-day money back · cancel anytime

Most popular

Growth

$49/mo

5,000 PDFs/month, priority support

  • 5,000 PDFs per month
  • ✓ All templates, no watermark
  • ✓ /from-stripe endpoint
  • ✓ Custom logo and accent color

14-day money back · cancel anytime

Launch Lifetime

$199 once

Pay once. 500 PDFs/month forever. Launch offer.

  • 500 PDFs per month
  • ✓ All templates, no watermark
  • ✓ /from-stripe endpoint
  • ✓ Custom logo and accent color

14-day money back · cancel anytime

Questions, answered honestly

Is this a legally compliant e-invoice for the EU?

No, and be careful with anyone who tells you a PDF is. Germany and France are phasing in structured XML e-invoicing (XRechnung, Factur-X) for B2B in 2026. Papermint produces professional PDF invoices, which remain the standard for most B2C and cross-border billing. Factur-X hybrid output is on the roadmap.

Why not just use Stripe's hosted invoices?

Stripe Invoicing charges 0.4% per paid invoice and its layout is rigid. Papermint gives you full branding at a flat price, works with payment_intents and checkout sessions that never had a Stripe invoice, and produces documents for customers who ask for a proper invoice PDF after paying.

What happens if I go over my monthly quota?

Requests return HTTP 429 with a clear message. Nothing silently breaks and you are never charged overages. Upgrade or wait for the next month.

Do you store my invoice data?

No. Rendering is stateless: your JSON comes in, the PDF goes out, and nothing is persisted. Billing runs entirely on Stripe.

Can I try it without paying?

Yes. The playground on this page renders watermarked previews free, no signup. Paid keys remove the watermark and unlock the API.

How fast is it, really?

A typical invoice renders in well under a second, because there is no browser to boot. The engine is a pure layout pass over your data with an embedded font.

Stop maintaining a PDF pipeline.Start sending invoices.

Your first render is 30 seconds away. Try the playground free, or grab a key and ship the integration before lunch.