Starting September 24, 2026, NetSuite item-fulfillment saved searches returned three rows per fulfilled line instead of one. The additional rows contained duplicate order line IDs and a negative quantity, causing the fulfillment sync flow to reject the fulfillment.
Fulfillments that failed during the incident aren't sent again automatically. To send them, reprocess the failed records. Selecting Retry alone doesn't resolve the error.
Status: Resolved. Celigo's fix for the Shopify – NetSuite and Amazon – NetSuite integration apps was completed on September 30, 2026. NetSuite's fix, which restores the original saved-search behavior, was validated on October 9, 2026.
Applies to
- Shopify – NetSuite integration app
- BigCommerce – NetSuite integration app
- Amazon – NetSuite integration app, specifically the Shipment Add flow
- Custom (DIY) integrator.io flows built on the standard NetSuite item-fulfillment saved search
To check whether a custom flow is affected, open the flow's NetSuite export. If What would you like to export? doesn't show a Search internal ID, the export doesn't use a saved search, and this article doesn't apply. This includes real-time exports and flows that only write records to NetSuite.
Symptoms
Fulfillment export flows fail with errors such as:
| Integration app | Error message |
| Shopify – NetSuite | Quantity must be greater than 0 and/or Fulfillment payloads fulfillment order line items must contain unique line item ids |
| BigCommerce – NetSuite | [{"status":400,"message":"The field 'quantity' is invalid."}] |
| Amazon – NetSuite (Shipment Add) | We are unable to process the XML feed because one or more items are invalid. Please re-submit the feed. |
Affected orders remain unfulfilled in the sales channel until the fulfillment records are reprocessed.
Why this happens
The affected NetSuite item-fulfillment saved search returns three rows for each fulfilled line:
| Row | Quantity |
| Operational fulfillment row | 1 |
| Cost of goods sold (COGS) general ledger posting row | 1 |
| Inventory asset general ledger posting row | -1 |
Previously, custom columns including eTail Order Line Id were populated only on the operational row. As a result, the integration app’s existing eTail Order Line Id is not empty filter was returning one row per fulfilled line.
After the change, all three rows contain eTail Order Line Id. The filter no longer isolates the operational row, and the integration sends all three rows to the sales channel. The duplicate line IDs and negative quantity cause the channel to reject the fulfillment.
Nothing changed in your NetSuite account, Integration App, or integrator.io. The issue is associated with a change in NetSuite’s saved-search behavior.
NetSuite confirmed the defect and released a fix, which Celigo validated on October 9, 2026.
Update the fulfillment saved search
This interim workaround is no longer required. If you added these filters, you can keep or remove them.
Add filters so that the search returns one operational row per fulfilled line.
Edit your account’s copy of the saved search used by the flow. Do not edit the original saved search. For example, the Shopify search may be named Celigo Shopify Fulfillment Export [store].
- In NetSuite, open the fulfillment saved search used by the affected flow and select Edit.
- Go to Criteria > Standard.
- Retain all existing criteria and add the following filters.
- COGS Line: is false
- Formula (Numeric): Formula: {quantity}; condition: greater than; value: 0
- Optionally, if available in your search, also use Tax Line is false and Shipping Line is false.
- Save the search.
- Run or preview the search and verify the results for an affected Item Fulfillment. Confirm that it returns one row per fulfilled line with a positive quantity, with no duplicate lines or -1 rows.
Alternative filter
If COGS Line is unavailable in the criteria list, use: Account Type is –None–
This filter also isolates the operational row by excluding general ledger posting rows.
Important: After saving either filter configuration, confirm the results in NetSuite. Most reported cases where the workaround did not resolve the issue involved incorrectly added criteria or results that still contained duplicate or negative-quantity rows.
Reprocess failed fulfillments
Retry reuses the previously exported data, including the duplicate lines and invalid quantities. After updating the saved search, make the affected records eligible for export again and rerun the flow.
Option A: Reprocess a small number of records
- On each affected Item Fulfillment, clear eTail Order Fulfillment Exported. This checkbox is the “run once” flag that prevents the record from being exported again.
- Rerun the fulfillment flow. Do not use Retry. The flow retrieves fresh data from NetSuite and sends it to the sales channel.
Option B: Reprocess a large number of records
Use a NetSuite mass update to clear eTail Order Fulfillment Exported on the affected records, then rerun the flow.
- Go to Lists > Mass Update > Mass Updates.
- Expand General Updates > Transaction and select Item Fulfillment.
- On Criteria, add the following filters.
- eTail Channel: Select Shopify, BigCommerce, or Amazon, as applicable.
- eTail Order Fulfillment Exported: is true
- Date Last Modified: Use the affected time window in your timezone. Start approximately 30 minutes before the first error and end when you saved the corrected saved search.
-
Shopify Store (custom body) - optional: Select your store. Omit this filter if you want to include all stores.
You can use Date Created instead of Date Last Modified if it better matches the affected records. Add any other criteria your business requires to restrict the update.
- Go to Mass Update Fields.
- Select Apply for eTail Order Fulfillment Exported and leave its value unchecked. This sets the field to false.
- Select Preview and review the records that will be updated.
- If the selected records are correct, run the mass update.
- Rerun the fulfillment flow to process the records that are now eligible for export.
If you used grouping as a temporary workaround
Grouping saved-search results may temporarily allow orders to be marked as shipped, but it can cause errors when the integration attempts to mark the records as exported.
Treat grouping only as a temporary workaround. Restore the ungrouped results so that the records can be marked as exported correctly, and use the saved-search filters described in this article.
How the issue was resolved
- Celigo fix (completed September 30, 2026): The Shopify – NetSuite and Amazon – NetSuite integration apps aggregate lines by eTail Order Line Id and exclude any line with a quantity less than or equal to zero, regardless of what the saved search returns.
- NetSuite fix (validated October 9, 2026): The saved search again returns one row per fulfilled line. This resolved the issue for all affected flows, including the BigCommerce – NetSuite integration app and custom flows.
If you added the interim saved-search filters, you can keep or remove them. The fixes don't conflict with the filters.
Recommended actions
- Reprocess fulfillments that failed during the incident using the instructions above.
- If you added the interim filters, you can keep or remove them. If you remove them, run the saved search and confirm that it returns one positive-quantity row per fulfilled line.
FAQs
Is this issue resolved?
Yes. Celigo's fix for the Shopify – NetSuite and Amazon – NetSuite integration apps was completed on September 30, 2026, and NetSuite's fix was validated on October 9, 2026. Fulfillments that failed before the fixes still need to be reprocessed.
Did something change in my Celigo integration?
No. This issue is associated with a change in NetSuite’s saved-search behavior. No Integration App or integrator.io deployment is linked to the start of the issue.
Why do records still fail after I apply the workaround?
Check that the criteria were added correctly and that the saved search no longer returns duplicate lines or -1 rows.
Also confirm that you cleared eTail Order Fulfillment Exported and reran the flow. Selecting Retry alone will not resolve the issue because it reuses the previously exported data.
What if COGS Line is not available?
Use Account Type is –None– to isolate the operational row. Save the search and verify that the results contain one positive-quantity row per fulfilled line.
Which flows are affected?
The issue affects Shopify – NetSuite, BigCommerce – NetSuite, Amazon – NetSuite (Shipment Add), and custom (DIY) integrator.io flows using the same item-fulfillment saved-search pattern.
To check a custom flow, see Applies to.
Walmart, eBay, Magento 2, Salesforce, and Amazon Local Selling fulfillment flows are not affected.