<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: FulfillNexa by SBT</title>
    <description>The latest articles on DEV Community by FulfillNexa by SBT (@fulfillnexa).</description>
    <link>https://dev.to/fulfillnexa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4131202%2F67222f3b-ed90-43ff-a7d2-f8cdbbb06320.png</url>
      <title>DEV Community: FulfillNexa by SBT</title>
      <link>https://dev.to/fulfillnexa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fulfillnexa"/>
    <language>en</language>
    <item>
      <title>Returns for China-Origin One-Piece Dropshipping: Design the Reverse Lane Before the First Sale</title>
      <dc:creator>FulfillNexa by SBT</dc:creator>
      <pubDate>Fri, 18 Sep 2026 15:03:33 +0000</pubDate>
      <link>https://dev.to/fulfillnexa/returns-for-china-origin-one-piece-dropshipping-design-the-reverse-lane-before-the-first-sale-5b9o</link>
      <guid>https://dev.to/fulfillnexa/returns-for-china-origin-one-piece-dropshipping-design-the-reverse-lane-before-the-first-sale-5b9o</guid>
      <description>&lt;p&gt;Most cross-border sellers design the outbound trip — pick, pack, dispatch, track, deliver — and treat returns as an afterthought. Then the first overseas return arrives and the "cheap" one-piece model reveals its hidden cost: a buyer in Berlin wants to return a €25 parcel, and nobody agreed who pays to get it back, or whether it comes back at all. Returns are not an edge case in dropshipping; they are a structural part of the model, and the ones who plan the reverse lane up front keep their platform metrics and their margins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why returns are harder for one-piece than for a domestic warehouse
&lt;/h2&gt;

&lt;p&gt;When stock is already in the destination country, a return is a local hop back to a nearby warehouse. When stock is at origin, the returned parcel has to make a decision: ship it back across a border (expensive, slow, often more than the item is worth), dispose or liquidate it locally, or route it to a contracted returns partner in-market. That decision has to be made per category, per destination and per margin — not improvised when the customer emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four reverse routes, and when each makes sense
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Return-to-origin.&lt;/strong&gt; Only worth it for high-value items that can be restocked and resold. For a low-value parcel the cross-border return leg usually destroys more value than it recovers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local disposition / liquidation.&lt;/strong&gt; Sell the returned unit in-market at a discount, or write it off. Fast, keeps the buyer's refund moving, no freight gamble.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contracted in-market returns partner.&lt;/strong&gt; A third party receives, inspects and either restocks locally or consolidates a pallet back. This is how sellers keep a domestic-feeling returns experience without owning a destination warehouse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refund-without-return.&lt;/strong&gt; For very low-value items, refunding and letting the buyer keep the parcel is often the cheapest clean outcome — but it needs a policy boundary so it is not abused.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The point is not which one is right; it is that you choose per SKU &lt;em&gt;before&lt;/em&gt; selling, and put it in the operating plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  The buyer-facing contract that protects your account
&lt;/h2&gt;

&lt;p&gt;Marketplaces and card networks punish slow or refused returns. Whatever reverse route you pick, the buyer needs a clear, honest policy: how long they have, who pays the return leg, and how fast the refund moves once the parcel is received and inspected. A return that is inspected and dispositioned at the origin facility can be restocked against the next order — but that only works if the outbound and reverse flows share one inventory system, so a restocked unit is not double-allocated to a pending order.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customs is in the returns conversation too
&lt;/h2&gt;

&lt;p&gt;A returned parcel re-entering a country is its own customs event, and the original import paperwork (the IOSS reference, the CBP entry, the DDP/DDU posture) affects whether a return can even be brought back cleanly and whether duty can be reclaimed. Treat returns as the mirror image of the outbound customs decision, not a separate logistics ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the physical operation closes the loop
&lt;/h2&gt;

&lt;p&gt;FulfillNexa by SBT (fulfillnexa.com) runs its single-piece e-commerce workflow — including return receiving, inspection and restocking — out of its Dongguan facility, alongside a Shenzhen consolidation hub for oversized and sea-air / air-sea transshipment and a Suzhou site for East China supplier consolidation. Because the reverse flow shares the same operating system as the outbound one, a returned unit is inspected and dispositioned against the same inventory ledger, so restock and refund stay honest.&lt;/p&gt;

