/api/v1/invoicesCreate an invoice
Invoicr validates your transaction, calculates totals and renders the result immediately.
Request body
{
"merchant": {
"name": "Northstar Studio",
"address": "San Francisco, CA"
},
"invoiceNumber": "INV-1001",
"date": "2026-09-20",
"currency": "USD",
"language": "fr",
"items": [
{
"name": "Design services",
"quantity": 1,
"unitPrice": 250
}
],
"tax": { "rate": 8.5 },
"payment": {
"method": "Card"
},
"note": "Thank you for your business!"
}Set language to en (default) or fr to translate invoice labels. Unsupported values fall back to English.
Response formats
PDF
?format=pdfA4 printable invoice.
HTML
?format=htmlReady-to-display markup.
JSON
?format=jsonValidated data + totals.
cURL
curl -X POST "https://try-invoicr.vercel.app/api/v1/invoices?format=pdf" \
-H "Content-Type: application/json" \
-d '{ "merchant": { "name": "Northstar Studio", "address": "San Francisco, CA" }, "invoiceNumber": "INV-1001", "date": "2026-09-20", "currency": "USD", "language": "fr", "items": [ { "name": "Design services", "quantity": 1, "unitPrice": 250 } ], "tax": { "rate": 8.5 }, "payment": { "method": "Card" }, "note": "Thank you for your business!" }' \
--output invoice.pdfJavaScript
const response = await fetch(
"https://try-invoicr.vercel.app/api/v1/invoices?format=pdf",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(invoice)
}
);
const pdf = await response.blob();Python
import requests
r = requests.post(
"https://try-invoicr.vercel.app/api/v1/invoices?format=pdf",
json=invoice
)
open("invoice.pdf", "wb").write(r.content)