Bring your ERP · Oracle · read-only
Margin check for NetSuite.
Run the Margin X-Ray on your Oracle NetSuite data. You pull a few tables read-only, drop them on the X-Ray, and it finds the supplier increases that never reached the price, the expired contracts still billing, the claims never filed, all inside your browser tab. Nothing is uploaded, and no login, password or key ever leaves your building.
Multi-tenant cloud only.
Where NetSuite keeps it
A distributor’s file is many supplier lines, each with its own rule. These are the places NetSuite stores what the X-Ray reads.
| What the X-Ray reads | Where NetSuite keeps it |
|---|---|
| Supplier | itemvendor (vendor, purchaseprice, vendorcode, preferredvendor) |
| Purchase discount group | not native: vendor price levels or a pricing SuiteApp |
| Price line / class | item class and the item’s price level |
| Customer price class | price levels (pricing, pricelevel) and customer-specific item pricing |
| Quantity breaks | pricing.priceqty per price level |
| Contracts | customer item pricing, or a pricing SuiteApp (ask which one is installed) |
| Invoices | transaction + transactionline (type CustInvc / CashSale / CustCred); costestimate is an estimate, actual COGS is in GL impact lines |
The read-only pull
SuiteAnalytics Connect or SuiteQL, read-only by design
- A role with SuiteAnalytics Connect (read-only by design) or SuiteQL access runs the queries below.
- Filter transaction lines to item lines: tax, shipping, discount and subtotal lines live in the same table.
- Quantities are signed and in base units in many contexts: export them as they are; the X-Ray keeps credits negative.
- Save each result as CSV and drop them on the X-Ray; map the columns once, then keep the mapping.
SELECT id, itemid, displayname, itemtype, cost, averagecost, lastpurchaseprice, isinactive, saleunit, stockunit FROM item WHERE isinactive = 'F';
SELECT item, pricelevel, priceqty, unitprice FROM pricing;
SELECT item, vendor, purchaseprice, vendorcode, preferredvendor FROM itemvendor;
SELECT t.tranid, t.trandate, t.entity, tl.item, tl.quantity, tl.rate, tl.netamount, tl.costestimate, tl.units FROM transaction t JOIN transactionline tl ON tl.transaction = t.id WHERE t.type IN ('CustInvc', 'CashSale', 'CustCred') AND t.trandate >= ADD_MONTHS(SYSDATE, -24); The traps the X-Ray handles
- Price levels, quantity pricing, customer pricing and SuiteApp pricing can all apply: reconstructing the price a customer should get needs to know which is installed.
- costestimate is an estimate, not posted COGS.
- Transaction lines include tax, shipping, discount and subtotal items: filter by item type.
The X-Ray reads these exports as they are: map the columns once (it suggests every match), then run. A recognized pack for NetSuite is on our list.
Next: your own file
Start with the free X-Ray on your own export. When you want every leak sized against your invoices and supplier files, the Margin Diagnostic does it on your full data (from $5,000), with your Supplier Line Rulebook and a Line Review Kit for each supplier review included.
Other ERPs: Prophet 21 · SX.e / CSD · Eclipse · Business Central
Field names follow vendor documentation and community data dictionaries, compiled in our ERP research (October 2026). Your version may name a field differently; the X-Ray’s column matcher accepts either.