DEV Community

Jack
Jack

Posted on

Generating PDF Invoices with a Single API Call (No Libraries Needed)

Generating PDF Invoices with a Single API Call (No Libraries Needed)

If you've ever tried to generate PDF invoices programmatically, you know the pain. Between wkhtmltopdf, Puppeteer, WeasyPrint, and a dozen other tools, there's always something — missing fonts, broken CSS, memory leaks, Docker headaches.

I got tired of fighting PDF libraries, so I built DocuMint — an API that takes JSON and returns a professional PDF invoice.

The Problem

  1. Pick a PDF library (ReportLab? WeasyPrint? Puppeteer?)
  2. Install system dependencies (good luck in Alpine Linux)
  3. Write an HTML template
  4. Handle fonts, encoding, page breaks
  5. Debug rendering differences between your machine and production
  6. Maintain all of this forever

Or you can make one API call.

The API Call

curl -X POST https://documint.anethoth.com/api/v1/invoice \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "template": "modern", "currency": "USD", "company": { "name": "Acme Corp", "address": "123 Main St" }, "customer": { "name": "Jane Smith" }, "items": [ { "description": "Web Development", "quantity": 40, "unit_price": 150 } ], "tax_rate": 0.08 }' --output invoice.pdf
Enter fullscreen mode Exit fullscreen mode

That's it. Professional PDF with proper formatting, totals calculated, tax applied.

Three Templates

  • Classic — Traditional business invoice
  • Modern — Clean design with gradient accents
  • Minimal — Monospace font, developer-friendly

Python Example

import requests

response = requests.post(
    'https://documint.anethoth.com/api/v1/invoice',
    headers={'Authorization': 'Bearer YOUR_KEY'},
    json={ 'template': 'modern', 'company': {'name': 'My SaaS'}, 'customer': {'name': 'Customer'}, 'items': [{'description': 'Pro Plan', 'quantity': 1, 'unit_price': 49}] }
)

with open('invoice.pdf', 'wb') as f:
    f.write(response.content)
Enter fullscreen mode Exit fullscreen mode

Try Before You Sign Up

curl -X POST https://documint.anethoth.com/api/v1/demo-invoice \
  -H 'Content-Type: application/json' \
  -d '{ "template": "modern", "company": { "name": "Demo" }, "customer": { "name": "Test" }, "items": [{ "description": "Widget", "quantity": 1, "unit_price": 99 }] }' --output demo.pdf
Enter fullscreen mode Exit fullscreen mode

The demo endpoint is rate-limited but fully functional.


DocuMint offers 10 free invoices/month. Try the invoice generator.

Top comments (0)