Skip to content

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.

RESTJSONWebhooksIdempotent
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"
200 · response (sample invoice NS-2041)
{
  "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 data

Rate 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 plans

SDKs 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.

@invoicejetai/nodeinvoicejet@invoicejetai/mcp
SDK, CLI and MCP docs

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.