&lt;p&gt;The lesson: in one-piece dropshipping, the returns lane is part of the product, not a support ticket. Decide the reverse route per SKU, publish a policy that matches it, and wire it into the same inventory system that ships the order — before the first overseas buyer clicks "return."&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Published by FulfillNexa by SBT (fulfillnexa.com), a China-origin cross-border fulfillment operation. This is an operating overview, not legal or tax advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>logistics</category>
      <category>fulfillment</category>
      <category>operations</category>
    </item>
    <item>
      <title>China-Direct One-Piece Fulfillment vs Holding Inventory Abroad: A Decision Model, Not a Religion</title>
      <dc:creator>FulfillNexa by SBT</dc:creator>
      <pubDate>Fri, 18 Sep 2026 14:52:05 +0000</pubDate>
      <link>https://dev.to/fulfillnexa/china-direct-one-piece-fulfillment-vs-holding-inventory-abroad-a-decision-model-not-a-religion-86j</link>
      <guid>https://dev.to/fulfillnexa/china-direct-one-piece-fulfillment-vs-holding-inventory-abroad-a-decision-model-not-a-religion-86j</guid>
      <description>&lt;p&gt;Every cross-border seller eventually hits the same fork: ship each order from China as it comes, or import bulk stock to a warehouse in the destination country first. Neither is "right" — they optimise different things, and picking by vibe is how sellers end up with either dead overseas stock or surprise parcel costs. This is the decision model we use to route that choice per SKU, not per brand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core trade
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;China-direct one-piece&lt;/th&gt;
&lt;th&gt;Destination-held inventory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stock position&lt;/td&gt;
&lt;td&gt;Inventory stays at origin until an order releases it&lt;/td&gt;
&lt;td&gt;Inventory is imported before a customer orders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Long-tail variants, demand testing&lt;/td&gt;
&lt;td&gt;Proven SKUs needing short domestic delivery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main constraint&lt;/td&gt;
&lt;td&gt;International parcel cost and delivery variability&lt;/td&gt;
&lt;td&gt;Forecast accuracy and destination storage exposure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Returns&lt;/td&gt;
&lt;td&gt;Needs a separately agreed return route&lt;/td&gt;
&lt;td&gt;Local handling easier if contracted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cash exposure&lt;/td&gt;
&lt;td&gt;Procurement and origin storage still apply&lt;/td&gt;
&lt;td&gt;Procurement, bulk freight and destination stock&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The trap is choosing on the pick-and-pack fee alone. A bulky, low-margin item can lose its whole margin in parcel transport, while a compact item with uncertain demand often benefits from keeping stock near its suppliers. Model both options using the &lt;em&gt;same&lt;/em&gt; basket, the same destination postcode and the same delivery promise — otherwise you are comparing two different questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where one-piece genuinely wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Testing.&lt;/strong&gt; You cannot forecast a product you have never sold. One-piece lets you validate a SKU with single units before committing to a container.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep variant catalogues.&lt;/strong&gt; Apparel at size-by-colour depth, toys, accessory lines — pre-positioning every variant abroad is a cash trap; one-piece keeps the full catalogue live from one origin pool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel from one stock source.&lt;/strong&gt; The same inventory can serve Shopify, Amazon FBM, TikTok Shop and eBay, so you are not splitting stock across three warehouses to feed three channels.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where destination-held wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proven, stable, high-velocity SKUs.&lt;/strong&gt; Once a product reliably moves, a domestic last-mile beats an international parcel on speed and per-unit cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery-promise-sensitive markets.&lt;/strong&gt; If your category lives on two-day delivery, origin shipping will not compete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mature answer is usually hybrid: keep the long tail and every new SKU on China-direct one-piece, and graduate validated winners into bulk replenishment or an FBA pool — from the same inventory where possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The constraint people ignore: customs is part of the model
&lt;/h2&gt;

&lt;p&gt;The two options are not just different warehouses — they are different customs events. China-direct parcels clear in the buyer's country per order (US CBP entry, EU VAT/IOSS on the declaration, UK HMRC), and DDP versus DDU changes who pays what at the door. Destination-held stock is imported once, in bulk, under the importer of record who owns that entry. If you compare "cost per parcel" without pricing the customs treatment on both sides, the model is incomplete.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the physical network supports the choice
&lt;/h2&gt;

