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.
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.