1
Register
Registration documents are mandatory. They are uploaded as raw bytes and stored in the sandbox’s isolated object-storage prefix; the storage credential and object key are never disclosed to the registering merchant.
mobileNumber is the Saudi mobile without the country code, so it starts with 5 and is nine digits. deviceReference is a UUID your client generates.For a FREELANCER, omit commercialRegistrationNumber entirely — it is forbidden for that legal basis — and upload FREELANCE_CERTIFICATE in place of COMMERCIAL_REGISTRATION.The response carries a short-lived upload capability. It authorises the document uploads in the next step and nothing else.2
Upload the documents
Uploads accept A storage-provider failure is reported as
application/pdf, image/jpeg, or image/png, up to 1 MiB each. Every merchant uploads NATIONAL_ADDRESS; a commercial entity also uploads COMMERCIAL_REGISTRATION.503 with a machine code. It is never converted into a fake successful upload.3
Verify the one-time code
4
Issue an API credential
From the authenticated merchant session, create the credential and store the secret — it is returned exactly once.See Authentication for rotation and scopes.
5
Bootstrap the sandbox fixtures
Next
Create a shipment
Quote a price, then commit the shipment.
Receive events
Subscribe an endpoint and verify signatures.
A freelancer account registers through the same flow with a different document set. Registration requirements are enforced by the server; read them from the registration response rather than hard-coding a list.
