≡ Menu

Closing the loop on returns, reuse, and recall-ready traceability — without re-serializing your inventory.

The half-built solution

In a previous post Closing the Serial Number Gap in NetSuite WMS we walked through how a distributor can capture serial numbers at the WMS handheld — at the moment of pick, by the person actually holding the unit — without paying the operational cost of NetSuite’s full serialized inventory feature. For an electronics or audio equipment distributor moving thousands of units a week, that capture is the foundation of every downstream traceability use case: warranty lookups, recall response, audit readiness.

But capture-at-pick is only half the story.

Every serialized unit that ships out comes with the possibility of coming back. RMAs are a fact of distribution — a few percent of every month’s volume — and when a unit returns, the serial tracking layer has to do three things that are easy to overlook in the original build:

  • Mark the serial as returned, so the database reflects physical reality.
  • Release the serial for reuse, so the same physical unit can ship again to a new customer if it’s refurbished or restocked.
  • Preserve the full history — who had it, when it shipped, when it returned, on what RMA — so the warranty/recall use case still works for the lifetime of the unit, not just its first trip.

Without those three things, the picking-only solution slowly degrades into a one-way log: serials accumulate but never close out. The first time a customer returns a unit that someone needs to re-ship, the warehouse hits a wall — the system says “already shipped” and blocks the pick. Or worse: the original serial record stays in place pointing at the wrong customer, while the same physical unit ships again under a new record. Now your database has two truths about one unit.

The clean-on-the-outbound, messy-on-the-return pattern is one of the most common ways custom serial-tracking layers age badly. The fix isn’t more code on the pick side — it’s making the return side a first-class part of the lifecycle from day one.

Why returns are harder than they look

Three things make return-side serial tracking trickier than pick-side, and they all show up the moment a real RMA hits the receiving dock.

The receiver doesn’t always know what came back

On the pick side, the system tells the picker exactly what to scan: a specific SKU, a specific quantity, from a specific bin. The picker just needs to confirm. On the return side, that flow inverts. A box arrives. The packing slip might be accurate or it might not. The unit might match the RMA exactly, or it might be a unit from a different order, or a unit from this customer’s previous shipment, or — occasionally — a unit that’s not even ours.

A real-world return process has to handle all of those gracefully. The receiver needs to identify the serial that’s in their hands and tell the system which outbound record it matches — and the system needs to make that easy whether the unit lines up perfectly with the RMA or it’s been around the block.

[continue reading…]

0 comments

The NetSuite AI Connector Service Companion is live

NetSuite AI Connector Service Companion

Setup > AI Companion Tools > AI Companion Library. 100 prompts, 7 categories, 25 roles, filterable by all of the above.

If you’ve got the MCP Standard Tools SuiteApp working against a NetSuite account and you’ve been writing your own prompts from scratch, stop. Oracle quietly released a managed SuiteApp called the NetSuite AI Connector Service Companion that ships a curated library of 100 prompts you can copy, run, or fork into your own custom records. I spent some time digging through the official 2026.1 documentation (April 22, 2026) and the live Suitelet, and it’s a genuinely useful piece of work.

The setup is simple. Install the SuiteApp from the SuiteApp Marketplace, then go to Setup > AI Companion Tools > AI Companion Library. You land on the Suitelet shown above — search, category filter, industry filter, and role filter across the top. Every prompt has three actions: Copy (grab the text), Use Prompt (opens directly in a connected AI client), and Customize (edits the underlying AI prompt custom record so your tweaks persist). There’s also an optional SKILL.md file (the netsuite-ai-connector-instructions skill) you can pull from the NetSuite SuiteCloud SDK GitHub repo and upload to your AI client session for shared context — this makes the prompts behave more predictably.

[continue reading…]

0 comments

Closing the Serial Number Gap in NetSuite WMS

A lightweight serial-tracking layer for distributors — capture at pick, clean up at reverse pick, without the overhead of full serialized inventory.

Serial Capture Lite

