NetSuite integration failures and recovery: what actually breaks, from Advanced Item Location Configuration to rate limits
Every NetSuite integration eventually hits the same walls: NetSuite's own request limits, a custom field or SKU that doesn't map the way you expected, and, if Advanced Item Location Configuration is enabled, an inventory item that stops returning location-level data through SOAP, REST, or SuiteScript at all. None of that is a NetSuite bug, it's the platform working as designed, and an integration that isn't built to expect it will drop orders, miss inventory updates, or silently desync. InfiPlex is built around all three: failed pulls resume from the exact checkpoint instead of starting over, every failure is logged and alertable, and inventory reads use the one query path NetSuite confirmed still works once that feature is on.
Resumes From The Exact CheckpointA failed pull doesn't start over, it picks up from the last successful timestamp
Confirmed With NetSuite, Not GuessedSOAP, REST, and SuiteScript all lose location-level inventory once Advanced Item Location Configuration is on; only SuiteQL still returns it
Every Failure Is Logged And AlertableAny log type can trigger a configurable email or SMS alert
Why it breaks
NetSuite's request limits, and why they matter here
NetSuite enforces two separate limits, and integrations that only guard against one still get throttled by the other. Concurrency caps how many requests can run at the same time, by default around 15, shared across every SOAP, REST, and RESTlet call an account makes; exceeding it returns an HTTP 429 on REST or a SuiteScript error code of SSS_REQUEST_LIMIT_EXCEEDED on a RESTlet. Rate limiting is separate: a rolling 60-second and 24-hour window caps total call volume regardless of how many requests are running at once, so a connection polling steadily but too often can get throttled even with just one request in flight at a time.
Recovery
A failed pull resumes, it doesn't restart
When a request fails, whether from a NetSuite limit or anything else, InfiPlex pauses and resumes from the exact point it left off rather than starting the whole pull over. If an inventory pull was working through changes since 8:32, the retry picks up from 8:32, not from the beginning of the day; the same checkpoint logic applies to order pulls. Every attempt, success or failure, is written to a searchable shop log, and any log type can trigger a configurable email or SMS alert, so a stuck connection gets noticed instead of quietly falling behind.
Multi-location inventory
Advanced Item Location Configuration: the blind spot NetSuite confirmed
Enable Advanced Item Location Configuration, a feature Multi-Location Inventory accounts commonly turn on alongside Advanced Inventory Management, and NetSuite's record-based APIs stop returning location-level inventory. The symptom is specific: the locationsList sublist on an inventory item comes back empty, and quantityAvailable has no value. It is not a permissions issue; that possibility gets ruled out first, every time, and it is still empty.
This is not a guess. Confirmed directly with NetSuite: it is a general platform limitation, not a bug in any one integration, and it applies equally to SOAP, standard REST Web Services, and SuiteScript. None of those three record-based APIs expose inventory-by-location values once that feature is on. SuiteQL is the one path that still works, because it queries NetSuite's underlying tables directly instead of depending on the record sublist those three all rely on.
InfiPlex handles this at the connection level. A Site Area can connect to NetSuite over SOAP for standard inventory, or over REST using machine-to-machine authentication, and the REST/M2M path defaults to querying inventory through SuiteQL specifically, not through the REST record API's own item endpoints, which share the same blind spot as SOAP. A single client can run one Site Area on SOAP and another on REST/SuiteQL if their setup calls for it.
Field & SKU mapping
Built for the exceptions, not just the standard fields
Order pull rules run as a filter-and-action pair. Filters can match on a standard field, like NetSuite's internal location ID being equal to a specific value, or a custom body field being not equal to a given value, and an order only pulls when every filter passes. Once it does, post-pull actions can write a value back to NetSuite, a custom boolean field flipped to true is a common pattern for marking an order as processed, or map any NetSuite field, standard or custom, into InfiPlex, including into free-form additional-info storage for values that do not have a dedicated column. The same rule engine can also exclude specific SKUs entirely, so a freight surcharge or accessorial line item never gets saved as an actual product line on the order.
Tracking
Tracking, pushed the way NetSuite needs to see it
Tracking can push back to NetSuite as soon as an order is marked fully shipped in InfiPlex, and clients rarely all want it the same way. Multiple packages can combine into a single package on the NetSuite side, using the first tracking number found, with specific order sources excluded from that consolidation entirely if they need to stay itemized. Tracking numbers can also be read the other direction, out of a NetSuite custom field, instead of only ever being written to NetSuite by InfiPlex.
On-demand
Importing orders without waiting for the next cycle
Orders normally pull on a schedule, but a specific list of NetSuite order IDs can be imported into InfiPlex immediately, on demand, without waiting for the next cron cycle to come around, a useful escape hatch when a client needs one order in now rather than at the next pull. The same pull rules that apply on schedule still apply to an on-demand import, so nothing skips the filters just because it was requested manually.
Once Advanced Item Location Configuration is enabled, NetSuite stops returning location-level inventory data through the locationsList sublist on inventory items. This isn't a permissions or scoping problem; it's a platform limitation confirmed directly with NetSuite.
The same cause as an empty locationsList: Advanced Item Location Configuration removes location-level inventory data from the record-based APIs entirely. quantityAvailable comes back with no value because there's nothing behind it to return once that feature is on.
No. That's the first thing to rule out, and it doesn't fix it. Confirmed directly with NetSuite: it's a general platform limitation tied to Advanced Item Location Configuration, not an account or role permissions problem.
No. NetSuite confirmed this is a platform-wide limitation that applies equally to SOAP, standard REST Web Services, and SuiteScript. Switching from SOAP to the REST record API alone does not fix it.
Yes. SuiteScript record objects rely on the same underlying sublist as SOAP and the REST record API, so they lose location-level inventory data the same way once Advanced Item Location Configuration is enabled.
SuiteQL. It queries NetSuite's underlying database tables directly instead of depending on the item record's location sublist, which is what SOAP, the REST record API, and SuiteScript all rely on and all lose access to.
Almost always one of two NetSuite-side limits: a concurrency cap on simultaneous requests, or a rolling rate limit on total calls per minute and per day. Both are enforced independently, so an integration can get throttled by one even while comfortably under the other.
The failed request pauses and resumes from the exact checkpoint it left off at, rather than starting the pull over from the beginning. The attempt is logged, and any log type can trigger a configurable email or SMS alert.
Yes. Pull rules can filter on either a standard NetSuite field or a custom field, and post-pull actions can write to or read from either type in the same rule set.
Yes. The same rule engine that maps fields can also exclude named SKUs entirely, so a line item like a freight surcharge never gets saved as an actual product line on the order.
By default each package pushes its own tracking number, but InfiPlex can also combine multiple packages into a single package on the NetSuite side, using the first tracking number found, with specific order sources excluded from that consolidation if they need to stay itemized.
Yes. A specific list of NetSuite order IDs can be imported on demand immediately, without waiting for the next scheduled pull, and the same pull rules that apply on schedule still apply to that manual import.
Watching a NetSuite sync fall behind or fail silently?
We run NetSuite connections across concurrency limits, custom field mappings, and multi-location inventory every day. Tell us where it's breaking and we'll help you find the actual cause. Contact us, email info@infiplex.com, or call 888‑770‑0857.
Our website uses cookies to help provide the best user experience. By continuing to use this site, you consent to the use of cookies as described in our Privacy Policy. OK