Skip to main content
POST /merchants onboards a new merchant sub-account under your company in a single request. The created account is immediately verified and ready to ship — no manual admin review required. The businessAccountCode returned in the response is the value you pass as X-Merchant-Id on every subsequent order and pickup request for that merchant.
Call GET /delivery-zones before building your onboarding form. The pickupAddress.zone field must be an exact value string from the zone catalog — any other string fails validation.
Merchants created via the API do not receive Now Shipping dashboard login credentials. Your platform manages them entirely through the API.

Requirements

  • Account type: Company account only. Single-business keys return 403 FORBIDDEN.
  • Scope: merchants
  • Content-Type: application/json

Request headers

Request body

string
required
Merchant owner or business name.
string
required
Contact email address. Must be globally unique across all Now Shipping accounts — if the email is already in use, you receive 409 MERCHANT_ALREADY_EXISTS.
string
required
Egyptian mobile number, exactly 11 digits (e.g. 01012345678).
string
required
Public-facing brand name shown on shipping labels and customer communications.
string
Your platform’s own shop or merchant identifier (e.g. shop_123). Must be unique within your company. Once set, you can pass this value as X-Merchant-Id instead of businessAccountCode.
object
required
Default pickup address for this merchant. Couriers use this address when no override is specified on a pickup request.

Example

Response

201 — Merchant created

string
MongoDB _id of the new merchant account.
string
8-digit code assigned by Now Shipping. Use this as X-Merchant-Id on all order and pickup requests for this merchant.
string
Your platform’s shop ID, echoed back from the request. Also accepted as X-Merchant-Id.
boolean
true — the merchant profile is fully complete.
boolean
true — the account is verified and ready to create orders immediately.
string
MongoDB _id of the company account that owns this merchant sub-account.
string
ISO 8601 timestamp of account creation.

Errors

Save both businessAccountCode and externalMerchantId in your database immediately after a successful response. Use either value as X-Merchant-Id on every subsequent order and pickup request for this merchant. If you receive 409 MERCHANT_ALREADY_EXISTS, call GET /merchants/{merchantId} with the conflicting ID to retrieve the existing record.