The distributor’s dilemma

If you ship serialized products through NetSuite WMS — electronics, audio equipment, regulated goods, anything covered by warranty — you eventually face a frustrating choice.

NetSuite does support serialized inventory natively. The feature exists. But it’s built for manufacturers: it locks each serial number into its own cost layer, drives GL impact at the unit level, and integrates deeply with assembly builds, work orders, and standard costing. For a manufacturer that needs all of that, it’s the right tool.

For a distributor, it’s a sledgehammer for a finishing nail. You don’t need cost-layer accounting on every serial. You don’t need every inbound unit to become its own inventory record. You just need to answer one question reliably: “Which serial number went to which customer?”

Most distributors who turn on full NetSuite serialized inventory regret it within a quarter. The reporting gets messier, picks get slower, and you end up with thousands of single-quantity inventory records that don’t reflect how the business actually moves product.

So most distributors do what most distributors do: they capture serials in spreadsheets, in manual desktop entry after the pick, or worse, by memory. The data ends up captured eventually — but rarely cleanly, rarely at the moment of truth, and rarely without a downstream reconciliation step.

And when something goes wrong on a pick — wrong unit, damage, picker error — and the team performs a reverse pick, the gap widens. Inventory rolls back correctly, but any serial tracking the team has cobbled together is left orphaned. Suddenly you have a record of serial number ABC123 going to Customer A on Sales Order 13238, when in reality that serial is sitting back on the shelf and a different serial went out instead.

Multiply that across hundreds of orders a month, and the integrity of your serial-level traceability quietly degrades — until the day you need it for a recall, a warranty claim, or an audit.

The right-sized solution: tracking without the overhead

For one of our NetSuite WMS clients — an electronics distributor moving thousands of serialized speakers and audio components every week — we built a lightweight serial-tracking layer that gives them everything they actually need without the operational baggage of full serialized inventory.

The architecture is simple: items stay non-serialized in the inventory subledger. A custom record captures each serial number as it’s picked, links it to the order, item, line, and customer, and stays out of the way of the financial postings. The picker workflow is unchanged in feel — they scan, the system validates, and they move on.

What the picker sees on the handheld:Serial Number Capture Lite

  • Serial capture at pick. When a picker scans a serialized item, the handheld prompts them for the serial on the unit they’re picking. Each scan is validated in real time against the item’s expected format pattern, checked for duplicates against the live database, and stored against the order, item, and pick task line.
  • Serial generation for sequential ranges. When a picker is moving 50 sequentially-numbered units, they don’t need to scan all 50. The handheld popup lets them confirm a starting serial, count, and pattern, and stages the rest automatically — saving minutes per pick on high-volume items.
  • Format flexibility per item. Different SKUs use different serial formats. The system supports a pattern language per item (e.g. 2 letters then 8 digits, or 3 letters then 7 digits), with automatic validation and clear error messages when a scan doesn’t match.
  • Reverse pick cleanup. When a picker reverses a pick — full line, partial qty, or an entire kit — the corresponding serial records are removed automatically. For partial reverses, the picker is shown the live list of captured serials and chooses exactly which ones are being returned to stock. No reconciliation, no orphans.

The result is a single source of truth: every serial number that ships is captured at the moment it ships, by the person who actually has it in their hand. Every reverse leaves the record in a state that matches physical reality. And none of it touches your inventory cost layers, GL postings, or item master in ways that complicate everything else.

Why “at the handheld” matters

It’s tempting to assume serial capture is a reporting problem — something that can be patched up at the desktop after the fact. In practice, the further capture moves from the picker, the worse the data gets:

  • Desktop entry is done by warehouse leads or office staff who weren’t in the truck/dock when the item moved. Errors compound.
  • Spreadsheet workflows are slow, easy to lose, and almost never complete.
  • Memory is unreliable for high-volume operations. Even careful pickers can’t reconstruct a 200-line pick at end of shift.

