Get Sales Invoice
GET/api/sales-invoices/:salesInvoice
One invoice with its lines, linked shipments, payment allocations, applied credit notes, totals, addresses, terms, accounting and EDI state, and permissions — what the current user may do next, with the plain-language reason when voiding is not possible (void_blocked_reason). Also returns tags (string[]), documents_count (attached files; always 0 on an order invoice, whose files live on the sales order) and warnings ([{code, message}] review notes on a draft that was not issued automatically).
orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Requires orders:read and sales_invoices.show.
on_account_total (drafts only, else null): what the order holds on account — issuing applies it to this invoice. edi (null unless the order came in over SPS Commerce EDI) carries partner_name, sends_on_issue (issuing sends the partner an 810) and waits_for_asn (the 810 waits for the shipment's 856).
Each entry in credits carries applied_at_provider: the accounting system name (Xero, QuickBooks Online) when that credit note's application to this invoice has been recorded there, otherwise null. Such a credit's amounts can't be changed until it is unapplied in that system and re-checked with Reconcile Sales Credit Invoice Application.
Due dates: due_date is the effective due date: the stored due date, else the invoice date plus the customer's payment terms, else the invoice date. due_date_is_derived is true when no due date is stored and it was worked out from terms. Drafts are never overdue. Due-status and due-date filters and sorts use the same effective date.
Channel-settled orders: an order invoice (order_mirror) whose order the sales channel marks paid, refunded or partially refunded has balance_due 0 and payment_status paid, whether or not payment records exist.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.