Commercial-Registration-Certificate-Oman OCR API
Introduction
The Commercial Registration Certificate Oman OCR API provides a structured way to extract information from a Commercial Registration (CR) Certificate issued by the Ministry of Commerce, Industry & Investment Promotion through the Oman Business Platform (OBP). The API accepts a URL of a CR certificate (image or PDF) as input and returns the parsed certificate fields as a structured JSON response wrapped in an event envelope.
The Commercial Registration Certificate is a bilingual (English / Arabic) multi-page document that establishes the legal existence of a business entity in the Sultanate of Oman. It contains the registration number, registered name, legal type, head office address, contact details, establishment and expiry dates, share capital breakdown, tax identification number, registered business sectors, authorized managers / signatories, and registered commercial activities. It is the primary KYB document used to validate Omani entities during onboarding.
This API enables seamless integration into KYB (Know Your Business), merchant onboarding, and corporate-customer verification workflows, eliminating the need for manual data entry across the multiple sections of the certificate. The structured output preserves the original field semantics of the certificate, making it suitable for direct mapping into KYB systems, CRMs, beneficial-owner registries, and compliance archives.
Customers (banks, NBFCs, fintechs, lenders, insurers, payment aggregators, marketplaces operating in Oman or transacting with Omani entities) routinely collect CR certificates as the primary corporate-identity proof during merchant onboarding. They are required to validate the certificate, key in the printed fields against the merchant record, capture the full list of authorized signatories and registered activities, and store the extracted data in downstream KYB systems. Doing the extraction manually is operationally infeasible at onboarding scale, especially because the certificate spans multiple pages and contains repeating sections (managers, activities) of variable cardinality. Generic OCR tools cannot reliably preserve this nested structure.
The product gap is a single, deterministic, audit-friendly API that takes a Commercial Registration certificate URL and returns a structured JSON of all printed fields, including the repeating manager and activity sections, with explicit nulls for fields that could not be detected.
API Details
Endpoint:
POST https://api.signzy.app/api/v3/extraction/Commercial-Registration-Certificate-OmanPOST https://api-preproduction.signzy.app/api/v3/extraction/Commercial-Registration-Certificate-OmanRequest body parameters:
Parameter | Type | Required | Description |
|---|---|---|---|
file_url | string (url) | Yes | Persist URL of the Commercial-Registration-Certificate-Oman to be extracted. accepts: png, jpeg, pdf |
{
"file_url": "img_url"
}Request headers:
Name | Value | Required | Description |
|---|---|---|---|
Content-Type | application/json | Yes | The type of content that the request body contains. |
Authorization | XXXXXXXXXXX | Yes | An authentication token to authorize the request. Reach out to the Signzy support team to get one created. |
Code samples:
curl --location 'https://api-preproduction.signzy.app/api/v3/extraction/Commercial-Registration-Certificate-Oman' \
--header 'Content-Type: application/json' \
--header 'Authorization:<auth_key>' \
--data '{
"file_url": "<img_url>"
}'Response body parameters:
Parameter | Data type | Description |
|---|---|---|
event_type | string | Type of the emitted event. Always obp.cr_certificate.issued for a successful extraction. |
event_id | string | Unique identifier of the extraction event. Useful for logging, idempotency, and audit trails. |
timestamp | string | Server-side UTC timestamp of when the extraction was performed. |
data.certificate_type | string | Type of certificate detected. Expected value: COMMERCIAL_REGISTRATION. |
data.registration_details.registration_number | string | Unique Commercial Registration (CR) number assigned by the Ministry. Null if not detected. |
data.registration_details.registration_name_en | string | Registered name of the entity as printed on the English side of the certificate. Null if not detected. |
data.registration_details.legal_type_en | string | Legal form of the entity (e.g., LLC, SAOG, SAOC, Sole Proprietorship) as printed on the English side. Null if not detected. |
data.registration_address.head_quarter_en | string | Head office address of the entity in the format Governorate / Wilayat / Area as printed on the English side. Null if not detected. |
data.registration_address.email | string | Registered contact email address. Null if not detected. |
data.registration_address.mobile | string | Registered contact mobile number. Null if not detected. |
data.registration_address.postal_code | string | Postal Code (P.C.) of the registered address. Null if not detected. |
data.registration_address.po_box | string | P.O. Box of the registered address. Null if not detected. |
data.registration_information.cr_span_years | number | CR validity span in years (duration of establishment). Null if not detected. |
data.registration_information.establishment_date | string | Date the entity was established, as printed on the document. Null if not detected. |
data.registration_information.fiscal_year_end | string | End of the fiscal year in MM/DD format. Null if not detected. |
data.registration_information.registration_date | string | Date the entity was registered with the Ministry, as printed on the document. Null if not detected. |
data.registration_information.register_status | string | Current status of the registration (e.g., Active, Suspended, Cancelled). Null if not detected. |
data.registration_information.expiry_date | string | Expiry date of the certificate, as printed on the document. Null if not detected. |
data.share_capital.capital_cash_omr | number | Cash capital subscribed, in Omani Rial (OMR). Null if not detected. |
data.share_capital.in_kind_capital_omr | number | In-kind capital subscribed, in OMR. Null if not detected. |
data.share_capital.total_capital_omr | number | Total capital (cash + in-kind), in OMR. Null if not detected. |
data.share_capital.number_of_shares | number | Total number of issued shares. Null if not detected. |
data.share_capital.share_value_omr | number | Per-share nominal value, in OMR. Null if not detected. |
data.share_capital.tax_identification_number | string | Tax Identification Number (TIN) of the entity. Null if not detected. |
data.share_capital.cr_mortgaged | string | Indicates whether the Commercial Registration is mortgaged. Expected values: Yes, No. Null if not detected. |
data.share_capital.foreign_investment | string | Indicates whether the entity is subject to foreign investment. Expected values: Yes, No. Null if not detected. |
data.share_capital.foreign_investment_pct | number | Foreign investment percentage in the entity (0-100). Null if not detected. |
data.business_sectors | array | List of business sectors the entity is registered under. Empty array if none detected. |
data.business_sectors[].code | string | Sector code as printed on the certificate. |
data.business_sectors[].sector_en | string | Sector name in English as printed on the certificate. |
data.authorized_managers | array | List of authorized managers and signatories printed on the certificate. Empty array if none detected. |
data.authorized_managers[].name_en | string | Full name of the manager / signatory in English. |
data.authorized_managers[].id_number | string | National ID number of the manager / signatory. |
data.authorized_managers[].nationality_en | string | Nationality of the manager / signatory in English. |
data.authorized_managers[].passport_no | string | Passport number of the manager / signatory. |
data.authorized_managers[].designation_en | string | Designation / role within the entity in English (e.g., Manager, Authorized Signatory). |
data.authorized_managers[].authorize_en | string | Scope of authorization granted to the signatory in English. |
data.authorized_managers[].joint_or_sole | string | Whether the signatory acts jointly with others or solely. Expected values: Joint, Sole. Null if not detected. |
data.authorized_managers[].date | string | Date the authorization was granted, as printed on the document. Null if not detected. |
data.authorized_managers[].limit | string | Financial or scope limit attached to the authorization. |
data.registered_activities | array | List of registered commercial activities the entity is licensed to perform. Empty array if none detected. |
data.registered_activities[].code | string | ISIC / Ministry-assigned activity code. |
data.registered_activities[].activity_name_en | string | Name of the activity in English as printed on the certificate. |
data.registered_activities[].branch | number | Branch number under which the activity is registered (0 = head office). |
data.registered_activities[].registration_date | string | Date the activity was registered, as printed on the document. Null if not detected. |
{
"event_type": "obp.cr_certificate.issued",
"event_id": "evt_0000000000000003",
"timestamp": "2026-05-15T05:41:24.115580318Z",
"data": {
"certificate_type": "COMMERCIAL_REGISTRATION",
"registration_details": {
"registration_number": "0000000",
"registration_name_en": "XXXXXXX",
"legal_type_en": "XXXXXXX"
},
"registration_address": {
"head_quarter_en": "XXXXXXX / XXXXXXX / XXXXXXX",
"email": "[email protected]",
"mobile": "0000000000",
"postal_code": "0000",
"po_box": "0000"
},
"registration_information": {
"cr_span_years": 0,
"establishment_date": null,
"fiscal_year_end": "00/00",
"registration_date": null,
"register_status": "XXXXXXX",
"expiry_date": null
},
"share_capital": {
"capital_cash_omr": 0,
"in_kind_capital_omr": 0,
"total_capital_omr": 0,
"number_of_shares": 0,
"share_value_omr": 0,
"tax_identification_number": "0000000",
"cr_mortgaged": "No",
"foreign_investment": "No",
"foreign_investment_pct": 0
},
"business_sectors": [
{
"code": "XX",
"sector_en": "XXXXXXX"
},
{
"code": "XXX",
"sector_en": "XXXXXXX"
}
],
"authorized_managers": [
{
"authorize_en": "XXXXXXX",
"date": null,
"designation_en": "XXXXXXX",
"id_number": "0000000",
"joint_or_sole": null,
"limit": "XXXXXXX",
"name_en": "XXXXXXX",
"nationality_en": "XXXXXXX",
"passport_no": "AO0000000"
},
{
"authorize_en": "XXXXXXX",
"date": null,
"designation_en": "XXXXXXX",
"id_number": "0000000",
"joint_or_sole": null,
"limit": "XXXXXXX",
"name_en": "XXXXXXX",
"nationality_en": "XXXXXXX",
"passport_no": "AO0000000"
},
{
"authorize_en": "XXXXXXX",
"date": null,
"designation_en": "XXXXXXX",
"id_number": "0000000",
"joint_or_sole": null,
"limit": "XXXXXXX",
"name_en": "XXXXXXX",
"nationality_en": "XXXXXXX",
"passport_no": "AO0000000"
},
{
"authorize_en": "XXXXXXX",
"date": null,
"designation_en": "XXXXXXX",
"id_number": "0000000",
"joint_or_sole": null,
"limit": "XXXXXXX",
"name_en": "XXXXXXX",
"nationality_en": "XXXXXXX",
"passport_no": "AO0000000"
},
{
"authorize_en": "XXXXXXX",
"date": null,
"designation_en": "XXXXXXX",
"id_number": "0000000",
"joint_or_sole": null,
"limit": "XXXXXXX",
"name_en": "XXXXXXX",
"nationality_en": "XXXXXXX",
"passport_no": "AO0000000"
}
],
"registered_activities": [
{
"activity_name_en": "XXXXXXX",
"branch": 0,
"code": "000000",
"registration_date": null
}
]
}
}Contact Us for Any Assistance
If you have any questions or need assistance, please reach out to our customer support team. You can contact us via email at [email protected]. We strive to provide prompt and reliable assistance, ensuring your queries are addressed effectively.
We value your feedback and are committed to making your experience smooth and enjoyable. Our team is dedicated to assisting you with any needs you may have. Thank you for choosing our services. We look forward to helping you!