Capturing at the handheld — right when the picker has the unit, the bin, and the destination on screen — is the only point in the workflow where the data is naturally accurate. Everything downstream becomes faster, cleaner, and audit-ready.

The reverse pick problem nobody talks about

In our experience, every WMS implementation that bolts on serial tracking at pick eventually hits the same second wave of pain: reverse pick. It’s rarer than forward pick — maybe 5-10% of orders — but it’s where the discipline of serial tracking either holds up or quietly falls apart.

Standard NetSuite WMS handles reverse picks beautifully for inventory, but it has no awareness of any custom serial-tracking layer that’s been added on top. So unless someone explicitly handles cleanup, the orphans accumulate. Six months in, your serial database tells a different story than your shipping reality.

Our solution supports this situation elegantly. The cleanup runs on the WMS confirmation screen, after the reverse has committed but before the picker moves on. Three reverse paths are handled cleanly:

  • Full reverse — all captured serials for that order line are removed silently. No extra taps for the picker.
  • Partial reverse — the picker is shown a list of the captured serials with checkboxes, and chooses exactly which N units are being returned. The system enforces that the count matches the partial qty, removes only the chosen ones, and confirms back.
  • Kit reverse — reverses across all components of a kit/assembly in a single operation, with the system automatically resolving the kit’s component list and sweeping every component’s serials.

The picker doesn’t need to know any of this is happening. They just see a clean confirmation screen, and the database stays in sync.

The business case

The value of doing this well shows up in three places:

  • Warranty and returns. When a customer calls in with a unit that needs warranty service, you can pull the exact ship date, order, and customer for that serial in seconds — not hours of email back-and-forth.
  • Recalls and quality issues. If a manufacturer recalls a batch by serial range, you know exactly which customers received affected units. You can be proactive instead of reactive.
  • Audit readiness. Serialized tracking is increasingly part of compliance frameworks — especially in regulated, medical-adjacent, and high-value verticals. Clean serial-level traceability isn’t just nice-to-have, it’s a defensible audit trail.

And there’s a softer benefit that matters more than people expect: the picker workflow gets cleaner. No paper, no second desktop step, no “wait, did we capture that one?” conversations. The serial is captured at the moment of pick, and the system handles the rest — without forcing the operations team to learn the quirks of a serialized inventory subledger they didn’t need in the first place.

Most NetSuite WMS distributors we work with don’t realize how much daily friction they’re carrying around manual serial tracking until they see what the alternative looks like — and how cleanly it can be done without converting to full serialized inventory.

How long does it take?

Typical deployment is a few weeks: a discovery pass to confirm item format patterns and serial-tracking rules, configuration of the custom records and fields, deployment of the scripts, and a sandbox UAT cycle covering forward picks, partial reverses, full reverses, and kit reverses. We deploy through SuiteCloud Development Framework so the whole thing is version-controlled using code repositories and deployable across environments.

Want to talk?

If you’re a distributor running serialized products through NetSuite WMS — and you’ve been told your only options are “turn on full serialized inventory” or “keep doing it in spreadsheets” — there’s a third path. We’ve solved this exact problem for clients in electronics, audio equipment, and high-value distribution. Reach out and we’ll walk through what it would look like in your environment.

Fourth Wave Consulting — NetSuite WMS specialists building real solutions for real warehouses.

Author: Renee Chandler, Fourth Wave Consulting. NetSuite WMS implementation and SuiteScript development.

0 comments

Here’s How to Show Them.

 

You’re staring at the GL Impact screen on a transaction. You see accounts, debits, credits, names, memos. You want to know what item drove a specific line. You can’t see it. Of course you can’t — the column isn’t there.

So you bounce back to the transaction, hunt through the lines, try to match the dollar amount, give up, build a saved search, export to Excel, and lose twenty minutes you didn’t have.

The default NetSuite GL Impact screen showing only account, amount, posting, memo, name, subsidiary, department, class, location, and custom script columns — no item column visible.
The default GL Impact screen — no Item, no Quantity, no way to tell which SKU drove which line.