&lt;p&gt;A routing decision is only as good as the floor that executes it. FulfillNexa by SBT (fulfillnexa.com) runs three China sites with different roles — a Shenzhen consolidation hub for oversized cargo and sea-air / air-sea transshipment, a Suzhou site for East China supplier consolidation, and a Dongguan facility for single-piece e-commerce — so the same seller can run one-piece for the long tail and consolidate bulk replenishment for winners without one compromise floor handling both badly.&lt;/p&gt;

&lt;p&gt;Treat it as a per-SKU decision you re-run as data comes in, not a brand-wide identity. Test with one-piece, graduate with bulk, and let the customs and cash trade-offs — not the pick fee — make the call.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Published by FulfillNexa by SBT (fulfillnexa.com), a China-origin cross-border fulfillment operation. This is an operating framework, not a rate card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>logistics</category>
      <category>fulfillment</category>
      <category>strategy</category>
    </item>
    <item>
      <title>From a Chinese Warehouse Shelf to an Overseas Doorstep: The Real Path of a One-Piece Dropshipping Order</title>
      <dc:creator>FulfillNexa by SBT</dc:creator>
      <pubDate>Fri, 18 Sep 2026 14:50:51 +0000</pubDate>
      <link>https://dev.to/fulfillnexa/from-a-chinese-warehouse-shelf-to-an-overseas-doorstep-the-real-path-of-a-one-piece-dropshipping-2io5</link>
      <guid>https://dev.to/fulfillnexa/from-a-chinese-warehouse-shelf-to-an-overseas-doorstep-the-real-path-of-a-one-piece-dropshipping-2io5</guid>
      <description>&lt;p&gt;"Dropshipping from China" gets described two ways: a mystical relay where a customer buys and a factory somewhere mails a plastic-wrapped box three weeks later, or a boring supply-chain diagram nobody wants to read. The truth is a specific, repeatable sequence of events, and once you see it as a pipeline you can actually operate it. This walks one single-piece order from a Chinese warehouse shelf to an overseas buyer's door, step by step, and points out where orders quietly break.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "one-piece" actually means
&lt;/h2&gt;

&lt;p&gt;One-piece (single-piece) fulfillment means the sellable stock sits in China, and each individual customer order is picked, packed and shipped directly to the overseas buyer — no bulk container shipped ahead to a foreign warehouse. Inventory stays at origin until an order releases it. That is the whole idea; everything else is execution.&lt;/p&gt;

&lt;p&gt;It suits catalogues with many variants and uncertain demand — apparel sizes and colours, toys, accessories — where pre-positioning every SKU abroad would tie up cash in stock that may not sell.&lt;/p&gt;

