This page applies to OAuth apps published in Zid App Market. Private apps are not listed in the market and do not go through review.
| Field | Requirement |
|---|---|
| Company name (Arabic) | Required |
| Company name (English) | Required |
| Commercial Registration Number | Required β Saudi CR numbers must be exactly 10 digits |
| CR Certificate | Required β PDF, JPG or PNG, up to 5 MB |
| Is your company VAT-registered? | Required for companies resident in Saudi Arabia |
| VAT Registration Number | If VAT-registered β 15 digits, starting and ending with 3 |
| VAT Certificate | PDF, JPG or PNG, up to 5 MB |
| Country, City | Required |
| Address Line 1, Building Number, District | Required |
| Postal Code | Required β 5 digits |
| Address line 2 | Optional |
| Work field, Customer count | Optional |
| Field | Requirement |
|---|---|
| ID document | Required β PDF, JPG or PNG, up to 5 MB |
| Freelancer document | Optional |
| Country, City | Required |
| Address fields | Optional |
Document verification is separate from review. Your documents carry a verification state shown at the top of the Partnership page. Until finance verifies them, payouts cannot be settled β but an unverified state does not block you from submitting an app.
| Field | Requirement |
|---|---|
| Partnership Officer β Full Name (Arabic) | Required |
| Partnership Officer β Full Name (English) | Required |
| Partnership Officer β Email Address | Required |
| Partnership Officer β Mobile Number | Required β format +966 5X XXX XXXX |
| Add a Financial Officer | Optional toggle β a separate person who receives financial correspondence |
/partner/{id}/bank-account| Field | Requirement |
|---|---|
| Bank name | Required |
| Account holder name | Required |
| Country | Required β detected from your IBAN if you leave it blank |
| IBAN | Required if your country uses IBAN. Letters and digits only, validated |
| SWIFT / BIC code | Always required β 8 or 11 characters, letters and digits only |
| Account number | Shown instead of IBAN if your country does not use IBAN β 4 to 17 characters |
| Routing number | Required for US banks |
| Tax document | PDF, PNG or JPEG, up to 5 MB |
Your VAT answer and your tax document must agree. You declare whether you are VAT-registered in Partnership β Business Details, while the certificate is uploaded on the Bank account page, where the field is labelled optional. Reviewers check the two against each other, and a mismatch is one of the most common finance flags.
| Public app | Published to Zid App Market. Merchants discover, install and rate it. Requires review before going live |
| Private app | Offered to a single merchant store by invitation. Not reviewed, not listed |
| Field | Requirement |
|---|---|
| App name (Arabic) | Required β 3 to 24 characters, must contain Arabic, unique across the market |
| App name (English) | Required β 3 to 24 characters, must not contain Arabic, unique across the market |
| Category | Required |
| Tags | Optional |
Briefly explain (50β200 characters) why your app needs the selected scopes β reviewers use this to validate the request.
| Field | Requirement |
|---|---|
| App name (Arabic / English) | As above |
| Developer name (Arabic) | Required β Arabic letters and spaces only |
| Developer name (English) | Required β Latin letters, spaces and hyphens only |
| App URL | Required β must start with https:// |
| Video URL | Optional β public YouTube link only, other providers are not supported |
| Category, Tags | Category required |
| Field | Requirement |
|---|---|
| Application website | Optional β your public marketing site, if different from the App URL |
| Redirection URL | Required β where Zid sends merchants after install to start the OAuth flow |
| Callback URL | Required β where Zid returns the OAuth code after the merchant authorizes your app |
| Maintainer email | Required β reviewers and Zid support reach you here |
| Field | Requirement |
|---|---|
| Phone number | Required if no support channel URL |
| Support channel URL | Required if no phone number β WhatsApp, Telegram or a support portal are all accepted |
| FAQ URL | Optional |
| Privacy policy URL | Required for review |
A WhatsApp or Telegram link is fine as your support channel. It is not acceptable as your privacy policy β that must be a real policy page.
| Field | Limit |
|---|---|
| Short description (Arabic / English) | 100 characters each |
| Description (Arabic / English) | 4,000 characters each |
| Screenshots (Arabic) | Required. You cannot save your listing without at least one |
| Screenshots (English) | Optional β shown to merchants viewing your listing in English |
When you're ready, send this app to our reviewers. They will check the listing details, scopes, and webhooks before publishing it to the App Market.
| State | Meaning |
|---|---|
| Draft | Not yet submitted. Only you can see it |
| Request to publish | Submitted, waiting for review |
| Published | Live in the market |
| Rejected | Not approved. Zid sends you the reason |
| Unpublished | Was live, now withdrawn |
-test hostname is rejected.Your pricing must match what you charge everywhere else. If your app is sold on other platforms, or priced on your own website, your Zid plans must match that pricing. A different price on Zid is not accepted.
| Rejected flow | What to do instead |
|---|---|
| Signup or login before OAuth β the merchant hits your registration form before they ever see Zid's consent screen | Start OAuth immediately, then link the account after the callback |
| Generic homepage or manual discovery β the merchant lands on your marketing site or settings area and has to go hunting for the Zid integration | Open OAuth directly, or your approved dedicated setup journey |
| Manual credentials or manual store identification β asking the merchant to paste tokens, API keys, client secrets, a Store ID or a store URL | Identify the store automatically through OAuth and exchange the code on your server |
error_code. Treat "activation started, no callback arrived" as a normal outcome, and make sure a retry doesn't create a duplicate connection.code_challenge and code_verifier are ignored, so your protection against request forgery is the state parameter β generated per request, bound to the session, and validated before you accept the callback.