There’s a better way, and it’s been sitting in the URL the whole time.

The Default Screen Is Just a Saved Search

When you click GL Impact on a transaction, NetSuite is running a saved search behind the scenes — a stock one shipped with the product. That stock search has a fixed set of columns: account, debit, credit, posting period, name, memo. None of which include things like Item, Item Type, Item Quantity or custom transaction line fields.

The columns are baked into the saved search, not into the screen. Which means if you point the screen at a different saved search, you control the columns. And NetSuite makes that swap embarrassingly easy.

The Trick

Pull up the GL Impact screen on any transaction. The URL looks like this:

/app/accounting/transactions/transaction.nl?id=12345&searchid=-36

That searchid=-36 is the stock GL Impact saved search. The -36 is its internal ID — negative IDs are reserved for system searches.

Build your own transaction-based saved search with the columns you actually want, and NetSuite will give it a positive ID — say 3688. Drop that ID into the URL in place of -36:

/app/accounting/transactions/transaction.nl?id=12345&searchid=3688

Hit Enter. The GL Impact screen now renders with your columns. Item, Quantity, whatever you put in the search.

Same transaction — now Document Number, Item, Quantity, Inventory Location, and more all surface inline.
Same transaction, custom searchid — now Document Number, Item, Quantity, Inventory Location, and more all surface inline.

 

A quick clarification: This trick works for the GL Impact screen you reach from Actions → GL Impact on a transaction (the standalone page that opens with debits, credits, and the toolbar with export icons). It does not apply to the newer GL Impact tab/subtab that appears inline on some transaction records — that view uses a different rendering path with no searchid to swap. If you’re working with the tabbed view, the column customization happens at the transaction form level instead, which is a different conversation.

Building the search is the easy part: new transaction saved search, no criteria (the screen scopes to the current transaction automatically), then add the standard GL Impact columns plus the ones you actually came for. Save it, grab the internal ID, plug it in the url. The whole thing takes about five minutes the first time and zero minutes every time after that — once you create a bookmarklet or build a Custom GL Impact button on your transaction form.

What This Unlocks

Inventory and COGS troubleshooting. Add Item, Item Type, and Quantity to the search. Now you can see exactly which item generated a $2,317.42 COGS hit without leaving the screen.

FX and intercompany variance hunts. Add Subsidiary, Currency, and Exchange Rate. Especially helpful when you’re chasing a few cents that won’t reconcile.

Custom field visibility. Approval status, project codes, internal tracking fields — if you’ve built it as a custom transaction field, it can show up here.

A Few Things Worth Knowing

Make the search public if multiple users need it, or share it with the appropriate roles. Don’t add criteria — the screen passes transaction context automatically, and any criteria you add will filter out lines you wanted to see. And to be clear, this isn’t a hack: the searchid parameter is a documented NetSuite mechanism used across the platform. You’re just pointing it somewhere new.

Why This Matters

On its own, this is a small thing. A column on a screen. But it’s representative of something bigger about NetSuite: the platform gives you significantly more control than the default UI suggests. Most users never look behind the curtain. The ones who do — or who hire people who do — end up with a system that bends to fit their work, instead of the other way around.

The GL Impact trick is one of dozens of similar small wins our team has accumulated over twenty-plus years inside the platform. Independently, each one saves a few minutes. Together, they reshape how your team uses NetSuite.


Wish your NetSuite did something it doesn’t appear to do? It probably can. Fourth Wave Consulting has been doing NetSuite consulting since 2003 — saved searches, scripting, integrations, custom forms, the works. If something in your daily workflow feels harder than it should, get in touch and we’ll take a look.

0 comments

Ever struggled with getting a single line item on a sales order to post to a specific account instead of your default sales account?

If you’re like most NetSuite users, you’ve probably found yourself creating manual journal entries after the fact or wrestling with complex workarounds just to get one miscellaneous charge to hit the right account. There’s a better way.

The Problem You Know Too Well