&lt;h2&gt;
  
  
  The seven events between "order paid" and "delivered"
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SKU master first.&lt;/strong&gt; Before any order moves, each variant needs a clean record: supplier code, packed dimensions, packed weight, product flags (battery, magnet, liquid). Every later step — routing, customs, cost — reads from this. A missing dimension or an unknown battery flag is where a smooth order turns into an airport hold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inbound and stock-in.&lt;/strong&gt; Goods arrive from one or many factories into the origin warehouse, checked by SKU against the advance shipment notice. Discrepancies are caught at receiving, not at pick time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order sync and routing rules.&lt;/strong&gt; The customer order flows in from the sales channel. The system picks the lane per order from destination, declared value, product flags and the promised delivery window — and that same decision sets the customs posture (see step 6).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick, pack, brand.&lt;/strong&gt; Scan-verified picking checks the SKU and parcel at pick and at handover. The order is packed in &lt;em&gt;your&lt;/em&gt; packaging with &lt;em&gt;your&lt;/em&gt; inserts; nothing in the box reveals the supply chain, so the buyer sees your brand, not a marketplace seller.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cutoff and dispatch.&lt;/strong&gt; Orders confirmed before the agreed daily cutoff move on that working-day cycle; tracking is pushed back to the sales channel. (The cutoff is a real operating parameter, not a "same-day guarantee" — the honest version is that cutoff times and working-day calendars are agreed per market in the operating plan.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Line-haul and clearance.&lt;/strong&gt; The parcel moves on the chosen channel. This is where most sellers get burned: customs is decided at routing, not at the border. US CBP entry, EU VAT/IOSS number on the declaration, UK HMRC treatment, and DDP versus DDU are set per destination market. A missing IOSS number quietly reroutes an EU parcel into a hold queue; a DDU assumption hands your buyer a surprise tax bill and a refusal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Last-mile and delivery.&lt;/strong&gt; After line-haul, the parcel enters the destination's local courier network, so the buyer sees a normal domestic-style tracking history rather than a freight movement.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where one-piece orders actually fail
&lt;/h2&gt;

&lt;p&gt;Not at the packing table — at the seams. The three recurring failure points are: an incomplete SKU master (wrong dimensions blow up dimensional-weight pricing; an undeclared battery gets rejected at air acceptance), customs posture treated as an afterthought (DDP/DDU and IOSS/CBP decided late), and returns never planned before the first sale. Design those three in advance and the pipeline is boring in the best way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the physical layout matters to the routing logic
&lt;/h2&gt;

&lt;p&gt;Routing can only send an order to a floor that can handle it. FulfillNexa by SBT (fulfillnexa.com) runs three China warehouse sites with deliberately different roles — a Shenzhen consolidation hub near the airport corridor for oversized cargo and sea-air / air-sea transshipment, a Suzhou site for East China supplier consolidation across the Yangtze River Delta, and a Dongguan facility with multiple loading docks for single-piece e-commerce — so a bulky item, a consolidated inbound, and an apparel parcel each route to the floor built for them rather than to one shared, compromise space.&lt;/p&gt;

&lt;p&gt;One-piece dropshipping is not "no inventory and no work." It is a defined pipeline that trades destination stock investment for routing discipline. Get the SKU master, the routing-time customs decision and the returns plan right, and a single parcel really can go from a Chinese shelf to an Ohio doorstep without the buyer ever knowing where it started.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Published by FulfillNexa by SBT (fulfillnexa.com), a China-origin cross-border fulfillment and freight-forwarding operation. This is an operational walkthrough, not a rate card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>logistics</category>
      <category>fulfillment</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Idempotent Order Intake: Handling Duplicate Webhooks Across Shopify, Amazon FBM and TikTok Shop</title>
      <dc:creator>FulfillNexa by SBT</dc:creator>
      <pubDate>Fri, 18 Sep 2026 12:11:00 +0000</pubDate>
      <link>https://dev.to/fulfillnexa/idempotent-order-intake-handling-duplicate-webhooks-across-shopify-amazon-fbm-and-tiktok-shop-acp</link>
      <guid>https://dev.to/fulfillnexa/idempotent-order-intake-handling-duplicate-webhooks-across-shopify-amazon-fbm-and-tiktok-shop-acp</guid>
      <description>&lt;p&gt;When you run one fulfillment pipeline fed by several commerce channels, the single most common production bug is not routing or packing — it is the duplicate webhook. A channel retries an order event because your endpoint returned slowly, and suddenly the same order is queued twice, picked twice, and shipped twice. This post covers the idempotent intake pattern we use so a retried webhook can never create a second parcel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why duplicates are guaranteed, not incidental
&lt;/h2&gt;

&lt;p&gt;Every serious channel treats delivery of a webhook as at-least-once. Shopify, Amazon FBM and TikTok Shop will all re-send an event if they do not get a timely acknowledgement. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same &lt;code&gt;order_id&lt;/code&gt; can arrive two, three, or more times.&lt;/li&gt;
&lt;li&gt;The same line item can be re-sent after a partial failure.&lt;/li&gt;
&lt;li&gt;A cancellation and a fulfillment event can arrive out of order.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your intake assumes "this payload is new," you will overship. The fix is to assume every payload has been seen before and design for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The intake contract
&lt;/h2&gt;

&lt;p&gt;Three rules make order intake safe:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deduplicate on a stable key, not on payload equality.&lt;/strong&gt; Two sends of the same event may differ in timestamp or signature but share &lt;code&gt;channel + channel_order_id&lt;/code&gt;. Store that composite key with a unique constraint; the second insert loses and is acknowledged as a no-op, not processed again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acknowledge fast, process slow.&lt;/strong&gt; Return &lt;code&gt;200&lt;/code&gt; within a tight budget and push the real work onto a queue. A slow handler is what triggers the retry storm in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make every downstream effect idempotent.&lt;/strong&gt; Creating a pick task, printing a label, and writing tracking back to the channel must each carry an idempotency key derived from &lt;code&gt;channel_order_id + line_item_id + action&lt;/code&gt;. A retried worker must produce the same result, not a second parcel.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;webhook -&amp;gt; verify signature -&amp;gt; upsert(order_key)  --if exists--&amp;gt; ack, stop
                                  |
                                  v (new only)
                            enqueue fulfillment job
                                  |
                            job runs with idempotency key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The ordering problem people forget
&lt;/h2&gt;

&lt;p&gt;A cancellation can arrive before the fulfillment job has run, and a re-sent "order created" can arrive &lt;em&gt;after&lt;/em&gt; the cancellation. If you process strictly on arrival, the late "created" resurrects a cancelled order. The guard is a per-order state machine with monotonic transitions: once an order is &lt;code&gt;cancelled&lt;/code&gt; or &lt;code&gt;dispatched&lt;/code&gt;, a stale &lt;code&gt;created&lt;/code&gt; event is acknowledged and dropped, never replayed into the pick queue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mapping channels onto one internal order
&lt;/h2&gt;

&lt;p&gt;Normalize before you store. Each channel's shape is different — Shopify's &lt;code&gt;line_items&lt;/code&gt;, Amazon FBM's order items with their own status, TikTok Shop's lifecycle — but the internal order only needs &lt;code&gt;sku&lt;/code&gt;, &lt;code&gt;quantity&lt;/code&gt;, &lt;code&gt;destination_country&lt;/code&gt;, &lt;code&gt;declared_value&lt;/code&gt;, and product flags (battery, magnet, liquid). Normalize on ingest so the dedup key, the state machine, and the dispatch worker never touch channel-specific fields. This is also where destination-driven customs posture (US CBP entry, EU VAT/IOSS on the declaration, UK HMRC, DDP vs DDU) is attached to the order, so routing and paperwork are decided together rather than bolted on later.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like physically
&lt;/h2&gt;

&lt;p&gt;Idempotent intake only pays off if the floor can act on it. FulfillNexa by SBT (fulfillnexa.com) routes each de-duplicated order to the warehouse that actually handles its cargo type across three China sites — a Shenzhen consolidation hub for oversized and sea-air / air-sea transshipment, a Suzhou site for East China supplier consolidation, and a Dongguan facility for single-piece e-commerce — so the same order key resolves to exactly one pick, on exactly one floor, on exactly one lane.&lt;/p&gt;

&lt;p&gt;The lesson for anyone building multi-channel fulfillment: treat every webhook as a duplicate until proven otherwise. Deduplicate on a stable key, acknowledge fast, make each effect idempotent, and guard the order state machine against out-of-order events. That is what keeps one inventory pool trustworthy across Shopify, Amazon FBM, TikTok Shop and eBay at the same time.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Published by FulfillNexa by SBT (fulfillnexa.com), a China-origin cross-border fulfillment operation. This is an engineering description of our intake model, not a rate card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webhook</category>
      <category>ecommerce</category>
      <category>api</category>
      <category>reliability</category>
    </item>
    <item>
      <title>Connecting Shopify, Amazon FBM, TikTok Shop and eBay to One China Fulfillment WMS</title>
      <dc:creator>FulfillNexa by SBT</dc:creator>
      <pubDate>Fri, 18 Sep 2026 12:07:56 +0000</pubDate>
      <link>https://dev.to/fulfillnexa/connecting-shopify-amazon-fbm-tiktok-shop-and-ebay-to-one-china-fulfillment-wms-3p1f</link>
      <guid>https://dev.to/fulfillnexa/connecting-shopify-amazon-fbm-tiktok-shop-and-ebay-to-one-china-fulfillment-wms-3p1f</guid>
      <description>&lt;p&gt;If you sell across more than one channel from a single China-origin inventory pool, the hard part is not the warehouse — it is the reconciliation layer between channel order models and one physical stock position. This post walks through the integration model we run for cross-border one-piece fulfillment: order intake, inventory allocation, idempotent dispatch, and tracking write-back — the parts that actually break in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core problem: one stock pool, many order schemas
&lt;/h2&gt;

&lt;p&gt;Every channel represents an order differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shopify&lt;/strong&gt; pushes a &lt;code&gt;orders/create&lt;/code&gt; webhook with line items, a fulfillment status, and its own &lt;code&gt;financial_status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amazon FBM&lt;/strong&gt; gives you an &lt;code&gt;OrderStatus&lt;/code&gt; plus a strict shipment-confirmation format; miss the SLA and your metrics slip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TikTok Shop&lt;/strong&gt; has its own order lifecycle and cancellation window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;eBay / WooCommerce&lt;/strong&gt; each add another dialect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you poll each channel separately and decrement stock locally, you will eventually oversell a shared SKU, because two channels can commit the last unit in the same second. The fix is not "sync faster" — it is a single authoritative inventory ledger that every channel reads from and writes reservations against.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture that holds up
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[channels] --webhooks--&amp;gt; [ingest queue] --&amp;gt; [normalizer] --&amp;gt; [order store]
                                                     |
                                             [allocation service]
                                                     |
                                            [single inventory ledger]
                                                     |
                                       [pick/pack/dispatch worker]
                                                     |
                              [tracking write-back to each channel]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three rules make this stable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Normalize on ingest.&lt;/strong&gt; Convert every channel payload into one internal order shape immediately. Downstream logic never touches channel-specific fields. This is where you map &lt;code&gt;sku&lt;/code&gt;, &lt;code&gt;quantity&lt;/code&gt;, &lt;code&gt;destination_country&lt;/code&gt;, &lt;code&gt;declared_value&lt;/code&gt;, and any product flags (battery, magnet, liquid) once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reserve against one ledger.&lt;/strong&gt; Stock is decremented in a single place with a compare-and-set on the available quantity. A reservation either succeeds atomically or fails — no two channels can double-book the last unit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotent dispatch and write-back.&lt;/strong&gt; Every outbound call to a channel carries an idempotency key derived from &lt;code&gt;order_id + line_item_id&lt;/code&gt;. A retried webhook must never create a second parcel.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The parts people get wrong
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cancellation windows differ per channel.&lt;/strong&gt; A cancellation received after the parcel is manifest-closed is no longer a cancellation — it becomes a return or a refusal. Enforce a per-channel cutoff &lt;em&gt;before&lt;/em&gt; the pick queue, not after.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customs is decided at routing time, not at the border.&lt;/strong&gt; The destination market selects DDP vs DDU and the paperwork set (US CBP entry, EU VAT/IOSS number on the declaration, UK HMRC) at the moment the channel is chosen. Treat the IOSS/CBP fields as part of the routing decision, not a later attachment — a missing IOSS number on an EU parcel quietly reroutes it into a hold queue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tracking write-back is where accounts die.&lt;/strong&gt; Amazon FBM and TikTok Shop penalize late or missing shipment confirmations harder than they penalize slow transit. Push the tracking number back on the same event that marks the parcel dispatched, and retry it until acknowledged — do not batch it on a slow cron.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a fulfillment partner should expose to you
&lt;/h2&gt;

&lt;p&gt;If you are evaluating a China-origin 3PL on the integration side, ask specifically for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;single WMS&lt;/strong&gt; that holds one inventory pool across all your channels (not per-channel connectors that each keep their own stock count).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook-driven order intake&lt;/strong&gt; with an idempotency guarantee, so a duplicate webhook never double-ships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-order channel selection&lt;/strong&gt; across their carrier set, so a hot SKU can move express while a long-tail order moves economy — from the same inventory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracking write-back per channel&lt;/strong&gt; on the dispatch event, not a daily digest.&lt;/li&gt;
&lt;li&gt;A clear split of operating roles across their sites. Ours runs three China facilities — a Shenzhen consolidation hub for oversized and sea-air / air-sea transshipment, a Suzhou site for East China supplier consolidation, and a Dongguan facility with multiple loading docks for single-piece e-commerce — so the routing logic can send each order to the floor that actually handles its cargo type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The warehouses are the physical layer; the ledger and the idempotent dispatch path are the part that decides whether your multi-channel catalog stays trustworthy.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Published by FulfillNexa by SBT (fulfillnexa.com), a China-origin cross-border fulfillment operation. This is an engineering description of our integration model, not a rate card.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>api</category>
      <category>fulfillment</category>
      <category>inventory</category>
    </item>
  </channel>
</rss>
