/api/public/v2 — v1 remains fully supported during any migration period, so your existing integration will not break when v2 ships.
v1.0 — July 2026
Initial public release of the Now Shipping Public API v1. Base URL:https://now.com.eg/api/public/v1Coverage area: Cairo, Giza, Qalyubia (Greater Cairo)
Currency: EGP
Multi-tenant company integrator model
Introduced the company account architecture: one API key manages all merchant sub-accounts on your platform. PassX-Merchant-Id per request to route orders, pickups, and fee previews to the correct merchant. Accepted values for X-Merchant-Id include businessAccountCode, externalMerchantId, or MongoDB _id.
Merchant onboarding
POST /merchants creates a fully ready-to-ship merchant sub-account in a single API call — no admin setup required. The created account is immediately marked isVerified: true and isCompleted: true with a default pickup address. Use GET /merchants and GET /merchants/{id} to list and retrieve merchants by any identifier.
Orders CRUD
Full create, read, update, cancel, and delete lifecycle for three order types:- Deliver — standard outbound delivery with optional COD and express shipping
- Return — inbound return linked to an original completed order
- Exchange — combined delivery and return in one order
AWB PDF download
GET /orders/{orderNumber}/awb returns a printable shipping label in application/pdf format. Pass ?size=A4 (default) or ?size=A5 to match your label printer.
Pickups CRUD
Full create, read, update, cancel, and delete lifecycle for courier pickup requests. Update and delete are allowed while status isnew or pendingPickup.
Fee preview
POST /fees/calculate— preview the shipping fee for an order before creating it. PassX-Merchant-Idto apply merchant-specific pricing.POST /pickups/calculate-fee— preview the pickup fee before scheduling.
Fees are always computed server-side from governorate, order type, express flag, and custom pricing rules. Never send
orderFees, pickupFees, fee, shippingFee, or amountOfFees in create or update request bodies — those fields are ignored.Delivery zone catalog
GET /delivery-zones returns the authoritative list of governorates and zones. The endpoint supports ETag / If-None-Match caching — cache the response and refresh only when you receive a changed ETag. Always use areas[].value strings exactly as returned; free-text zone names are rejected.
Server-side fee computation
Fees are computed by Now Shipping on every order and pickup create/update. The authoritative fee is returned in the response (orderFees, pickupFees) and is never accepted from the client.
API key scopes
Fine-grained access control with three scopes:orders, pickups, and merchants. New keys default to all three. Keys with only orders and pickups retain backward-compatible access to /merchants endpoints.
externalMerchantId support
Link each Now Shipping merchant to your platform’s own shop ID at onboarding time. PassexternalMerchantId in POST /merchants and use it as X-Merchant-Id on every subsequent request — no need to store Now Shipping’s internal IDs.
Zone validation
Allzone and pickupAddress.zone values are validated against the live delivery catalog on every request. Invalid zones return 400 VALIDATION_ERROR with the message Area / zone is not valid.
Rate limiting
120 requests per minute per API key. Requests beyond this limit return429 RATE_LIMITED. Implement exponential backoff in your retry logic.