Picture this scenario: You’re processing a sales order that includes a special service fee that needs to post to a project-specific revenue account, not your standard sales account. Or maybe you have a miscellaneous charge that should hit a different department’s budget.

Traditionally, you might:

  • Let it post to the wrong account and fix it later with journal entries
  • Try to set up complex item records for every possible scenario
  • Spend time manually adjusting entries each month

Sound familiar? You’re not alone.

Meet Your Solution: Transaction Line Distribution (TLD)

When working with NetSuite, aligning a line item to a specific account involves configuring settings that ensure accurate financial tracking. NetSuite’s tools enable users to categorize each item effectively, simplifying financial processes and enhancing reporting accuracy.

Managing complex sales orders in NetSuite requires precise control over how individual line items are allocated to accounts, departments, or segments. The Transaction Line Distribution SuiteApp allows users to automate and customize these allocations—especially useful for posting a single miscellaneous item on a sales order to a specific account. This blog post explains how to achieve this using a Quick Distribution Rule.

What is the Transaction Line Distribution SuiteApp?

The Transaction Line Distribution SuiteApp enables organizations to distribute transaction amounts—at either the header or line level—across multiple accounts, subsidiaries, departments, or custom segments. This flexibility ensures that sales orders and invoices accurately reflect business transactions, aiding in streamlining reporting and compliance.

What TLD Actually Does

In simple terms, TLD lets you:

  • Override where individual line items post on sales orders and invoices
  • Split a single line across multiple accounts, departments, or locations
  • Create these rules on-the-fly, right when you need them
  • Eliminate manual journal entries for routine allocations

How To Step-by-Step: Distributing a Miscellaneous Item to a Custom Account

1. Add a Miscellaneous Item to Your Sales Order

  • Create or edit your sales order as usual.
  • Add your miscellaneous item to the order lines.

2. Access the Quick Distribution Rule

  • In the *Items* subtab, click on the line for your miscellaneous item.
  • Click Enter Quick Distribution. This opens the Quick Distribution Rule popup window

3. Configure the Distribution Rule

Within the popup:

  • Select the transaction line(s) you want the rule applied to (in this case, your misc item).
  • In the *Distribution Information* section, you can:
  • Uncheck Use Source Accounts.
  • Optionally, check other boxes to use source segments like department, location, or custom segments.
  • In the *Distribution Lines* section:
  • Specify the destination account you want the invoice or cash sale line to post to.
  • Enter the distribution amount or percentage (for a single misc item, this is typically 100% of the line amount).

4. Save and Review

  • Click Save. The Quick Rule is now applied to that line.
  • When the sales order is billed, NetSuite will automatically generate the appropriate journal entries, allocating the amount to your specified account.

Why Use Quick Distribution Rules?

  • No Predefined Rules Needed: You can create a distribution on-the-fly without setting up templates in advance—ideal for ad hoc or one-off allocations.
  • Line-Level Precision: Each transaction line can have its own unique distribution rule, allowing granular control over financial postings.
  • Automated Journal Entries: Once the transaction is approved, NetSuite handles the journal entries automatically, reducing manual work and errors.

Example Use Case

Suppose a custom service (misc item) needs to post revenue to a special project account rather than the default sales account. Using the steps above, the correct account can be assigned at the line level to maintain financial accuracy and streamlined reporting.

Key Benefits

  • Efficiency: No need to manually create journal entries or allocate lines after the fact.
  • Accuracy: Ensures each invoice line posts to the correct account, department, or segment.
  • Flexibility: Supports both recurring and one-off allocation needs, with or without templates.

Other ways to use TLD

  • Automated intercompany funds recording: When a check is recorded for the distribution of funds to another subsidiary, the TLD app can create a journal entry in the other subsidiary to record the debit of cash and the credit to a due from asset account.
  • Record intercompany purchases: When one subsidiary purchases items for itself and other subsidiaries, TLD can make a journal entry in the other subsidiaries to record the due to liabilities as well as the expense account debits.
  • Record intercompany credit card purchases from the Match Bank Data: When entering a new transaction from the Match Bank, you can use the Journal entry option and a TLD to log the transaction in another subsidiary.

 

