Starting September 24, 2026, NetSuite item-fulfillment saved searches began returning three rows per fulfilled line instead of one. The additional rows contain duplicate order line IDs and a negative quantity, causing the fulfillment sync flow to reject the fulfillment.
To resolve the issue, update the NetSuite fulfillment saved-search filters and reprocess the failed records. Clicking Retry alone will not resolve the issue.
Status: Under investigation. An interim workaround is available, and Celigo is developing a permanent fix.
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
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. The integration app’s existing filter criteria eTail Order Line Id is not empty, returned 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.
Celigo is working with NetSuite to investigate the underlying cause, including whether it relates to saved-search behavior or the bundle/SuiteApp.
Update the fulfillment saved search
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 click 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
- Apply the saved-search workaround and verify that the search returns the correct rows.
- 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.
| Criterion | Configuration |
| 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.
- Click 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.
Permanent fix
Celigo is updating the processing hooks in the affected Integration Apps to:
- Aggregate lines by eTail Order Line Id.
- Exclude any line with a quantity less than or equal to zero.
These changes will handle the affected lines regardless of what the saved search returns.
Once the permanent fix is released, the interim saved-search criteria added for this issue can be removed.
Recommended actions
- Apply the saved-search workaround and reprocess failed fulfillments using the instructions above.
- Open a support case with NetSuite from your account so NetSuite can investigate why the saved search returns duplicate and negative-quantity lines. Include Celigo’s finding that all three rows now contain eTail Order Line Id.
- Monitor for the permanent fix and remove the interim saved-search criteria after the fix is released.
FAQs
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. Clicking 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.
Walmart, eBay, Magento 2, Salesforce, and Amazon Local Selling fulfillment flows are not affected.