Get Sales Order
GET/api/v2/sales-orders/:salesOrder
Returns core sales order data for the V2 show page. Includes essential fields, addresses, channel info, totals, counts, custom fields, financial lines, tags, discounts, credits, RMAs, and purchase orders.
orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Line items are loaded separately via the lineItems endpoint for parallel loading.
Also returns the top-level flag use_sales_order_line_nominal_codes (boolean) — sibling to data — indicating whether the per-line nominal code editor should be enabled in the UI. Mirrors the accounting.use_sales_order_line_nominal_codes config value.
Payment / credit totals:
total_paid: aggregated sum ofpayments.amountfor the order — lets the UI render Paid/Balance Due without lazy-loading the payments array.- Each entry in
sales_credits[]includesrefund_payments_total(sum of cash/card refunds against the credit, always positive),applied_to_other_total(sum of credit consumed by Loop Returns EXC-* exchange orders, always positive),fees_retained_total(sum of fees Loop withheld out of the customer's credit — return shipping, restocking, etc., always positive), andoutstanding_amount(= total − refund_payments_total − applied_to_other_total − fees_retained_total, clamped to zero). The frontend usesoutstanding_amountfor the Credits line so partially-refunded credits no longer double-count against Balance Due. Each credit also includesmetadata(nullable object) — a minimal source subset{source, sales_channel_refund_id}used to render the channel-source chip (e.g. eBay refund-synced credits); null for manually created credits.
Authentication: Requires Bearer token.
Address override fields: shipping_overridden_at is an ISO-8601 UTC timestamp (or null) set when an operator manually corrects the ship-to/billing address; is_shipping_overridden is the boolean equivalent. When set, sales-channel resyncs (e.g. Amazon) will not overwrite the corrected inline address columns.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
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 — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
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.