Feature Comparison:

Feature Standard NetSuite Transaction Line Distribution SuiteApp
Manual Allocation Needed Yes No (Automated)
Supports Intercompany Limited Yes
Real-Time Allocation No (Batch) Yes
Template-Based Allocation No Yes
Line-Level Distribution Limited Yes

 

The Bottom Line

If you’re spending time each month creating journal entries to fix where line items are posted, or if you’ve ever wished you could just tell NetSuite “post this line to that account,” TLD is worth exploring. It’s one of those NetSuite features that can significantly streamline your month-end process once you know it exists. You can find the bundle in the SuiteApps tab in your NetSuite interface.

Have Questions? We are here to help. Contact us for an hour of free consulting and ask us any questions you might have. We love to help NetSuite companies discover the full power of the system!

0 comments

NetSuite Global Search Tips

Netsuite tips

You can go years, even a decade, and still not know all the hidden shortcuts in NetSuite. Here are a few of the global search shortcuts I have come across over the years.

Global Search Prefixes

Use record type prefixes before your search terms to narrow the results to specific record types. Type as many letters of the record type as it takes to reduce to the unique record type desired.

For example, you could type cu: or cus: or cust: or customer: before your search terms to return customer records only. Below cust: jimmy was used to bring back any customer record that included jimmy in the name, id, email address, or searchable custom fields. The James R Smith was returned because jimmy was found in the email address. Note global search uses keyword-starts-with matching. For example cust: xander would not locate Alexander but cust: Alex would.

Record Type Global Search

Occasionally you will have record types that include part of the name of another record type making it difficult to reduce the results, [continue reading…]

0 comments

BatchIt (Reconcile Amazon Batch Payments With Ease)

Amazon deposits can be difficult to reconcile in NetSuite because there aren’t easy ways to match up the transactions in the Amazon file with the orders in NetSuite.  Manually trying to match up orders is time-consuming and error-prone.  To alleviate the manual effort, increase productivity, and improve accuracy, an automated solution is required.  Fourth Wave Consulting customers were struggling with the manual process of reconciling Amazon deposits, so we developed a custom solution to help.

BatchIt is the custom solution Fourth Wave Consulting developed.  This process records the payments and credit refunds within NetSuite, [continue reading…]

0 comments

Upselling is proven to increase ecommerce revenue, with targeted product recommendations responsible for up to 30% of revenue. In fact, back in 2006, Amazon reported that 35% of its revenues were a direct result of its cross sales and upsells. It is also a lot easier to sell to existing customers than to start from scratch with new customers and offering the right upsell at the right time can even earn customer loyalty. Analytics show that customer lifetime value increases when you upsell. [continue reading…]

0 comments
202021.2 Data center Upgrade

Netsuite 2020.2 is just around the corner, and as per usual, it brings with it a plethora of improvements, upgrades & new features, and nuances. In this article post, we will go over some of the biggest features and updates to be both excited and wary of with the release of 2020.2. We got you covered on how to prepare to ensure your business is ready for this new release and minimize any downtime.

[continue reading…]

0 comments

The time it takes to load a web page is called the page download speed, or load time. Your site’s average load time is an important factor in Google’s site ranking algorithm. Web users expect pages to load quickly, and pages with longer load times tend to have higher bounce rates, and those sites are seen as less important. For more information on the effect of site performance and organic rankings and conversion, see Cloudflares article on Website Performance and Conversation Rates.

To measure site speed, Google released a SEO tool called Lighthouse back in 2018 that offers some insight on the performance of your website and its pages. This audit gives a mobile and desktop score across four areas: Performance, Accessibility, Best Practices, and SEO. For the sake of this article, we will be focusing on solely the “Performance” category of the testing and its associated fixes. So, let’s dive in!

[continue reading…]

0 comments