Live value of all open Sales Orders not yet invoiced. The forward revenue book.
At a glance
Live value of all open Sales Orders not yet invoiced. The forward revenue book, the leading indicator for next-month GL revenue.
| What it counts | SUM(Transaction.Amount) where Transaction.Type = SalesOrd and Status IN ('Pending Approval', 'Pending Fulfilment', 'Partially Fulfilled', 'Pending Billing', 'Partially Billed'). Excludes Billed in Full, Closed, Cancelled. The remaining-to-bill amount on partially-billed SOs is netted out. |
| Tax treatment | Net of tax. Sales Orders carry tax on a separate line and the card sums revenue lines only. UK / EU subsidiaries: VAT-exclusive. US: sales-tax-exclusive. |
| Shipping | Included if your account books shipping income to a revenue-class line on the SO. Standard NetSuite Item Records for shipping behave this way. |
| Discounts | Already deducted; SO Amount is post-discount. |
| Refunds | n/a (refunds happen post-Invoice via Credit Memos, never on a Sales Order). |
| Cancelled / voided orders | Excluded. Cancelled SOs have Status = Cancelled and are filtered out. |
| Currency | OneWorld: consolidated to reporting currency at current FX rate (re-priced live). Single-subsidiary: native subsidiary currency. |
| Subsidiary scope | Respects dashboard subsidiary filter. By default sums every subsidiary the role can read. |
| Channels / sources | Includes every channel that creates SOs in NetSuite: commerce-platform integrations, B2B portals, manual SO entry, EDI, marketplaces. Filter by Class to slice. |
| Time window | RT (real-time snapshot, not period-based) |
| Alert trigger | None at the headline (this card is informational); the alert lives on SOs Blocked |
| Roles | owner, finance, operations |
Calculation
Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
An Australian electronics manufacturer running NetSuite OneWorld with AU and SG subsidiaries. Reporting currency AUD. Snapshot taken 12 Apr 26 at 9am AEST.| Status bucket | SO count | Total amount (AUD) |
|---|---|---|
| Pending Approval (over $50K threshold) | 12 | $1,840,000 |
| Pending Fulfilment | 184 | $4,210,000 |
| Partially Fulfilled (remaining) | 47 | $920,000 |
| Pending Billing | 96 | $2,580,000 |
| Partially Billed (remaining) | 28 | $410,000 |
| Open SO Value (this card) | 367 | $9,960,000 |
- $1.84M in Pending Approval is the controllable lever. These are large SOs (mostly enterprise distributors) waiting on Finance sign-off because they exceed the credit-limit auto-approve threshold. The Controller can release them in 30 minutes; until then they’re not progressing toward GL.
- Pending Fulfilment is the biggest bucket ($4.21M) but it’s healthy; this is operations executing. Watch the flow rate to detect warehouse bottlenecks.
- Pending Billing ($2.58M) is the killer working-capital signal. Goods have shipped, customer is on the hook, but no Invoice means no AR clock. Every day in this bucket extends DSO. Pair with SO to Invoice Lead Time.
- Partially-billed SOs ($410K remaining) are typically B2B back-orders where the first shipment billed but a backordered SKU is still pending. Healthy, but track the age, anything > 60 days old is a candidate for cancellation.
- Last week’s snapshot was $8.2M. Open SO Value is up 21% week-on-week, driven by a new distributor onboarding (Pending Approval bucket). The card surfaces the trendline so the Controller knows revenue queue is filling, not draining. Pair with Revenue Booked into GL trend to see whether the queue translates into bookings.
Sibling cards merchants should reference together
| Card | Why pair it with Open SO Value |
|---|---|
| Open SOs Blocked | The subset blocked on inventory or credit. Tells you what fraction of the queue is stuck vs flowing. |
| SO State Breakdown | The pie chart of buckets shown in the Worked Example. Visualises where the queue sits. |
| SO to Invoice Lead Time | Average days from SO creation to Invoice posting. Health metric for the queue’s flow rate. |
| Average SO Value | Open SO Value ÷ Open SO Count. Detects whether queue growth is volume or basket. |
| Revenue Booked into GL | Today’s GL is yesterday’s open queue. The lookback to validate the leading indicator. |
| Credit Hold Orders | Specifically the credit-blocked subset. Different remediation than inventory blocks. |
| Top B2B Accounts | Concentration risk. If 5 customers own 60% of the open queue, churn risk is concentrated. |
| shopify.total_revenue / bigcommerce.total_revenue | Commerce gross feeds the SO queue. Comparing inflow rate to queue size shows whether bookings are speeding up or slowing down. |
Reconciling against the vendor’s own dashboard
Where to look in NetSuite:
Reports → Sales → Open Sales Order Register (Transactions → Sales → Sales Order, filter Status: Open)
Saved search: Transaction.Type = SalesOrd AND Status NOT IN ('Closed', 'Cancelled', 'Billed in Full')
The Open Sales Order Register native report should match this card to the dollar when filtered to the same subsidiary scope. Differences usually trace to:
- The Register defaults to all-time open SOs (some are years old and structurally stuck). This card includes them. NetSuite Admins often filter the Register to “last 90 days” out of habit, so the Register total is lower.
- Some accounts customise the Register to exclude
Pending Approval(they treat unapproved SOs as quote-stage). This card includes them by default; flip the field map filter if your accounting policy differs.
- Sales by Item: counts billed and shipped revenue, not the open queue.
- Backorder by Item: the inventory-shortage subset; useful but smaller.
- Customer Aging: AR-based, post-Invoice. Different stage of the lifecycle.
| Reason | Direction | Why |
|---|---|---|
| Real-time vs report timing | Small drift | Card refreshes every 15 minutes; native Register is on-demand. SOs created or closed between refreshes show as drift. |
| Subsidiary scope | Either | Native Register may run at a single subsidiary; card sums all subsidiaries the role can read by default. |
| FX rate cadence | Small | OneWorld translation differs between current-rate (this card) and report-saved-rate. Single-currency stores: zero gap. |
| Pending Approval inclusion | Card may be higher | Some Admins exclude unapproved SOs from forward pipeline reports. The card includes them as a more conservative pipeline view. |
| Drop-ship / TPL-tagged SOs | Either | If your account uses the Drop Ship checkbox, those SOs may have a different revenue-booking path. The card includes them; some Admin reports exclude. |
| Card | Expected relationship | Why |
|---|---|---|
| shopify.total_revenue (last 7 days) | Recent open SO Value should track 7-day Shopify revenue × ship-to-bill lag | Commerce orders feed the SO queue; the queue size is roughly inflow × lag. |
| bigcommerce.total_revenue (last 30 days) | B2B BC orders dominate Pending Billing | Net-30 means BC orders sit in the queue 10-30 days before billing. |
| adobe_commerce.total_revenue | As above, B2B-skewed | Adobe Commerce wholesale orders queue similarly. |
Known limitations / merchant FAQs
Is Open SO Value the same as backlog? Close, but not identical. Backlog typically refers to fulfilment-pending orders (Pending Fulfilment + Partially Fulfilled). Open SO Value also includes Pending Billing (already shipped, not yet invoiced) and Pending Approval. For a strict backlog view, filter the SO State Breakdown card to fulfilment states only. Why is the number so different from my Sales Order Register report? Most often: subsidiary scope or status filter. Open the saved search behind the Register and check whetherPending Approval is excluded. If it is, that’s the gap. Also check the date filter; the Register may default to “last 90 days” and exclude older stuck SOs.
Pending Approval, what causes the bottleneck?
Three usual culprits: (1) credit-limit threshold, the SO exceeds the customer’s auto-approve limit; (2) discount-approval threshold, the line discount exceeds policy; (3) custom workflow gating, e.g. legal review for new contract terms. The Controller has direct authority to release on (1) and (2); (3) usually requires a workflow inspection.
Why doesn’t my commerce platform show this number?
Commerce platforms don’t model the “shipped but unbilled” state. Shopify, BigCommerce, and Adobe Commerce typically auto-invoice at fulfilment for DTC. The Pending Billing concept only appears when a B2B billing schedule is in play, which is a NetSuite-side workflow.
B2B credit-hold mechanics, do held SOs count?
Yes. SOs on credit hold remain in Pending Approval (or sometimes Pending Fulfilment with a hold flag, depending on workflow). The card includes them so the queue stays honest. The Credit Hold Orders sibling shows just the held subset.
OneWorld currency reval, does it move the headline?
Yes, mildly. Open SOs carry their original transaction currency, and the card translates to reporting currency at the current spot rate at refresh time. A 2% AUD/USD swing day-on-day moves the AUD-reporting headline by a similar amount on a USD-heavy queue. The trendline smooths it; the alert ignores FX-only shifts.
Sales Order vs Invoice vs Cash App, where does this fit in the lifecycle?
This card is the SO stage. Once an SO bills, it leaves this card and enters Invoice Aging and DSO territory. Once cash applies, the Invoice closes and the AR balance drops to zero. Three cards, three stages.
Recurring billing on subscriptions, how is that handled?
NetSuite Subscription Billing creates SOs with billing schedules. The card sums the next-billing-cycle amount, not the lifetime contract value. So a 12-month 10K/month shows 120K. This avoids double-counting future revenue.
ASC 606 deferred revenue impact, does it apply here?
No. This card is pre-Invoice; ASC 606 deferral happens at Invoice posting. SOs queued for billing don’t trigger any deferral logic until the Invoice creates.