This guide targets company integrators using a multi-tenant API key. If you are a single-business account, you can skip Steps 2 and the
X-Merchant-Id header — your key already operates on your own account directly.1
Load delivery zones (cache this response)
Before you build any address form or create any order, fetch the authoritative zone catalog. This call returns every valid governorate and area combination that Now Shipping delivers to. Zone strings must be exact — free text like Partial response:Always use
"Nasr City" will be rejected on order creation.areas[].value verbatim in zone fields — never abbreviations, translated labels, or custom strings.Caching strategy: The zone catalog changes infrequently. Cache the response and send the ETag value back on subsequent calls using the If-None-Match header. When the catalog is unchanged, the API returns 304 Not Modified with no body, saving bandwidth and latency. Refresh the cache periodically (for example, daily) to pick up any zone additions.2
Onboard a merchant
Each shop on your platform maps to one Now Shipping merchant sub-account. A single Response Save both identifiers to your database immediately:
POST /merchants call creates the account, marks it verified, and sets its default pickup address — the merchant is ready to ship immediately after this call.Merchants created via the API do not receive dashboard login credentials. They exist solely as shipping sub-accounts under your company.
201:If you attempt to onboard the same merchant twice, the API returns
409 MERCHANT_ALREADY_EXISTS. Catch this error and fetch the existing record via GET /merchants?search=shop_123 rather than treating it as a hard failure.3
Preview the shipping fee (optional but recommended)
Before creating an order, you can call the fee calculator to display the exact shipping cost to your end-user at checkout. This call is read-only and has no side effects.Response The fee factors in the destination governorate, order type (
200:Deliver, Return, or Exchange), the express shipping flag, and any custom pricing configured for the merchant. Include X-Merchant-Id so the calculation reflects the correct merchant pricing tier.4
Create a delivery order
With the zone catalog loaded and the merchant onboarded, you are ready to create a shipping order. Pass Response Store the
X-Merchant-Id using either the businessAccountCode or externalMerchantId you saved in Step 2. Use referralNumber to link the Now Shipping order back to your platform’s own order ID — you can query or filter by this reference later.201:orderNumber (e.g. 482917) — you need it in the next two steps. The orderFees field in the response is the authoritative, server-computed fee; do not rely on the preview value from Step 3 for billing or reconciliation.5
Download the AWB (shipping label)
After creating the order, download its Air Waybill PDF. The AWB is returned as a raw The
application/pdf binary. Use the -o flag in curl to write it directly to a file.size query parameter controls the label dimensions. Supported values:Print the AWB and attach it to the parcel before the courier arrives for pickup.
6
Schedule a courier pickup
With orders packed and labelled, schedule a courier to collect them. Provide the expected number of orders, a valid future pickup date, and a contact phone number.Partial response Save the
pickupDate must satisfy Now Shipping’s pickup date policy — use a future business date. Pickup fees are computed server-side; do not send pickupFees in the request body.201:pickupNumber to track the pickup’s status via GET /pickups/{pickupNumber}. The pickupFees in the response is the authoritative amount — do not use any value from the optional fee preview.Your integration now covers the full company integrator lifecycle: zone catalog, merchant onboarding, fee preview, order creation, AWB download, and pickup scheduling. For a complete checklist of go-live requirements and common error resolutions, see the Integration Best Practices guide.
Ready to go live? Work through the Integration Best Practices checklist before flipping to production — it covers secure key storage, ETag caching, fee-field hygiene, and error handling patterns every integration needs.
