API v1
Invoice generation API
One endpoint. Your saved company profile is the issuer, numbering is gap-less and server-side, responses are the canonical invoice JSON. Free — 100 invoices per day per account.
1 · Your key
The key is issued automatically the moment your account is created (first export). Find it in your dashboard — we store only its hash.
2 · Create an invoice
curl -X POST https://ohgpllewrnbpryjvknit.functions.supabase.co/generate-invoice \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"recipient": {
"name": "Ana Souza",
"country": "BR",
"email": "ana@studio.br"
},
"items": [
{ "description": "Product design — June", "qty": 1, "unit_price": 396000, "tax_rate": 0 }
],
"currency": "USD",
"language": "pt",
"direction": "client",
"due_date": "2026-07-19"
}'{
"invoice": {
"version": "v1",
"number": "INV-0352",
"issueDate": "2026-07-05",
"currency": "USD",
"language": "pt",
"issuer": { "...": "from your saved company profile" },
"recipient": { "name": "Ana Souza", "country": "BR" },
"items": [ { "description": "Product design — June", "qty": 1, "unitPrice": 396000 } ]
},
"totals": { "subtotal": 396000, "tax_total": 0, "total": 396000, "currency": "USD" }
}Fields
recipientobject — name (required), country (ISO-2 of the 13 supported, or omit), email, address_lines[], tax_ids[]itemsarray — description, qty, unit_price (minor units, e.g. cents), tax_rate (%)currencyISO code, default USDlanguageen · es · fr · pt · hi · zh — invoice document languagedirectionclient (default) or self_billingissue_date / due_dateYYYY-MM-DD; issue_date defaults to todaycountry_formatjurisdiction for field rules; defaults to your company countrynotes / payment_detailsstrings printed on the documentLimits and roadmap
- · 100 invoices / 24h per account (free — the only tier).
- · Responses are JSON; render PDF/DOCX in the web app today. PDF-over-API — v1.1.
- · Errors: 401 invalid key · 422 validation · 429 rate limit.