Fill it in yourself
Pick a template, type the details, download. About as long as writing the email you were going to attach it to.
Pagemint renders your invoices, contracts and reports from HTML or a visual template — versioned, fast, and identical every single time.
curl -X POST https://api.pagemint.dev/v1/render \
-H "Authorization: Bearer $PAGEMINT_KEY" \
-d '{
"template": "invoice",
"data": {
"client": "Acme Corporation",
"number": "INV-2026-0142",
"due": "2026-11-07",
"items": [
{ "label": "Brand identity design", "amount": 4000 },
{ "label": "Design system rollout", "amount": 2000 }
]
}
}'Studio Aurora
Invoice INV-2026-0142
Billed to
Acme Corporation
123 Business Ave, Suite 400
Due
7 Nov 2026
Net 14
Write them in HTML and CSS, keep them under review, and render them with the same engine your browser uses.
Start from a finished layout, drop in your logo and the fields you need, publish. The document that comes out is byte-for-byte the one the API returns.
Studio Aurora
Invoice
INV-2026-0142
Issued 24 Oct
Billed to
Acme Corporation
123 Business Ave, Suite 400
| Description | Hrs | Amount |
|---|---|---|
| Brand identity | 40 | $4,000.00 |
| Design system | 20 | $2,000.00 |
| Total due | $6,000.00 |
Agreement № MSA-118
Master Services
Agreement
between Studio Aurora and Acme Corporation
Marta Kowal
Supplier
J. Doe
Client
Page 1 of 9
Weekly operations
Week 33
MonSun
| invoice-v4 | 81,204 |
| report-weekly | 32,118 |
| contract-msa | 15,080 |
Boarding pass
LO 442
Warsaw
WAW
Lisbon
LIS
Kowal / Marta
Booking
QK7T2M
invoice-v4.html
Invoice
Two pages · A4 portrait · 14 merge fields
Every version, kept
A render always names the version it used, so a document issued last March still regenerates byte-for-byte today.
Call the API directly, or let Pagemint watch a source and deliver the finished file wherever it belongs.
Point Pagemint at a sheet, pick a template and a schedule. It renders every row and delivers the files while you are doing something else.
One endpoint, one key, typed SDKs. Nothing to install on your servers and no headless browser to babysit.
Fill the form yourself, hand the work to a spreadsheet, or send a link and let the client fill it in. Nothing to deploy, nothing to maintain.
Reading notes.txt
However the data arrives, it lands in the same fields and comes out as the same document.
Studio Aurora
Invoice
Billed to
Northwind Trading
Pick a template, type the details, download. About as long as writing the email you were going to attach it to.
Every row becomes a document. Run it once, or leave it on a schedule and let the files arrive where your team already works.
Share a form with a client or a colleague. They fill in their half, the finished PDF lands in your workspace.
Outgrow the dashboard later?Every template you build here is already an API template — a developer can call it without rebuilding a thing.
Call it from anything
that speaks HTTP.
Typed SDKs where you want them, a plain POST where you don't. Nothing to install on your servers, no headless browser to keep alive, no font cache to warm.
SDKs and clients
Triggers and automation
This endpoint
curl https://api.pagemint.dev/v1/render \
-H "Authorization: Bearer $PAGEMINT_KEY" \
-d '{"template":"invoice-v4","data":{...}}' \
--output invoice.pdfimport { Pagemint } from "pagemint";
const pm = new Pagemint(process.env.PAGEMINT_KEY);
const pdf = await pm.render({ template: "invoice-v4", data });from pagemint import Pagemint
pm = Pagemint(os.environ["PAGEMINT_KEY"])
pdf = pm.render(template="invoice-v4", data=invoice)use Pagemint\Client;
$pm = new Client(getenv('PAGEMINT_KEY'));
$pdf = $pm->render(['template' => 'invoice-v4', 'data' => $invoice]);{
"id": "rnd_8fk21",
"pages": 2,
"bytes": 188432,
"url": "https://…/inv.pdf",
"expires_in": 3600
}Everything that makes self-hosted PDF generation a weekend project you maintain forever.
Deterministic
Fast
Private
We deleted the Puppeteer service, the font cache and the Lambda that restarted it every night. Three files of ours became one call to Pagemint.
Marta Kowal · Platform lead, Fenwick Logistics
Every plan carries the whole API and the whole dashboard. Drag the slider to what you actually render and the prices follow.
One rendered PDF page is one page, however it was made.
Change plan or leave whenever — the price follows your volume, not a contract.
A side project, or the first paying customer.
$79/ month
Billed monthly
Documents in the critical path of your product.
$79/ month
Billed monthly
High volume, tight latency, an SLA behind it.
$79/ month
Billed monthly
Rendering documents for billing, logistics and legal teams since 2023
All systems operational
Yes. Post a URL, raw HTML, or a stored template. Anything Chromium renders, Pagemint renders — including web fonts, grid, and print stylesheets.
One rendered PDF page. A three-page invoice is three pages, whether you asked for it once or retried it — retries after our error are never counted.
In the region you choose, behind signed URLs that expire on your TTL. Set the TTL to zero and we stream the bytes back without storing anything.
PDF/A-2b and PDF/A-3b are a flag on the render call. Tagged output follows the heading structure of your HTML, so semantic templates come out accessible.
Renders keep working. Overage is billed per thousand pages at your plan rate, and you get an email at 80% so nothing is a surprise.
Templates export as plain HTML and your renders export as a ZIP. Cancel in the dashboard, keep the files.
Sign up, paste your key into the example, and watch a real document come back. The free tier never expires.