Skip to main content
The Invoices API gives your backend the same invoice capabilities the dashboard has, over the REST API — exactly like Stripe’s /v1/invoices surface.

Auth

Invoice endpoints accept secret (sk_…) or restricted (rk_…) keys only. Publishable (pk_…) keys are always rejected because invoices contain customer PII, amounts, and payment proofs — they are never client-safe. Dashboard sessions continue to work with the existing role-based access (invoices:read, invoices:write, invoices:send).
Publishable keys cannot read or write invoices. Use a server-side secret/restricted key from your backend.

Required key permissions

A secret key with no explicit permission list is full-access (Stripe “standard secret”). A restricted key must carry an explicit invoice permission.

List invoices

Query params

string
Filter by status: DRAFT, ISSUED, PAID, VOID, or OVERDUE.
string
Search by invoice number, customer email, or customer wallet.

Response

Retrieve an invoice

Returns the full invoice with lineItems, deliveries, creditNotes, and refunds, plus a signed downloadUrl for the PDF and an iso20022DownloadUrl.

Download the invoice PDF

The returned URL is HMAC-signed and expires (default 24h).

ISO 20022 export

Returns a rem.001.001.07 ISO 20022 XML credit-transfer file for the invoice.

Create an invoice

The invoice is issued immediately, the PDF is rendered, and a invoice.issued webhook fires. When a customerEmail is provided, the invoice is emailed to the customer.

Update invoice status (mark paid / void / overdue)

Allowed transitions: Marking an invoice paid records the Payment, fires the invoice.paid webhook, and sends the customer a receipt.

Credit notes

Credit notes reduce the creditable balance, post a company credit (for paid invoices), and email the customer.

Refunds

The refund proof is verified on-chain before the refund is recorded.

Resend by email

Rate-limited via Arcjet (reset bursts are throttled). Requires the invoice to have a customerEmail.

Errors

API-key calls are scoped to the team and the workspace environment the key was created in. A sk_test_… key only sees the development invoices; a sk_live_… key only sees production invoices.
Last modified on October 4, 2026