The problem
eBay is still a top-three channel for a lot of NetSuite distributors, and it is the channel most often bolted on last with a spreadsheet. The reason is that eBay does not behave like the marketplaces most connectors are designed around.
First, the unit of sale is a listing, not a catalogue product. One NetSuite item can sit behind several listings — a fixed-price listing, an auction, a multi-variation listing, a promoted listing — each with its own identifier and its own available quantity. Keeping stock accurate means reconciling one NetSuite item against many listing quantities, not one.
Second, the money is messier. Payouts arrive net of final value fees, insertion fees, promoted-listing fees, international fees and shipping labels bought through the platform, often bundled across many orders in a single settlement. If those fees never reach the GL, gross margin by channel is fiction and the bank reconciliation never lands. Teams routinely post the net payout as revenue, which quietly understates both revenue and expense.
Third, buyers are often guests with no account relationship, so naive imports create thousands of one-off Customer records that clutter the file forever.
What ECOSIRE builds
A NetSuite customization in SuiteScript 2.1, delivered as an SDF project / unmanaged bundle installed in your own account.
### Order ingestion A Map/Reduce script polls the eBay Sell APIs on a schedule, or a RESTlet receives eBay platform notifications for immediate creation. Each eBay order becomes a NetSuite Sales Order or Cash Sale — your choice, depending on whether you invoice or treat marketplace sales as paid-at-order — carrying the eBay order id, the marketplace site, the buyer username and the listing id in custom fields so every transaction traces back to its source.
### Listing to item mapping A custom mapping record links each eBay listing id and variation SKU to a NetSuite Inventory Item, Matrix Item child, Kit/Package or Assembly Item. Multi-variation listings map variation by variation. Unmapped listings are surfaced for review rather than being guessed at, because a wrong item mapping is worse than a failed import.
### Buyer handling You decide the policy: create a distinct Customer per eBay buyer, matched on buyer username stored in a custom field, or route all marketplace orders to a single channel customer with the buyer detail held on the transaction. Either way, shipping addresses come across as the order's ship-to, and repeat buyers do not generate duplicates.
### Quantity sync across listings This is where the eBay build differs most. A scheduled script computes availability from Item Location Configuration and inventory saved searches, then allocates it across the listings tied to that item according to the rules you set — a fixed quantity per listing, a proportional split, a cap, or a reserve held back for other channels. Multi-variation listings are updated at variation level. A User Event script on Item Receipt and Item Fulfillment can trigger an immediate revision for constrained stock, so a sold-out item stops selling rather than becoming an oversell and a defect on your seller account.
### Fulfilment and tracking When an Item Fulfillment is created in NetSuite, the script uploads shipment tracking and carrier to eBay against the correct order line, marking it dispatched within your handling-time commitment. Partial and multi-package shipments are handled as separate fulfilment events against the same eBay order.
### Fee and payout reconciliation Marketplace fees are imported and posted, not netted away. Final value fees, insertion fees, promoted-listing fees, international fees and platform-purchased shipping labels are written to Other Charge or expense items on the transaction or as a periodic Journal Entry, so gross revenue and marketplace expense both appear. Settlement payouts are staged against a clearing account so the deposit that hits the bank reconciles against the orders and fees that produced it. Refunds and cancellations become Credit Memos or Cash Refunds applied to the originating transaction, with the fee credit handled alongside.
### Channel reporting Every marketplace transaction carries a custom segment value — channel, marketplace site, listing type — so eBay P&L, margin after fees and returns rate come out of standard NetSuite saved searches rather than a spreadsheet.
### Multi-site and OneWorld Selling on more than one eBay marketplace site is supported, with each site mapped to the appropriate subsidiary, currency, location and tax nexus under OneWorld.
### Observability A custom sync-log record captures every API call, response, retry and error against the record it touched, with saved searches and optional email alerts. Failed orders queue for retry and can be re-run one at a time.
Who this is for
Distributors and resellers running eBay alongside their own storefront on NetSuite; sellers with large multi-variation listing catalogues who cannot maintain quantities by hand; and finance teams who need marketplace fees in the ledger rather than buried inside a net payout.
How delivery works
1. Scoping call. We review your eBay seller account — marketplace sites, listing types, variation structure, fulfilment policies and how you want fees posted — alongside your NetSuite subsidiaries, item types, locations and chart of accounts. 2. Fixed quote. A written scope and a fixed price, before any code is written. 3. Build. SuiteScript 2.1 scripts, custom records, saved searches and deployments built to that scope. Typical build time is two to four weeks. 4. Sandbox install. Installed in your NetSuite sandbox and connected to eBay's sandbox or a controlled set of live listings. You run real orders, a refund and a fee posting end to end before sign-off. 5. Production. The same tested artifact is installed in production with your approved mappings and parameters. 6. Support window. A defined post-go-live period covering defects and configuration changes, with the source sitting in your own account.
You own the code outright — no per-order metering, no licence key, no vendor dependency to keep selling.