Fulfill orders
Pull orders with the full ship-to address, mark them shipped, attach tracking and notify the marketplace.
The order loop for a WMS/ERP integration (requires orders:read +
orders:write):
1. Get orders as they arrive
Subscribe to order.created, or poll:
curl "https://api.nembol.com/rest/v1/orders?limit=50" \
-H "Authorization: Bearer $NEMBOL_API_KEY"Every order is normalized to one shape regardless of channel: status,
fulfillment_status, lines[], tracking, and buyer including the
ship-to address (buyer.address).
2. Ship it
curl -X POST https://api.nembol.com/rest/v1/orders/{id}/fulfillment \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ship-EBAY-12345" \
-d '{
"mark_shipped": true,
"tracking": {"number": "1Z999...", "carrier": "UPS", "url": "https://..."}
}'With tracking present, Nembol also notifies the source marketplace by
default (eBay, Etsy, Shopify, WooCommerce, Amazon, TikTok Shop, OnBuy,
Square, Squarespace) — the buyer gets the channel's own shipping
notification. Disable with "notify_channel": false.
Gotchas
- The write applies to the whole channel order. Nembol stores one row per line; marking any line shipped ships the order (all its lines).
- Marketplace notification is once-per-order, hard-idempotent. Retrying the call never notifies (or emails) the buyer twice.
- Terminal orders refuse fulfillment: canceled/refunded orders return
422 order_not_fulfillable. - Buyer data is PII — it sits behind
orders:read; process it lawfully and don't store more than you need. channel_notificationin the response tells you exactly what happened:{attempted, delivered, error}.
Last updated on July 30, 2026
Need help?
The API is in private beta — email us and a human replies, usually within one business day.