For developers
The InvoiceJet API
POST an invoice, get verified structured data back in about 30 seconds. The same engine behind the app: every field carries a confidence level and cites where it came from on the document.
curl -X POST "https://nzsktgwehyzltgagloox.supabase.co/functions/v1/api/v1/invoices?wait=true" \ -H "Authorization: Bearer $INVOICEJET_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -F "file=@invoice.pdf"
{
"id": "9b2f…", "object": "invoice", "status": "complete",
"auto_verified": true,
"vendor_name": "Northwind Studio LLC",
"invoice_number": "NS-2041",
"amount": 5196.00, "tax": 396.00, "currency": "USD",
"issued_at": "2026-06-12", "due_at": "2026-07-12",
"line_items": [
{ "description": "Brand identity retainer, June",
"quantity": 1, "unit_price": 4800.00, "confidence": "high" }
],
"field_confidence": { "vendor": "high", "amount": "high", "…": "…" },
"citations": {
"amount": { "page": 1, "text": "Total due $5,196.00" },
"invoice_number": { "page": 1, "text": "Invoice Number NS-2041" },
"…": "…"
}
}Set INVOICEJET_API_KEY in your shell first; create keys in the app under Developers. wait=true holds the request until the invoice is done, typically 10 to 30 seconds. Without it you get a 202, then poll or use webhooks. The Idempotency-Key header makes a retry safe. OpenAPI spec.
What the API does
Send files, URLs or base64
POST a multipart file, a public file URL or base64 content. Invoices forwarded by email or dropped into the app show up in the same API. A PDF holding several invoices becomes one record per invoice.
Confidence and citations in every response
Each field comes back with high, mid or low confidence and the page and verbatim text it was read from. Use auto_verified to skip review on clean invoices.
Signed webhooks
invoice.completed and invoice.failed are POSTed to your endpoint, signed and retried on failure. An events API lets you reconcile anything you missed.
Exports, vendors and quota
Pull CSV or JSON exports, the vendor directory and your current month's usage from /v1/me. Read-only keys can fetch but never create.
Keys, limits and what is coming
API keys
Authenticate with a bearer token. Create and rotate keys in the app under Developers. Keys are stored only as SHA-256 hashes, so no one, including us, can read them back.
How we protect your dataRate limits and quotas
The monthly invoice quota follows your plan: 10 on Free, 200 on Pro, 1,000 on Business. Each key is limited to 60 requests a minute, and every response carries rate-limit headers.
See plansSDKs and tooling
A typed Node SDK, a CLI and an MCP server for AI agents are on npm. The API is plain REST, so any HTTP client works too.
Ready to send your first invoice?
Create an account, generate a key, and POST a PDF. The full reference walks through every endpoint, the webhook signature scheme, and the response schema.