# Introduction

**Authentication** is mandatory for all endpoints. Please contact for credentials.

### GovVerify

Integrate a suite of goverment digital identies for sign-up, filling forms, signing, etc.

* [iAM Smart](https://github.com/Fill-Easy-Limited/api-v2/tree/master/i-am-smart/README.md) — Hong Kong
* [Singpass](https://github.com/Fill-Easy-Limited/api-v2/tree/master/singpass/README.md) — Singapore
* [Sino Connect](https://github.com/Fill-Easy-Limited/api-v2/tree/master/sino-connect/README.md) — China
* [UAE Pass](https://github.com/Fill-Easy-Limited/api-v2/tree/master/uae-pass/README.md) — United Arab Emirates

### CorpVerify

Search and retrieve documents from corporate registries in real time.

* [API](https://github.com/Fill-Easy-Limited/api-v2/tree/master/corp-verify/README.md)
* [Country Coverage](/countries) (expanding every week)

### Land Registry Search

Search the Hong Kong land registry.

* [Land Registry Report](https://github.com/Fill-Easy-Limited/api-v2/tree/master/land-registry-report/README.md)

### KYC

Verify Identity and Background Check Individuals.

* [KYC China](https://github.com/Fill-Easy-Limited/api-v2/tree/master/kyc-china/README.md)
* [KYC Hong Kong](https://github.com/Fill-Easy-Limited/api-v2/tree/master/kyc-hong-kong/README.md) — AML screening & public register lookups
* [Facial & ID Scan](https://github.com/Fill-Easy-Limited/api-v2/tree/master/facial-and-id-scan/README.md) — ID document, face match & liveness

## Team

* <matthewlee@fill-easy.com>
* <sambarchynbek@fill-easy.com>
* <adilzhumgalbekov@fill-easy.com>
* <ryanlok@fill-easy.com>
* <jonanstein@fill-easy.com>

... and more


# I AM Smart

## Hong Kong's eID

For further details, please refer to the official iAM Smart [API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)

### General Usage Flow

1. Send a request to your service of choice (Authentication, AnonymousForm Filling, Signing, etc.)
2. Send follow up request(s) to Poll Data to obtain the results.\*

\*As the data requires user approval, your system may have to short poll to obtain the results in a timely manner.

### Anonymous vs Authenticated Flow:

* Anonymous: No prior authentication needed, single-step process Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing
* Authenticated: Requires prior authentication, two-step process Examples: Form Filling, Signing, PDF Signing

### Multi-device user journey

There are 2 types of user journeys:

1. single device (mobile with iAM Smart installed)
2. two device (mobile with iAM Smart installed AND any second device)

The primary difference is that two device workflows typically includes displaying a iAM Smart website with a iAM Smart QR code that needs to be scanned to link the request across devices.

Implementation details are in the endpoints documentation.

## Authentication

> Initialize user authentication with iAM Smart eID service.\
> \
> \
> \*\*Browser Flow:\*\*\
> \
> Returns a TempAuthToken (store for subsequent calls) and a URL to iAM Smart's QR page.\
> User scans the QR code with their iAM Smart mobile app, then the browser redirects\
> to your specified redirect URL.\
> \
> \
> \*\*Mobile App Flow:\*\*\
> \
> Returns a universal link to launch the iAM Smart authentication app.\
> After authentication, iAM Smart returns an auth\_code via GET request to your redirect URI.\
> Your mobile app must handle this redirect URI and pass the auth\_code to the token endpoint.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"IamSmartLanguage":{"type":"string","description":"iAM Smart App display language\n","enum":["en-US","zh-HK","zh-CN"],"default":"en-US"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"IamSmartScope":{"type":"string","description":"Setting the scope is required only in cases where operations are chained, e.g auth + formfilling, auth + signing.\nBy default, the scope is set to the value required for the operation.\nRequested scope of authorization based on available services.\nMultiple scopes should be space-separated. Valid scopes are:\neidapi_auth, eidapi_profiles, eidapi_formFilling, eidapi_sign, eidapi_fr, eidapi_bulksign\n","pattern":"^(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign)(\\s+(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign))*$"},"IamSmartActivityClass":{"type":["string","null"],"description":"Android activity class (required if source is android)"},"IamSmartActivityParams":{"type":["string","null"],"description":"Additional activity parameters (optional if source is android)"},"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/auth":{"post":{"tags":["iAM Smart"],"summary":"Authentication","description":"Initialize user authentication with iAM Smart eID service.\n\n\n**Browser Flow:**\n\nReturns a TempAuthToken (store for subsequent calls) and a URL to iAM Smart's QR page.\nUser scans the QR code with their iAM Smart mobile app, then the browser redirects\nto your specified redirect URL.\n\n\n**Mobile App Flow:**\n\nReturns a universal link to launch the iAM Smart authentication app.\nAfter authentication, iAM Smart returns an auth_code via GET request to your redirect URI.\nYour mobile app must handle this redirect URI and pass the auth_code to the token endpoint.\n","operationId":"iamSmartAuthentication","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source","redirect"],"properties":{"lang":{"$ref":"#/components/schemas/IamSmartLanguage"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"redirect":{"$ref":"#/components/schemas/RedirectUri"},"scope":{"$ref":"#/components/schemas/IamSmartScope"},"activityClass":{"$ref":"#/components/schemas/IamSmartActivityClass"},"activityParams":{"$ref":"#/components/schemas/IamSmartActivityParams"}}}}}},"responses":{"200":{"description":"Authentication request successfully initialized.\nStore the token for subsequent API calls.\n","content":{"application/json":{"schema":{"type":"object","required":["token","url"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"Store this token for subsequent API calls"},"url":{"type":"string","format":"uri","description":"Browser: URL to iAM Smart QR page for scanning.\nMobile: Universal link to launch iAM Smart app.\n"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Form Filling

> Request form filling data from authenticated user.\
> \
> \
> Pass the form details, source, and AuthToken (from Authentication endpoint)\
> to initialize the form filling request.\
> \
> \
> Returns a temporary token to be used with Poll Data endpoint to retrieve\
> the requested form filling details.\
> \
> \
> \*\*Note on Profile Fields:\*\*\
> \
> If you request overlapping fields in both \`profileFields\` and \`formData.formFields\`,\
> the \`profileFields\` takes precedence. You must display a consent page per iAM Smart\
> UI/UX requirements when using profile fields.\
> \
> \
> \*\*Note on Form Fields:\*\*\
> \
> The \`formFields\` array specifies which detail fields to request from the user.\
> All requested fields will be displayed to the user in their iAM Smart app for approval.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"ProfileFields":{"type":"array","description":"Mandatorily obtain specific profile fields.\nNote: You must display a consent page per iAM Smart UI/UX requirements when using these fields.\nIf fields overlap between `profileFields` and `formData.formFields`, `profileFields` takes precedence.\n","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender"]}},"FormData":{"type":"object","properties":{"formName":{"type":"string","description":"Form title displayed to user in iAM Smart app","maxLength":100},"formNum":{"type":"string","description":"Form reference code","maxLength":50},"formDesc":{"type":"string","description":"Form description displayed to user","maxLength":500},"formFields":{"type":"array","description":"Detail fields to request from user","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender","prefix","maritalStatus","homeTelNumber","officeTelNumber","mobileNumber","emailAddress","residentialAddress","postalAddress","educationLevel","addressDocInfo","addressDocFile"]}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/formfilling":{"post":{"tags":["iAM Smart"],"summary":"Form Filling","description":"Request form filling data from authenticated user.\n\n\nPass the form details, source, and AuthToken (from Authentication endpoint)\nto initialize the form filling request.\n\n\nReturns a temporary token to be used with Poll Data endpoint to retrieve\nthe requested form filling details.\n\n\n**Note on Profile Fields:**\n\nIf you request overlapping fields in both `profileFields` and `formData.formFields`,\nthe `profileFields` takes precedence. You must display a consent page per iAM Smart\nUI/UX requirements when using profile fields.\n\n\n**Note on Form Fields:**\n\nThe `formFields` array specifies which detail fields to request from the user.\nAll requested fields will be displayed to the user in their iAM Smart app for approval.\n","operationId":"iamSmartFormFilling","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","source","formData"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"The authenticated user token from the Authentication workflow"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"profileFields":{"$ref":"#/components/schemas/ProfileFields"},"formData":{"$ref":"#/components/schemas/FormData"}}}}}},"responses":{"200":{"description":"Form filling request successfully initialized.\nPoll with the returned token to retrieve form data when ready.\n","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"Use this token in Poll Data to retrieve form filling results"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Signing

> Request digital signature for a document hash using iAM Smart.\
> \
> \
> Pass the document details (name and SHA-256 hash), source platform, and the\
> authenticated user token to initialize the signing request.\
> \
> \
> Returns a temporary token and HKIC check digits. Use the token with the Poll Data\
> endpoint to retrieve the signature results after the user approves the signing\
> request in their iAM Smart app.\
> \
> \
> \*\*Hash Requirements:\*\*\
> \
> \- Must be a SHA-256 hash of the document content\
> \- Must be exactly 64 hexadecimal characters\
> \- Use SHA256withRSA signature algorithm (default)<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/signing":{"post":{"tags":["iAM Smart"],"summary":"Signing","description":"Request digital signature for a document hash using iAM Smart.\n\n\nPass the document details (name and SHA-256 hash), source platform, and the\nauthenticated user token to initialize the signing request.\n\n\nReturns a temporary token and HKIC check digits. Use the token with the Poll Data\nendpoint to retrieve the signature results after the user approves the signing\nrequest in their iAM Smart app.\n\n\n**Hash Requirements:**\n\n- Must be a SHA-256 hash of the document content\n- Must be exactly 64 hexadecimal characters\n- Use SHA256withRSA signature algorithm (default)\n","operationId":"iamSmartHashSigning","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","source","name","hash"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"The authenticated user token from the Authentication workflow"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"name":{"type":"string","description":"Document title displayed to user","maxLength":200},"hash":{"type":"string","description":"SHA-256 hash of the document file's content (64 hex characters)","pattern":"^[a-f0-9]{64}$"},"service":{"type":"string","description":"Service description to be displayed to user","maxLength":200},"organisation":{"type":"string","description":"Organisation name","maxLength":200}}}}}},"responses":{"200":{"description":"Signing request successfully initialized.\nPoll with the returned token to get signature results.\n","content":{"application/json":{"schema":{"type":"object","required":["token","hkic"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"Use this token in Poll Data to retrieve signing results"},"hkic":{"type":"integer","description":"HKIC check digits for verification","minimum":1000,"maximum":9999}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## PDF Signing

> Request PDF document signing with embedded digital signature using iAM Smart.\
> \
> \
> Pass the PDF document details (name and base64-encoded hash), service description,\
> and the authenticated user token to initialize the PDF signing request.\
> \
> \
> Returns a temporary token and HKIC check digits. Use the token with the Poll Data\
> endpoint to retrieve the signed PDF after the user approves the signing request\
> in their iAM Smart app.\
> \
> \
> \*\*File Hash Requirements:\*\*\
> \
> \- Must be a base64-encoded hash of the PDF file\
> \- The signed PDF will be returned with the signature embedded\
> \- PDF signature will be visible in PDF readers that support digital signatures<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/pdf-signing":{"post":{"tags":["iAM Smart"],"summary":"PDF Signing","description":"Request PDF document signing with embedded digital signature using iAM Smart.\n\n\nPass the PDF document details (name and base64-encoded hash), service description,\nand the authenticated user token to initialize the PDF signing request.\n\n\nReturns a temporary token and HKIC check digits. Use the token with the Poll Data\nendpoint to retrieve the signed PDF after the user approves the signing request\nin their iAM Smart app.\n\n\n**File Hash Requirements:**\n\n- Must be a base64-encoded hash of the PDF file\n- The signed PDF will be returned with the signature embedded\n- PDF signature will be visible in PDF readers that support digital signatures\n","operationId":"iamSmartPdfSigning","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","source","name","fileHash","service"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"The authenticated user token from the Authentication workflow"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"name":{"type":"string","description":"Document title displayed to user","maxLength":200},"fileHash":{"type":"string","description":"Base64-encoded hash of the PDF file","format":"byte"},"service":{"type":"string","description":"Service description to be displayed to user","maxLength":200},"hkicHash":{"type":"string","description":"Hash of HKIC for verification (optional)","pattern":"^[a-f0-9]{64}$"},"department":{"type":"string","description":"Department name (optional)","maxLength":100}}}}}},"responses":{"200":{"description":"PDF signing request successfully initialized.\nPoll with the returned token to retrieve signed PDF when ready.\n","content":{"application/json":{"schema":{"type":"object","required":["token","hkic"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"Use this token in Poll Data to retrieve PDF signing results"},"hkic":{"type":"integer","description":"HKIC check digits for verification","minimum":1000,"maximum":9999}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Re-authentication

> Re-authenticate a previously authenticated user to verify their identity again.\
> \
> \
> Pass the authenticated user token and source platform to initialize the\
> re-authentication request. This is useful for high-security operations that\
> require fresh user verification.\
> \
> \
> Returns a temporary token. Use this token with the Poll Data endpoint to\
> retrieve the re-authentication results after the user approves the request\
> in their iAM Smart app.\
> \
> \
> \*\*Use Cases:\*\*\
> \
> \- Verify user identity before sensitive operations\
> \- Refresh user authentication for extended sessions\
> \- Comply with security policies requiring periodic re-verification<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/reauth":{"post":{"tags":["iAM Smart"],"summary":"Re-authentication","description":"Re-authenticate a previously authenticated user to verify their identity again.\n\n\nPass the authenticated user token and source platform to initialize the\nre-authentication request. This is useful for high-security operations that\nrequire fresh user verification.\n\n\nReturns a temporary token. Use this token with the Poll Data endpoint to\nretrieve the re-authentication results after the user approves the request\nin their iAM Smart app.\n\n\n**Use Cases:**\n\n- Verify user identity before sensitive operations\n- Refresh user authentication for extended sessions\n- Comply with security policies requiring periodic re-verification\n","operationId":"iamSmartReauthentication","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","source"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"The authenticated user token to re-validate"},"source":{"$ref":"#/components/schemas/IamSmartSource"}}}}}},"responses":{"200":{"description":"Re-authentication request successfully initialized.\nPoll with the returned token to get re-authentication results.\n","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token","description":"Use this token in Poll Data to check re-authentication status"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## POST /iamsmart/v2/request/ccic

> CCIC

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"}}},"paths":{"/iamsmart/v2/request/ccic":{"post":{"tags":["iAM Smart"],"summary":"CCIC","operationId":"ccic","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"token":{"type":"string"}}}}}}}}}}}
```

## Anonymous Form Filling

> Request form filling data without requiring prior authentication.\
> \
> This endpoint combines authentication and form filling in a single flow.\
> Pass the scope, language, source, redirect URL, and form details to initialize\
> the anonymous form filling request.\
> \
> Returns a token and URL. The URL redirects users to iAM Smart where they can\
> authenticate and approve the form filling request in one step.\
> \
> \*\*Note on Profile Fields:\*\*\
> \
> If you request overlapping fields in both \`profileFields\` and \`formData.formFields\`,\
> the \`profileFields\` takes precedence. You must display a consent page per iAM Smart\
> UI/UX requirements when using profile fields.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"IamSmartLanguage":{"type":"string","description":"iAM Smart App display language\n","enum":["en-US","zh-HK","zh-CN"],"default":"en-US"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"IamSmartScope":{"type":"string","description":"Setting the scope is required only in cases where operations are chained, e.g auth + formfilling, auth + signing.\nBy default, the scope is set to the value required for the operation.\nRequested scope of authorization based on available services.\nMultiple scopes should be space-separated. Valid scopes are:\neidapi_auth, eidapi_profiles, eidapi_formFilling, eidapi_sign, eidapi_fr, eidapi_bulksign\n","pattern":"^(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign)(\\s+(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign))*$"},"ProfileFields":{"type":"array","description":"Mandatorily obtain specific profile fields.\nNote: You must display a consent page per iAM Smart UI/UX requirements when using these fields.\nIf fields overlap between `profileFields` and `formData.formFields`, `profileFields` takes precedence.\n","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender"]}},"FormData":{"type":"object","properties":{"formName":{"type":"string","description":"Form title displayed to user in iAM Smart app","maxLength":100},"formNum":{"type":"string","description":"Form reference code","maxLength":50},"formDesc":{"type":"string","description":"Form description displayed to user","maxLength":500},"formFields":{"type":"array","description":"Detail fields to request from user","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender","prefix","maritalStatus","homeTelNumber","officeTelNumber","mobileNumber","emailAddress","residentialAddress","postalAddress","educationLevel","addressDocInfo","addressDocFile"]}}}},"IamSmartActivityClass":{"type":["string","null"],"description":"Android activity class (required if source is android)"},"IamSmartActivityParams":{"type":["string","null"],"description":"Additional activity parameters (optional if source is android)"},"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/formfilling-anonymous":{"post":{"tags":["iAM Smart"],"summary":"Anonymous Form Filling","description":"Request form filling data without requiring prior authentication.\n\nThis endpoint combines authentication and form filling in a single flow.\nPass the scope, language, source, redirect URL, and form details to initialize\nthe anonymous form filling request.\n\nReturns a token and URL. The URL redirects users to iAM Smart where they can\nauthenticate and approve the form filling request in one step.\n\n**Note on Profile Fields:**\n\nIf you request overlapping fields in both `profileFields` and `formData.formFields`,\nthe `profileFields` takes precedence. You must display a consent page per iAM Smart\nUI/UX requirements when using profile fields.\n","operationId":"iamSmartAnonFormFilling","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source","redirect"],"properties":{"lang":{"$ref":"#/components/schemas/IamSmartLanguage"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"redirect":{"$ref":"#/components/schemas/RedirectUri"},"scope":{"$ref":"#/components/schemas/IamSmartScope"},"profileFields":{"$ref":"#/components/schemas/ProfileFields"},"formData":{"$ref":"#/components/schemas/FormData"},"activityClass":{"$ref":"#/components/schemas/IamSmartActivityClass"},"activityParams":{"$ref":"#/components/schemas/IamSmartActivityParams"}}}}}},"responses":{"200":{"description":"Anonymous form filling request successfully initialized.\nRedirect user to the URL, then poll with the token to retrieve form data.\n","content":{"application/json":{"schema":{"type":"object","required":["token","url"],"properties":{"token":{"$ref":"#/components/schemas/Token"},"url":{"type":"string","format":"uri","description":"URL to redirect user for anonymous form filling"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Anonymous Hash Signing

> Request digital signature for a document hash without requiring prior authentication.\
> \
> This endpoint combines authentication and signing in a single flow.\
> Pass the scope, language, source, redirect URL, and document details to initialize\
> the anonymous signing request.\
> \
> Returns a token, URL, and HKIC check digits. The URL redirects users to iAM Smart\
> where they can authenticate and approve the signing request in one step.\
> \
> \*\*Hash Requirements:\*\*\
> \
> \- Must be a SHA-256 hash of the document content\
> \- Must be exactly 64 hexadecimal characters<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"IamSmartLanguage":{"type":"string","description":"iAM Smart App display language\n","enum":["en-US","zh-HK","zh-CN"],"default":"en-US"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"IamSmartScope":{"type":"string","description":"Setting the scope is required only in cases where operations are chained, e.g auth + formfilling, auth + signing.\nBy default, the scope is set to the value required for the operation.\nRequested scope of authorization based on available services.\nMultiple scopes should be space-separated. Valid scopes are:\neidapi_auth, eidapi_profiles, eidapi_formFilling, eidapi_sign, eidapi_fr, eidapi_bulksign\n","pattern":"^(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign)(\\s+(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign))*$"},"IamSmartActivityClass":{"type":["string","null"],"description":"Android activity class (required if source is android)"},"IamSmartActivityParams":{"type":["string","null"],"description":"Additional activity parameters (optional if source is android)"},"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/signing-anonymous":{"post":{"tags":["iAM Smart"],"summary":"Anonymous Hash Signing","description":"Request digital signature for a document hash without requiring prior authentication.\n\nThis endpoint combines authentication and signing in a single flow.\nPass the scope, language, source, redirect URL, and document details to initialize\nthe anonymous signing request.\n\nReturns a token, URL, and HKIC check digits. The URL redirects users to iAM Smart\nwhere they can authenticate and approve the signing request in one step.\n\n**Hash Requirements:**\n\n- Must be a SHA-256 hash of the document content\n- Must be exactly 64 hexadecimal characters\n","operationId":"iamSmartAnonHashSigning","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source","redirect","name","fileHash","service"],"properties":{"lang":{"$ref":"#/components/schemas/IamSmartLanguage"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"redirect":{"$ref":"#/components/schemas/RedirectUri"},"scope":{"$ref":"#/components/schemas/IamSmartScope"},"activityClass":{"$ref":"#/components/schemas/IamSmartActivityClass"},"activityParams":{"$ref":"#/components/schemas/IamSmartActivityParams"},"name":{"type":"string","description":"Document title","maxLength":200},"fileHash":{"type":"string","description":"SHA-256 hash of document (64 hex characters)","pattern":"^[a-f0-9]{64}$"},"hkicHash":{"type":"string","description":"Hash of HKIC for verification","pattern":"^[a-f0-9]{64}$"},"service":{"type":"string","description":"Service description","maxLength":200},"organisation":{"type":"string","description":"Organisation name","maxLength":200}}}}}},"responses":{"200":{"description":"Anonymous signing request successfully initialized.\nRedirect user to the URL, then poll with the token to retrieve signature.\n","content":{"application/json":{"schema":{"type":"object","required":["token","url","hkic"],"properties":{"token":{"$ref":"#/components/schemas/Token"},"url":{"type":"string","format":"uri","description":"URL to redirect user for anonymous signing"},"hkic":{"type":"integer","description":"HKIC check digits","minimum":1000,"maximum":9999}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Anonymous PDF Signing

> Request digital signature for a PDF document without requiring prior authentication. This endpoint enables anonymous PDF signing where users can sign documents using their iAM Smart identity without a separate authentication step.\
> \
> The response includes a URL to the iAM Smart QR code page and a temporary token. Users scan the QR code with their iAM Smart mobile app (for desktop) or are redirected to the iAM Smart app (for mobile). After signing, users are redirected to the specified redirect URL.\
> \
> \
> \*\*Use the temporary token\*\* with the polling endpoint to retrieve the signed document once the user completes the signing process.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"IamSmartLanguage":{"type":"string","description":"iAM Smart App display language\n","enum":["en-US","zh-HK","zh-CN"],"default":"en-US"},"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]},"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"IamSmartScope":{"type":"string","description":"Setting the scope is required only in cases where operations are chained, e.g auth + formfilling, auth + signing.\nBy default, the scope is set to the value required for the operation.\nRequested scope of authorization based on available services.\nMultiple scopes should be space-separated. Valid scopes are:\neidapi_auth, eidapi_profiles, eidapi_formFilling, eidapi_sign, eidapi_fr, eidapi_bulksign\n","pattern":"^(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign)(\\s+(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign))*$"},"IamSmartActivityClass":{"type":["string","null"],"description":"Android activity class (required if source is android)"},"IamSmartActivityParams":{"type":["string","null"],"description":"Additional activity parameters (optional if source is android)"},"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/iamsmart/v2/request/pdf-signing-anonymous":{"post":{"tags":["iAM Smart"],"summary":"Anonymous PDF Signing","description":"Request digital signature for a PDF document without requiring prior authentication. This endpoint enables anonymous PDF signing where users can sign documents using their iAM Smart identity without a separate authentication step.\n\nThe response includes a URL to the iAM Smart QR code page and a temporary token. Users scan the QR code with their iAM Smart mobile app (for desktop) or are redirected to the iAM Smart app (for mobile). After signing, users are redirected to the specified redirect URL.\n\n\n**Use the temporary token** with the polling endpoint to retrieve the signed document once the user completes the signing process.\n","operationId":"iamSmartAnonPdfSigning","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source","redirect","name","fileHash","service"],"properties":{"lang":{"$ref":"#/components/schemas/IamSmartLanguage"},"source":{"$ref":"#/components/schemas/IamSmartSource"},"redirect":{"$ref":"#/components/schemas/RedirectUri"},"scope":{"$ref":"#/components/schemas/IamSmartScope"},"activityClass":{"$ref":"#/components/schemas/IamSmartActivityClass"},"activityParams":{"$ref":"#/components/schemas/IamSmartActivityParams"},"name":{"type":"string","description":"PDF document title","maxLength":200},"fileHash":{"type":"string","description":"Base64-encoded hash of PDF","format":"byte"},"hkicHash":{"type":"string","description":"Hash of HKIC for verification","pattern":"^[a-f0-9]{64}$"},"service":{"type":"string","description":"Service description","maxLength":200}}}}}},"responses":{"200":{"description":"Successfully initiated anonymous PDF signing request","content":{"application/json":{"schema":{"type":"object","required":["token","url","hkic"],"properties":{"token":{"$ref":"#/components/schemas/Token"},"url":{"type":"string","format":"uri"},"hkic":{"type":"integer","minimum":1000,"maximum":9999}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Redirect

> iAM Smart redirects the user to this endpoint after completing the authentication\
> or service request flow. It processes the authorization code or error from\
> iAM Smart and again redirects to the client's specified redirect URL.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/iamsmart/v2/redirect/user/{service}":{"get":{"tags":["iAM Smart"],"summary":"Redirect","description":"iAM Smart redirects the user to this endpoint after completing the authentication\nor service request flow. It processes the authorization code or error from\niAM Smart and again redirects to the client's specified redirect URL.\n","operationId":"iamSmartRedirect","parameters":[{"name":"code","in":"query","required":false,"description":"Authorization code from iAM Smart (present on success)","schema":{"type":"string"}},{"name":"error_code","in":"query","required":false,"description":"Error code from iAM Smart (present on failure/rejection)","schema":{"type":"string"}},{"name":"state","in":"query","required":false,"description":"State parameter used to match the request.","schema":{"type":"string"}},{"name":"businessID","in":"query","required":false,"description":"Business ID to identify the transaction. Not received if service is auth","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Source platform (optional)","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to client application"},"400":{"description":"Bad Request - Missing required parameters or invalid service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}}}}
```

## Poll Data

> Used for all iAM Smart services to poll for final results after user action.\
> \
> Short poll this endpoint, passing in the \`token\` (from any iAM Smart endpoint) to obtain the results.\
> \
> The response's \`token\` is a JWT or JWE depending if there's sensitive personal data. You should handle them like so:\
> \
> \- \`JWT\` verify\\\* token\
> &#x20;   \
> \- \`JWE\` decrypt using the private keys that Fill Easy has previously provided.\
> &#x20;   \
> Please note that the data result is returned only once and is deleted immediately.\
> \
> \\\*you can try using online decoder like \[<https://jwt.io/]\\(https://jwt.io/)>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/iamsmart/v2/callback/client":{"post":{"tags":["iAM Smart"],"summary":"Poll Data","description":"Used for all iAM Smart services to poll for final results after user action.\n\nShort poll this endpoint, passing in the `token` (from any iAM Smart endpoint) to obtain the results.\n\nThe response's `token` is a JWT or JWE depending if there's sensitive personal data. You should handle them like so:\n\n- `JWT` verify\\* token\n    \n- `JWE` decrypt using the private keys that Fill Easy has previously provided.\n    \nPlease note that the data result is returned only once and is deleted immediately.\n\n\\*you can try using online decoder like [https://jwt.io/](https://jwt.io/)","operationId":"pollData","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"},"code":{"type":"string"},"error_code":{"type":"string"}}}}}},"responses":{"200":{"description":"Returns the final result with personal information, encoded in a JWE token.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"token":{"type":"string"}}}}}},"202":{"description":"Result Pending, user has not completed the action","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"299":{"description":"User rejected the request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"401":{"description":"User rejected the request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"410":{"description":"Personal data is deleted after 18 minutes / after first successful poll","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}}}
```

## Direct Login v2 Exchange

> Exchange an iAM Smart Direct Login v2 authCode for a Fill Easy authentication token.\
> Used by both the web variant (\`code\` is received\
> from iAM Smart in query parameters) and the app-to-app variant (\`code\` +\
> PKCE \`codeVerifier\` received from the deeplink).\
> \
> The client owns its iAM Smart-registered callback URL or deeplink target; Fill Easy\
> only handles the credential exchange.\
> \
> Only Direct Login V2 is supported.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"iAM Smart","description":"# Hong Kong's eID\n\nFor further details, please refer to the official iAM Smart\n[API Specification](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_API_Specification_v2.5.2.pdf), [Developer Guide](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_Developer_Guide_v2.3.1.pdf) and [In-App Browser Integration Technical Reference](https://corpverify-samples.s3.us-east-1.amazonaws.com/iamsmart/iAM_Smart_In_App_Browser_Integration_Technical_Reference_for_public_v1.3.pdf)\n\n## General Usage Flow\n\n1. Send a request to your service of choice (Authentication, AnonymousForm Filling,\nSigning, etc.)\n\n2. Send follow up request(s) to Poll Data to obtain the results.*\n\n\n*As the data requires user approval, your system may have to short poll\nto obtain the results in a timely manner.\n\n## Anonymous vs Authenticated Flow:\n\n- Anonymous: No prior authentication needed, single-step process\n  Examples: Anonymous Form Filling, Anonymous Signing, Anonymous PDF Signing\n\n- Authenticated: Requires prior authentication, two-step process\n  Examples: Form Filling, Signing, PDF Signing\n\n## Multi-device user journey\n\nThere are 2 types of user journeys:\n\n  1. single device (mobile with iAM Smart installed)\n\n  2. two device (mobile with iAM Smart installed AND any second device)\n\nThe primary difference is that two device\nworkflows typically includes displaying a iAM Smart website with a iAM\nSmart QR code that needs to be scanned to link the request across devices.\n\nImplementation details are in the endpoints documentation.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}}},"paths":{"/iamsmart/v2/direct-login/exchange":{"post":{"tags":["iAM Smart"],"summary":"Direct Login v2 Exchange","description":"Exchange an iAM Smart Direct Login v2 authCode for a Fill Easy authentication token.\nUsed by both the web variant (`code` is received\nfrom iAM Smart in query parameters) and the app-to-app variant (`code` +\nPKCE `codeVerifier` received from the deeplink).\n\nThe client owns its iAM Smart-registered callback URL or deeplink target; Fill Easy\nonly handles the credential exchange.\n\nOnly Direct Login V2 is supported.\n","operationId":"iamSmartDirectLoginExchange","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"Authorization code from iAM Smart (single use, valid 30 seconds)"},"codeVerifier":{"type":"string","description":"PKCE code verifier received by the client app from iAM Smart. App-to-app\nvariant only — must be omitted for the web variant.\n"}}}}}},"responses":{"200":{"description":"Authentication success","content":{"application/json":{"schema":{"type":"object","required":["message","token"],"properties":{"message":{"type":"string"},"token":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```


# Singpass

Singapore's eID <https://www.singpass.gov.sg/main/>

## Verify

> Verify

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/sgid/request/qr":{"post":{"tags":["Singpass"],"summary":"Verify","description":"Verify","operationId":"verify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect"],"properties":{"redirect":{"$ref":"#/components/schemas/RedirectUri"},"type":{"type":"string","enum":["dynamic","static"],"description":"QR code type"},"start":{"type":"integer","format":"int64","description":"Start timestamp in milliseconds (must be >= current time)"},"end":{"type":"integer","format":"int64","description":"End timestamp in milliseconds (must be > start time)"},"duration":{"type":"integer","minimum":1,"description":"Duration in milliseconds (positive integer)"},"responseFormat":{"type":"string","enum":["url","qr","both"],"default":"both","description":"Format of the response (url, qr, or both)"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"JWT token for polling"},"url":{"type":"string","description":"Singpass verification URL"},"qrUrl":{"type":"string","description":"QR code data URL"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"}}}}}}
```

## MyInfo

> \*\*MyInfo\*\* enables relying party to retrieve personal details.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"}}},"paths":{"/sgid/request/auth":{"post":{"tags":["Singpass"],"summary":"MyInfo","description":"**MyInfo** enables relying party to retrieve personal details.","operationId":"myinfo","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["attributes","redirect"],"properties":{"attributes":{"type":"array","items":{"type":"string"},"description":"attributes to be requested from user"},"redirect":{"$ref":"#/components/schemas/RedirectUri"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"url":{"type":"string"}}}}}},"502":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}}}
```

## MyInfo Business

> enables business-to-business use case for retrieval of corporate data and applicant's personal data.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"}}},"paths":{"/sgid/request/auth-biz":{"post":{"tags":["Singpass"],"summary":"MyInfo Business","description":"enables business-to-business use case for retrieval of corporate data and applicant's personal data.","operationId":"myinfoBusiness","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attributes":{"type":"array","description":"attributes to be requested from user","items":{"type":"string"}},"redirect":{"$ref":"#/components/schemas/RedirectUri"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"token":{"type":"string"}}}}}}}}}}}
```

## MyInfo Redirect

> This is the URL that \`/sgid/request/auth\` returns.\
> It stores a cookie on the user's browser and redirects to Singpass authorization site.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/sgid/redirect":{"get":{"tags":["Singpass"],"summary":"MyInfo Redirect","operationId":"sgidRedirect","description":"This is the URL that `/sgid/request/auth` returns.\nIt stores a cookie on the user's browser and redirects to Singpass authorization site.","parameters":[{"in":"query","name":"client_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"code_challenge","required":true,"schema":{"type":"string"}},{"in":"query","name":"scope","required":true,"allowReserved":true,"schema":{"type":"string"},"description":"Space-separated scopes forwarded to /auth."},{"in":"query","name":"redirect_uri","required":true,"allowReserved":true,"schema":{"type":"string"},"description":"Callback URL forwarded to /auth. Passed through without re-encoding."}],"responses":{"302":{"description":"Redirect to Singpass authorization"}}}}}}
```

## MyInfo Callback

> This is the callback URL that Singpass redirects to after user authorizes the data request.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/sgid/callback/person":{"get":{"tags":["Singpass"],"description":"This is the callback URL that Singpass redirects to after user authorizes the data request.","summary":"MyInfo Callback","operationId":"callbackPerson","parameters":[{"in":"query","name":"code","required":false,"schema":{"type":"string"}},{"in":"query","name":"state","required":false,"schema":{"type":"string"}},{"in":"query","name":"error","required":false,"schema":{"type":"string"}},{"in":"query","name":"error_description","allowReserved":true,"required":false,"schema":{"type":"string"}},{"in":"query","name":"iss","allowReserved":true,"required":false,"schema":{"type":"string"},"description":"RFC 9207 issuer identifier (FAPI 2.0). Validated against the configured Singpass issuer."}],"responses":{"302":{"description":"Redirect to client application"}}}}}}
```

## Biz Callback

> This is the callback URL that Singpass redirects to after user authorizes the data request.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/sgid/callback/person-biz":{"get":{"tags":["Singpass"],"description":"This is the callback URL that Singpass redirects to after user authorizes the data request.","summary":"Biz Callback","operationId":"callbackPersonBiz","responses":{"302":{"description":"Redirect to client application"}}}}}}
```

## Verify Callback

> This is the callback URL that Singpass redirects to after user authorizes the data request.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/sgid/callback/verify":{"get":{"tags":["Singpass"],"description":"This is the callback URL that Singpass redirects to after user authorizes the data request.","summary":"Verify Callback","operationId":"callbackVerify","responses":{"302":{"description":"Redirect to client application"}}}}}}
```

## GET /sgid/jwks.json

> jwks.json

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/sgid/jwks.json":{"get":{"tags":["Singpass"],"summary":"jwks.json","operationId":"jwks","responses":{"200":{"description":"JWK Set","content":{"application/json":{"schema":{"type":"object","required":["keys"],"properties":{"keys":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}}}}}}
```

## Poll Data

> That endpoint is used to obtain the requested data.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Singpass","description":"Singapore's eID [https://www.singpass.gov.sg/main/](https://www.singpass.gov.sg/main/)"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/sgid/callback/client":{"post":{"tags":["Singpass"],"summary":"Poll Data","description":"That endpoint is used to obtain the requested data.","operationId":"singpassPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The token received on the first request."}},"required":["token"]}}}},"responses":{"200":{"description":"OK - Data successfully retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Status message"},"url":{"type":"string","description":"URL that should be shown to the user (usually as a QR code)"},"token":{"type":"string","description":"Used to poll requested data"}}}}}},"202":{"description":"Pending - Data not yet available","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"description":"Bad Request - Invalid request body. Ensure that your request body complies with the requirements.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["Invalid request body"]}}}}}},"401":{"description":"No credentials - Unauthorized. Ensure that you use the correct authorization process.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["Unauthorized"]}}}}}}}}}}}
```


# Sino Connect

Documentation for China NFC eID for the various endpoints that we offer.

Should be used in conjuction with the SDK provided by Fill Easy, to read Chinese ID card data.

Clients retrieve the `reqId` from their mobile application after the NFC scan. Pass it to NFC Poll to retrieve the encrypted card data, and optionally pass the same `reqId` to Face Recognition Request to have the live face compared against the card portrait during Face Recognition Poll.

## NFC Poll

> Used in conjunction with the SDK that we provide.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Sino Connect","description":"Documentation for China NFC eID for the various endpoints that we offer.\n\n\nShould be used in conjuction with the SDK provided by Fill Easy, to read\nChinese ID card data.\n\n\nClients retrieve the `reqId` from their mobile application after the NFC\nscan. Pass it to NFC Poll to retrieve the encrypted card data, and\noptionally pass the same `reqId` to Face Recognition Request to have the\nlive face compared against the card portrait during Face Recognition Poll.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}}},"paths":{"/sino-connect/nfc/callback":{"post":{"tags":["Sino Connect"],"summary":"NFC Poll","description":"Used in conjunction with the SDK that we provide.","operationId":"nfcPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reqid"],"properties":{"reqid":{"type":"string","minLength":1,"description":"Request ID from NFC scan"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["message","token"],"properties":{"message":{"type":"string","description":"Status message"},"token":{"type":"string","description":"JWE encrypted token containing NFC data"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Face Recognition Request

> Initialize a face recognition session by passing your redirect URL.\
> \
> Returns a \*\*launch URL\*\* (open on a \*\*mobile browser\*\*) and a \*\*JWT\*\* \*\*\`token\`\*\* that you must keep for polling status.\
> Use the returned \*\*\`url\`\*\* to open an in-app web view or the system browser on the phone.\
> After the user completes or cancels the H5 flow, the browser is redirected to your provided callback URL.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Sino Connect","description":"Documentation for China NFC eID for the various endpoints that we offer.\n\n\nShould be used in conjuction with the SDK provided by Fill Easy, to read\nChinese ID card data.\n\n\nClients retrieve the `reqId` from their mobile application after the NFC\nscan. Pass it to NFC Poll to retrieve the encrypted card data, and\noptionally pass the same `reqId` to Face Recognition Request to have the\nlive face compared against the card portrait during Face Recognition Poll.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"}}},"paths":{"/sino-connect/face-rec/request":{"post":{"tags":["Sino Connect"],"summary":"Face Recognition Request","description":"Initialize a face recognition session by passing your redirect URL.\n\nReturns a **launch URL** (open on a **mobile browser**) and a **JWT** **`token`** that you must keep for polling status.\nUse the returned **`url`** to open an in-app web view or the system browser on the phone.\nAfter the user completes or cancels the H5 flow, the browser is redirected to your provided callback URL.","operationId":"faceReqRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect"],"properties":{"redirect":{"$ref":"#/components/schemas/RedirectUri"},"reqId":{"type":"string","description":"Optional request ID from the NFC scan (the same value passed to NFC Poll). When supplied, the live face captured during the liveness flow is compared against that card's portrait at Face Recognition Poll, and the match is returned there. Omit it for a liveness-only check."}}}}}},"responses":{"200":{"description":"200 Success","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"token":{"type":"string"},"url":{"type":"string"}}}}}}}}}}}
```

## Face Recognition Poll

> Used to poll for the face recognition result after user action.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Sino Connect","description":"Documentation for China NFC eID for the various endpoints that we offer.\n\n\nShould be used in conjuction with the SDK provided by Fill Easy, to read\nChinese ID card data.\n\n\nClients retrieve the `reqId` from their mobile application after the NFC\nscan. Pass it to NFC Poll to retrieve the encrypted card data, and\noptionally pass the same `reqId` to Face Recognition Request to have the\nlive face compared against the card portrait during Face Recognition Poll.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/sino-connect/face-rec/callback":{"post":{"tags":["Sino Connect"],"summary":"Face Recognition Poll","description":"Used to poll for the face recognition result after user action.","operationId":"faceReqPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"}}}}}},"responses":{"200":{"description":"200 Success","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Status message"},"token":{"type":"string","description":"JWE encrypted token. Decrypts to an object containing the captured `faceImage` (raw base64), `livenessResult` (the liveness verdict as readable text), and — only when a `reqId` was supplied to Face Recognition Request — `similarityScore` (the 0–100 face-match score between the live face and the NFC portrait) plus `similarityResult`: \"Match\" when `similarityScore` ≥ 45, otherwise \"No match\", or the compare error status if the comparison could not run."}}}}}},"202":{"description":"Pending","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}}}
```


# UAE Pass

UAE Pass is the UAE's national digital identity solution, providing secure and seamless access to government and private sector services. It simplifies authentication with a single digital identity, reducing complexity and enhancing security.

This guide explains how to integrate with the UAE Pass API, including endpoints, authentication, error handling, and best practices.

***

#### Key Features

* **Unified Identity**: Access multiple services with one secure login.
* **Enhanced Security**: Advanced encryption and multi-factor authentication.
* **Easy Integration**: Streamlined APIs for quick deployment.
* **Future-Ready**: Supports the UAE’s smart digital economy vision.

***

#### Services

1. **Authentication**: Verify user identity.
2. **Digital Signing**: Enable legally valid digital document signing.

***

#### Usage Flow

1. Choose a service
2. Send a corresponding request in the ***Request Data*** folder
3. Send follow up request(s)\* to ***Polling/Poll Data***

***

Integrate UAE Pass to deliver secure and efficient digital experiences.

## Authentication

> Retrieves user identity details following a successful UAE Pass login.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"UAE Pass","description":"UAE Pass is the UAE's national digital identity solution, providing secure\nand seamless access to government and private sector services. It\nsimplifies authentication with a single digital identity, reducing\ncomplexity and enhancing security.\n\n\nThis guide explains how to integrate with the UAE Pass API, including\nendpoints, authentication, error handling, and best practices.\n\n\n---\n\n\n### Key Features\n\n\n- **Unified Identity**: Access multiple services with one secure login.\n    \n- **Enhanced Security**: Advanced encryption and multi-factor\nauthentication.\n    \n- **Easy Integration**: Streamlined APIs for quick deployment.\n    \n- **Future-Ready**: Supports the UAE’s smart digital economy vision.\n    \n\n---\n\n\n### Services\n\n\n1. **Authentication**: Verify user identity.\n    \n2. **Digital Signing**: Enable legally valid digital document signing.\n    \n\n---\n\n\n### Usage Flow\n\n\n1. Choose a service\n    \n2. Send a corresponding request in the _**Request Data**_ folder\n    \n3. Send follow up request(s)\\* to _**Polling/Poll Data**_\n    \n\n---\n\n\nIntegrate UAE Pass to deliver secure and efficient digital experiences.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/uaepass/request/auth":{"post":{"tags":["UAE Pass"],"summary":"Authentication","description":"Retrieves user identity details following a successful UAE Pass login.","operationId":"uaepassAuth","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect","source"],"properties":{"redirect":{"$ref":"#/components/schemas/RedirectUri"},"scope":{"type":"string","description":"List of values, separated by spaces, that represent the scope of the authorization that the application wants to obtain.\nIt queries the scopes required for accessing the resources or services in question.\nAvailable scopes: sub, fullnameAR, gender, mobile, lastnameEN, fullnameEN, uuid, lastnameAR, idn, nationalityEN, firstnameEN, userType, nationalityAR, firstnameAR, email.\n(To be shared by UAEPASS Team if its value is other than specified in sample above)\n"},"lang":{"type":"string","enum":["en","ar"],"description":"UAE Pass display language, case sensitive"},"source":{"type":"string","enum":["PC_Browser","android","iOS","Mobile_Browser"],"description":"Platform source for the authentication request"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["token","oAuthUrl"],"properties":{"token":{"type":"string","description":"JWT token for polling authentication status"},"oAuthUrl":{"type":"string","format":"uri","description":"UAE Pass authorization URL to redirect user to"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Poll Data

> Short poll this endpoint, passing in the \`token\` (from endpoints in \`Request Data\` folder) to obtain the results.\
> \
> For authentication, this includes user data. For signing, this provides a link by which the signed document can be obtained.\
> \
> The response's \`token\` is a JWT or JWE depending if there's sensitive personal data. You should handle them like so:\
> \
> \- \`JWT\` verify\\\* token\
> &#x20;   \
> \- \`JWE\` decrypt using the private keys that Fill Easy has previously provided.\
> &#x20;   \
> \
> Please note that the data result is returned only once and is deleted immediately.\
> \
> \\\*you can try using online decoder like \[<https://jwt.io/]\\(https://jwt.io/)\\>
> \
> all responses are \`JWE\` unless noted otherwise.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"UAE Pass","description":"UAE Pass is the UAE's national digital identity solution, providing secure\nand seamless access to government and private sector services. It\nsimplifies authentication with a single digital identity, reducing\ncomplexity and enhancing security.\n\n\nThis guide explains how to integrate with the UAE Pass API, including\nendpoints, authentication, error handling, and best practices.\n\n\n---\n\n\n### Key Features\n\n\n- **Unified Identity**: Access multiple services with one secure login.\n    \n- **Enhanced Security**: Advanced encryption and multi-factor\nauthentication.\n    \n- **Easy Integration**: Streamlined APIs for quick deployment.\n    \n- **Future-Ready**: Supports the UAE’s smart digital economy vision.\n    \n\n---\n\n\n### Services\n\n\n1. **Authentication**: Verify user identity.\n    \n2. **Digital Signing**: Enable legally valid digital document signing.\n    \n\n---\n\n\n### Usage Flow\n\n\n1. Choose a service\n    \n2. Send a corresponding request in the _**Request Data**_ folder\n    \n3. Send follow up request(s)\\* to _**Polling/Poll Data**_\n    \n\n---\n\n\nIntegrate UAE Pass to deliver secure and efficient digital experiences.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"}}},"paths":{"/uaepass/poll":{"post":{"tags":["UAE Pass"],"summary":"Poll Data","description":"Short poll this endpoint, passing in the `token` (from endpoints in `Request Data` folder) to obtain the results.\n\nFor authentication, this includes user data. For signing, this provides a link by which the signed document can be obtained.\n\nThe response's `token` is a JWT or JWE depending if there's sensitive personal data. You should handle them like so:\n\n- `JWT` verify\\* token\n    \n- `JWE` decrypt using the private keys that Fill Easy has previously provided.\n    \n\nPlease note that the data result is returned only once and is deleted immediately.\n\n\\*you can try using online decoder like [https://jwt.io/](https://jwt.io/)\n\nall responses are `JWE` unless noted otherwise.","operationId":"uaepassPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"data":{"description":"Response data from UAE Pass"}}}}}},"202":{"description":"Pending - Authentication not yet complete","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}}}}}}
```

## Callback

> UAE Pass will redirect to this endpoint after user authorization.\
> This endpoint then redirects the user again to the original \`redirect\` URI provided in the \`/uaepass/request/auth\` request, appending the authorization \`code\` and \`state\` as query parameters.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"UAE Pass","description":"UAE Pass is the UAE's national digital identity solution, providing secure\nand seamless access to government and private sector services. It\nsimplifies authentication with a single digital identity, reducing\ncomplexity and enhancing security.\n\n\nThis guide explains how to integrate with the UAE Pass API, including\nendpoints, authentication, error handling, and best practices.\n\n\n---\n\n\n### Key Features\n\n\n- **Unified Identity**: Access multiple services with one secure login.\n    \n- **Enhanced Security**: Advanced encryption and multi-factor\nauthentication.\n    \n- **Easy Integration**: Streamlined APIs for quick deployment.\n    \n- **Future-Ready**: Supports the UAE’s smart digital economy vision.\n    \n\n---\n\n\n### Services\n\n\n1. **Authentication**: Verify user identity.\n    \n2. **Digital Signing**: Enable legally valid digital document signing.\n    \n\n---\n\n\n### Usage Flow\n\n\n1. Choose a service\n    \n2. Send a corresponding request in the _**Request Data**_ folder\n    \n3. Send follow up request(s)\\* to _**Polling/Poll Data**_\n    \n\n---\n\n\nIntegrate UAE Pass to deliver secure and efficient digital experiences.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[],"paths":{"/uaepass/callback":{"get":{"tags":["UAE Pass"],"description":"UAE Pass will redirect to this endpoint after user authorization.\nThis endpoint then redirects the user again to the original `redirect` URI provided in the `/uaepass/request/auth` request, appending the authorization `code` and `state` as query parameters.","summary":"Callback","operationId":"uaepassCallback","responses":{"302":{"description":"Redirect to client application"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}}}
```

## POST /uaepass/logout

> UAEPass Logout

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"UAE Pass","description":"UAE Pass is the UAE's national digital identity solution, providing secure\nand seamless access to government and private sector services. It\nsimplifies authentication with a single digital identity, reducing\ncomplexity and enhancing security.\n\n\nThis guide explains how to integrate with the UAE Pass API, including\nendpoints, authentication, error handling, and best practices.\n\n\n---\n\n\n### Key Features\n\n\n- **Unified Identity**: Access multiple services with one secure login.\n    \n- **Enhanced Security**: Advanced encryption and multi-factor\nauthentication.\n    \n- **Easy Integration**: Streamlined APIs for quick deployment.\n    \n- **Future-Ready**: Supports the UAE’s smart digital economy vision.\n    \n\n---\n\n\n### Services\n\n\n1. **Authentication**: Verify user identity.\n    \n2. **Digital Signing**: Enable legally valid digital document signing.\n    \n\n---\n\n\n### Usage Flow\n\n\n1. Choose a service\n    \n2. Send a corresponding request in the _**Request Data**_ folder\n    \n3. Send follow up request(s)\\* to _**Polling/Poll Data**_\n    \n\n---\n\n\nIntegrate UAE Pass to deliver secure and efficient digital experiences.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/uaepass/logout":{"post":{"tags":["UAE Pass"],"summary":"UAEPass Logout","operationId":"uaepassLogout","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect"],"properties":{"redirect":{"$ref":"#/components/schemas/RedirectUri"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["logoutUrl"],"properties":{"logoutUrl":{"type":"string","format":"uri","description":"UAE Pass logout URL to redirect user to"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```


# Corp Verify

CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide. Reports include registration details, shareholder information, and financial data where available.

For the full list of supported countries and their capabilities, see CorpVerify Country Coverage.

***

#### Default Flow

1. Use `/cra/{countryCode}/search/companies` to find the Company ID
2. Pass this ID to `/cra/request` to initiate the report request
3. Receive results via **webhook** or **poll** `/cra/poll`

***

#### Result Delivery

**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body. When the report is ready, a `POST` request is sent to that URL with the report payload wrapped in a `WebhookPayload` envelope. Polling remains available as a fallback if delivery fails.

**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.

***

#### Retrieval Methods

**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid `companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves within 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.

**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy processes requests manually. This may take up to several business days. You can still poll `/cra/poll` to check status and retrieve the document when ready.

> **Note:** The search endpoint may return an empty `companyId` for certain countries. In these cases, provide the `companyName` instead and the request will be processed manually.

***

#### Try It Out

Explore available regions, search for companies, and purchase documents using our web interface: [search.fill-easy.com](https://search.fill-easy.com)

## Request

> Initiate a company report request. Returns a JWT token for use with \`/cra/poll\`.\
> \
> \*\*Required:\*\* \`countryCode\` (ISO 3166 alpha-2)\
> \
> \*\*Recommended:\*\* \`companyId\` from \`/cra/{countryCode}/search/companies\` for faster automated processing.\
> \
> \*\*Fallback:\*\* Provide \`companyName\` if \`companyId\` is unavailable — request will be processed manually.\
> \
> \*\*Document Request:\*\* Provide \`documentId\` from \`/cra/{countryCode}/search/documents\` to request specific document. If \`/cra/info\` indicates that the documentId is \*\*required\*\* for retrieval, it must be provided.\
> \
> \*\*Document Type:\*\* Each country has a \`defaultDocumentType\` (see \[\`/cra/info\`]\(#get-cra-info)). Omitting \`documentType\` selects that default. To request a specific document, pass its \`name\` or alias from the country's \`documentTypes\` list.\
> \
> \*\*Dry Run:\*\* Set \`dryRun: true\` to test the integration without incurring costs.\
> The response includes \`dryRun: true\` and a token that can be polled normally via \`/cra/poll\`.\
> \
> \*\*Webhook Delivery:\*\* Provide \`callbackUrl\` to receive a \`POST\` when a report is available.\
> The webhook body is a \[\`WebhookPayload\`]\(#/components/schemas/WebhookPayload)\
> containing the same data as a \`200\` response from \`/cra/poll\`.\
> Requests that support partial reports may send one webhook with \`reportMetadata.status: processing\`\
> (header \`X-Webhook-Event: cra.report.partial\`) and another with \`reportMetadata.status: completed\`\
> (header \`X-Webhook-Event: cra.report.completed\`). The \`X-Request-Id\` header is included on every delivery,\
> plus any custom headers supplied in \`callbackHeaders\`.\
> Polling via \`/cra/poll\` remains available regardless of whether a \`callbackUrl\` is provided.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/cra/request":{"post":{"tags":["CorpVerify"],"summary":"Request","description":"Initiate a company report request. Returns a JWT token for use with `/cra/poll`.\n\n**Required:** `countryCode` (ISO 3166 alpha-2)\n\n**Recommended:** `companyId` from `/cra/{countryCode}/search/companies` for faster automated processing.\n\n**Fallback:** Provide `companyName` if `companyId` is unavailable — request will be processed manually.\n\n**Document Request:** Provide `documentId` from `/cra/{countryCode}/search/documents` to request specific document. If `/cra/info` indicates that the documentId is **required** for retrieval, it must be provided.\n\n**Document Type:** Each country has a `defaultDocumentType` (see [`/cra/info`](#get-cra-info)). Omitting `documentType` selects that default. To request a specific document, pass its `name` or alias from the country's `documentTypes` list.\n\n**Dry Run:** Set `dryRun: true` to test the integration without incurring costs.\nThe response includes `dryRun: true` and a token that can be polled normally via `/cra/poll`.\n\n**Webhook Delivery:** Provide `callbackUrl` to receive a `POST` when a report is available.\nThe webhook body is a [`WebhookPayload`](#/components/schemas/WebhookPayload)\ncontaining the same data as a `200` response from `/cra/poll`.\nRequests that support partial reports may send one webhook with `reportMetadata.status: processing`\n(header `X-Webhook-Event: cra.report.partial`) and another with `reportMetadata.status: completed`\n(header `X-Webhook-Event: cra.report.completed`). The `X-Request-Id` header is included on every delivery,\nplus any custom headers supplied in `callbackHeaders`.\nPolling via `/cra/poll` remains available regardless of whether a `callbackUrl` is provided.\n","operationId":"craRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["countryCode"],"properties":{"companyName":{"type":"string","description":"Name of the company. At least one of `companyId` / `companyName` is required."},"companyId":{"type":"string","description":"Company ID (e.g., BRN for Hong Kong, ACN for Australia). At least one of `companyId` / `companyName` is required."},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code (case insensitive)"},"documentType":{"type":"string","description":"The document type to retrieve. Must match a `name` (or alias) from the country's `documentTypes` list in [`/cra/info`](#tag/CorpVerify/operation/craInfo).\n\nIf omitted, defaults to the country's `defaultDocumentType` from `/cra/info` (unless a specific documentId is provided).\n"},"documentYear":{"type":["string","number"],"description":"Year of the document. Only provide it when the retrieval supports or requires it.\n"},"documentId":{"type":"string","description":"Specific document ID - if provided, it is prioritized over \"documentType\" and \"documentYear\""},"dryRun":{"type":"boolean","description":"Set to `true` to test the full request-poll flow without incurring costs.\n"},"emailList":{"type":"array","items":{"type":"string","format":"email"},"description":"Optional field for usage analytics"},"externalRefId":{"type":"string","description":"Your own reference ID (optional field for usage analytics)"},"express":{"type":"boolean","description":"Expediate request speed (Only used if turn-around times have been agreed upon)"},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://.+","description":"HTTPS URL to receive a webhook POST when the report is ready.\nWhen provided, available reports use the same payload as a `200` response from `/cra/poll`.\nRequests that support partial reports may send both a `processing` and `completed` payload.\nPolling remains available as a fallback.\n"},"callbackHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the webhook request.\nUse this to pass authentication or any other headers your endpoint requires\n(e.g. `{\"Authorization\": \"Bearer <token>\", \"X-Api-Key\": \"...\"}`).\n"}}}}}},"responses":{"200":{"description":"Successfully initiated the request","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"JWT token that encodes the request details and should be used in the /cra/poll endpoint to check the status and retrieve the document"},"dryRun":{"description":"Echoed back as `true` when the request was a dry run — no cost incurred","type":"boolean"}}}}}},"400":{"description":"Bad Request - Unsupported country code, neither `companyId` nor `companyName` provided, document not available for the specified company, or request cannot be fulfilled","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"requestId":{"type":"string","description":"The request ID for tracking purposes"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error"}}}}}}
```

## Poll Report

> Check the status of a company registry report request.\
> Keep polling until a \`200\` response is returned.\
> \
> Returns \`202\` while the report is still being processed.\
> \
> If a \`callbackUrl\` was provided in \`/cra/request\`, available report states are also\
> delivered via webhook. Polling is always available as a fallback.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/cra/poll":{"post":{"tags":["CorpVerify"],"summary":"Poll Report","description":"Check the status of a company registry report request.\nKeep polling until a `200` response is returned.\n\nReturns `202` while the report is still being processed.\n\nIf a `callbackUrl` was provided in `/cra/request`, available report states are also\ndelivered via webhook. Polling is always available as a fallback.\n","operationId":"craPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token"}}}}}},"responses":{"200":{"description":"Report is ready","content":{"application/json":{"schema":{"type":"object","required":["reportMetadata"],"properties":{"reportMetadata":{"type":"object","description":"Metadata about the report generation","required":["status","countryCode"],"properties":{"reportDate":{"type":"string","format":"date","description":"Date when the report was generated"},"countryCode":{"type":"string","description":"[ISO country code](https://en.wikipedia.org/wiki/ISO_3166-2) of the report source","pattern":"^[A-Z]{2}$"},"status":{"type":"string","description":"Status of the report generation","enum":["completed","processing"]},"requestedYears":{"type":"array","items":{"type":"number"},"description":"Requested financial years for reports that support year ranges."},"readyYears":{"type":"array","items":{"type":"number"},"description":"Financial years currently included in the returned report."},"pendingYears":{"type":"array","items":{"type":"number"},"description":"Financial years still being processed for partial reports."}}},"originalDocuments":{"type":"array","description":"Array of documents with per-document status.\nAlways includes the original document entry. Includes a translated document entry\nwhen translation is applicable or still processing.\n","items":{"type":"object","required":["type","status"],"properties":{"type":{"type":"string","description":"Type of document","enum":["original","translated"]},"variant":{"type":"string","description":"Report stage for requests that can return an interim report before the completed report.","enum":["standard","fast","full"]},"status":{"type":"string","description":"Per-document status:\n- \"ready\": Document is available, url and fileName are populated\n- \"processing\": Document is being generated\n- \"not_applicable\": Document won't be generated (e.g., no translation needed for English-language source)\n","enum":["ready","processing","not_applicable"]},"url":{"type":"string","format":"uri","description":"Presigned URL to download the document (only when status is \"ready\"). Valid for 7 days."},"fileName":{"type":"string","description":"Suggested file name, e.g. \"ABC Company Limited_Annual Return_2023.pdf\" (only when status is \"ready\")"}}}},"companyIdentification":{"type":["object","null"],"description":"Company identification details with bilingual support","properties":{"companyName":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"companyId":{"type":["string","null"],"description":"Company registration number"},"idType":{"type":["string","null"],"description":"Type of company number (e.g., USCC, BRN)"},"previousCompanyNames":{"type":"array","items":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}}}}},"registrationDetails":{"type":["object","null"],"description":"Company registration details with bilingual support","properties":{"incorporationDate":{"type":["string","null"],"format":"date"},"status":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"companyType":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"jurisdiction":{"type":"string"}}},"location":{"type":["object","null"],"description":"Company location information with bilingual support","properties":{"registeredAddress":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"principalPlaceOfBusiness":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}}}},"management":{"type":["object","null"],"description":"Company management structure with bilingual support","properties":{"directors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"role":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"identityDocuments":{"type":"array","items":{"type":"string"}},"address":{"type":["string","null"]},"appointmentDate":{"type":["string","null"],"format":"date"}}}},"companySecretary":{"type":["object","null"],"properties":{"name":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"address":{"type":["string","null"]}}},"legalRepresentative":{"type":["object","null"],"properties":{"name":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"isCorporate":{"type":"boolean"}}}}},"ownership":{"type":["object","null"],"description":"Company ownership/shareholder information with bilingual support","properties":{"shareholders":{"type":"array","items":{"type":"object","properties":{"name":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"isCorporate":{"type":"boolean"},"address":{"type":["string","null"]},"sharesHeld":{"type":"array","items":{"type":"object","properties":{"class":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"count":{"type":"number"}}}},"totalShares":{"type":["number","null"]},"ownershipPercentage":{"type":["number","null"]}}}},"ultimateHoldingCompany":{"type":["object","null"],"properties":{"name":{"type":"object","properties":{"english":{"type":["string","null"]},"local":{"type":["string","null"]}}},"jurisdiction":{"type":["string","null"]}}}}},"shareCapital":{"type":["object","null"],"description":"Share capital information with bilingual support","properties":{"issuedCapital":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"paidUpCapital":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"authorizedCapital":{"type":["object","null"],"properties":{"amount":{"type":"number"},"currency":{"type":"string"}}}}},"operations":{"type":["object","null"],"description":"Company operations details with bilingual support","properties":{"businessActivity":{"type":["object","null"],"properties":{"english":{"type":["string","null"]},"local":{"type":"string"}}},"financialYearEnd":{"type":["string","null"]}}},"compliance":{"type":["object","null"],"description":"Company compliance, filing history, change records, and risk information","properties":{"registeredAgent":{"type":["object","null"],"properties":{"name":{"type":"string"},"address":{"type":"string"}}},"filingHistory":{"type":["object","null"],"description":"Official filed documents from the company registry (e.g., HK ICRIS)","properties":{"totalDocuments":{"type":"number"},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"object","properties":{"english":{"type":"string"},"local":{"type":["string","null"]}}},"count":{"type":"number"}}}}}},"changeHistory":{"type":["object","null"],"description":"Business change records from company registries (e.g., name changes, capital changes, director changes)","properties":{"totalChanges":{"type":"number"},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"object","properties":{"english":{"type":"string"},"local":{"type":["string","null"]}}},"count":{"type":"number"}}}}}},"riskInformation":{"type":["object","null"],"description":"Risk and compliance indicators (e.g., abnormalities, penalties, enforcement actions)","properties":{"totalIssues":{"type":"number"},"summary":{"type":"array","items":{"type":"object","properties":{"category":{"type":"object","properties":{"english":{"type":"string"},"local":{"type":["string","null"]}}},"count":{"type":"number"}}}}}},"intellectualProperty":{"type":["object","null"]}}}}}}}},"202":{"description":"Report is still being processed","content":{"application/json":{"schema":{"type":"object","required":["reportMetadata"],"properties":{"reportMetadata":{"type":"object","description":"Metadata about the report generation","required":["status","countryCode"],"properties":{"reportDate":{"type":"string","format":"date","description":"Date when the report was generated"},"countryCode":{"type":"string","description":"[ISO country code](https://en.wikipedia.org/wiki/ISO_3166-2) of the report source","pattern":"^[A-Z]{2}$"},"status":{"type":"string","description":"Status of the report generation","enum":["completed","processing"]},"requestedYears":{"type":"array","items":{"type":"number"},"description":"Requested financial years for reports that support year ranges."},"readyYears":{"type":"array","items":{"type":"number"},"description":"Financial years currently included in the returned report."},"pendingYears":{"type":"array","items":{"type":"number"},"description":"Financial years still being processed for partial reports."}}},"originalDocuments":{"type":"array","description":"Array of documents with per-document status.\nIncluded during processing to show which documents are expected.\n","items":{"type":"object","required":["type","status"],"properties":{"type":{"type":"string","enum":["original","translated"]},"variant":{"type":"string","enum":["standard","fast","full"]},"status":{"type":"string","enum":["ready","processing","not_applicable"]},"url":{"type":"string","format":"uri"},"fileName":{"type":"string","description":"Suggested file name — company name and covered years, e.g. \"Tencent_2019-2024.pdf\"."}}}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"description":"Internal server error"}}}}}}
```

## Search Companies by Name

> This endpoint performs a search for companies in the respective country's\
> Companies Registry by company name. It supports both English and Chinese\
> company names and returns a list of matching companies.\
> \
> Certain countries are unable to return a companyId - in those cases the\
> idType in the response will be "Unavailable" and companyId will be an\
> empty string.\
> \
> The search will automatically detect if the input is in Chinese\
> characters and adjust the search parameters accordingly.\
> \
> The type of search is dependent on the country:\
> \
> \*Substring search\*: KY, TH, PH, JP\
> \
> \*Tokenized search (e.g. searching "PLE" will not result in "APPLE")\*: AU, SG\
> \
> \*Left partial search\*: HK, BM, MY, FR\
> \
> \*Partial name search\*: US<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Company":{"required":["companyId","companyName","idType","registrationDetails"],"type":"object","description":"Company information returned from the Companies Registry search","properties":{"companyId":{"type":"string","description":"Unique company identifier used in subsequent API calls.\nFor Hong Kong: Business Registration Number (BRN) - an 8-digit number.\nFor Australia: Australian Company Number (ACN).\nFor Singapore: Unique Entity Number (UEN).\n"},"idType":{"type":"string","description":"Type of company identifier returned.\n- \"BRN\" - Business Registration Number (Hong Kong)\n- \"ACN\" - Australian Company Number (Australia)\n- \"UEN\" - Unique Entity Number (Singapore)\n- \"CIN\" - Corporate Identification Number (India)\n- \"FCRN\" - Foreign Company Registration Number (India)\n- \"LLPIN\" - Limited Liability Partnership Identification Number (India)\n- \"FLLPIN\" - Foreign LLP Identification Number (India)\n- \"Unavailable\" - When the country does not provide a company ID\n"},"companyName":{"type":"string","description":"Official registered company name (in English or Chinese depending on the search)"},"localName":{"type":"string","description":"Name of the company in local language (if applicable and different from companyName)"},"status":{"type":"string","enum":["Live","Distressed","Dissolved"],"description":"Current active status of the company.\n- \"Live\" - Company is currently active and in good standing\n- \"Distressed\" - Company is undergoing liquidation, insolvency proceedings, or striking-off process\n- \"Dissolved\" - Company has been dissolved/deregistered\n"},"nameType":{"type":"string","enum":["current","old"],"description":"Indicates whether the returned name is the current or a previous name.\n- \"current\" - This is the company's current registered name\n- \"old\" - This is a previous/historical name of the company\n"},"address":{"type":"string","description":"Registered address of the company (when available)"},"state":{"type":"string","description":"State or province of the company's registered office (when available)"},"registrationDetails":{"type":"array","description":"A list of attributes defining the company's legal structure, registration category, or public/private status as defined by the local jurisdiction.","items":{"$ref":"#/components/schemas/registrationDetail"}},"dissolutionDate":{"type":"string","format":"date","description":"Date of dissolution (YYYY-MM-DD format, empty string if not dissolved)"},"incorporationDate":{"type":"string","format":"date","description":"Date of incorporation/registration (YYYY-MM-DD format)"},"remarks":{"type":"string","description":"Any remarks or notes about the company"},"nameHistory":{"type":"array","description":"Historical company names (previous names the company has used)","items":{"type":"object","properties":{"companyName":{"type":"string","description":"English company name"},"localName":{"type":"string","description":"Chinese company name (if available)"},"effectiveDate":{"type":"string","format":"date","description":"Date when this name became effective (YYYY-MM-DD format)"}}}}}},"registrationDetail":{"type":"string","description":"Legal classification or entity type identifier. \nProvides details about a company based on its incorporation structure (e.g., Limited by Shares) or its regulatory category (e.g., Private vs. Public) according to the relevant national companies legislation.\n","enum":["Corporation","Company Limited by Shares","Registered Non-Hong Kong Company","Company Limited by Guarantee","Limited Company","Limited Liability Company","Unlimited Company","Registered Society/Organization","Open-ended Fund Company","Open-ended Investment Company","Limited Partnership Fund","Public Company","Private Company","Foreign Company","Foreign Company Branch","Registered Overseas Entity","Registered Australian Corporation under non-Corporations Law","Company Limited by Both Shares and Guarantees","No Liability Company","Sole Proprietorship/ Partnership","Sole Proprietorship","Limited Liability Partnership","Limited Partnership","Unlimited Partnership","Local Company","Juristic Ordinary Partnership","Foreign Juristic Person","Joint Venture","Chamber of Commerce","Private Limited by Guarantee (Section 60 Exemption)","Assurance Company","European Economic Interest Grouping","Royal Charter Body","United Kingdom Societas","United Kingdom Economic Interest Grouping","Charitable Incorporated Organisation","Educational Corporation","Government Body","General Partnership Company","Limited Partnership Company","Special Registered Corporation","One Person Company","Section 8 Company","Nidhi Company","Producer Company","IFSC Company","Partnership","Entity Registered Under Myanmar Companies Act 1914","Economic Interest Grouping","Civil Company","Other","N/A"]}}},"paths":{"/cra/{countryCode}/search/companies":{"post":{"tags":["CorpVerify"],"summary":"Search Companies by Name","description":"This endpoint performs a search for companies in the respective country's\nCompanies Registry by company name. It supports both English and Chinese\ncompany names and returns a list of matching companies.\n\nCertain countries are unable to return a companyId - in those cases the\nidType in the response will be \"Unavailable\" and companyId will be an\nempty string.\n\nThe search will automatically detect if the input is in Chinese\ncharacters and adjust the search parameters accordingly.\n\nThe type of search is dependent on the country:\n\n*Substring search*: KY, TH, PH, JP\n\n*Tokenized search (e.g. searching \"PLE\" will not result in \"APPLE\")*: AU, SG\n\n*Left partial search*: HK, BM, MY, FR\n\n*Partial name search*: US\n","operationId":"searchCompanies","parameters":[{"name":"countryCode","in":"path","required":true,"description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code in lowercase.","schema":{"pattern":"^[a-z]{2}(-[a-z]{2})?$","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["companyName"],"properties":{"companyName":{"type":"string","description":"Company name to search (English or Chinese)"},"page":{"type":"integer","minimum":1,"default":1,"description":"Page of results to return. Pagination support varies by country — for countries where it is not supported, only the first N results are returned regardless of this value. Check `meta.page` in the response to confirm whether pagination was applied."}}}}}},"responses":{"200":{"description":"Successfully retrieved matching companies","content":{"application/json":{"schema":{"required":["message"],"type":"object","properties":{"message":{"type":"string","description":"Response message"},"meta":{"type":"object","required":["page","totalPages"],"properties":{"page":{"description":"Current page of results returned, or null if the data source does not support pagination (either all available results are included in a single response, or only limited results are provided). When non-null, check `totalPages` to determine whether more pages exist.","type":"integer","nullable":true},"totalPages":{"description":"Total number of pages available, or null if not paginated or unknown.","type":"integer","nullable":true}}},"result":{"type":"array","description":"Array of companies matching the search criteria","items":{"$ref":"#/components/schemas/Company"}}}}}}},"400":{"description":"Bad Request - Unsupported country code or search not implemented","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"422":{"description":"Too many results - search term is too broad","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["too many results, please refine your search term"]}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["search error"]}}}}}}}}}}}
```

## Search Company Documents

> This endpoint searches for and returns documents filed by a company with\
> the Companies Registry. Documents are grouped by category (e.g., Annual\
> Return, Director/Secretary Changes, Charges Filed, etc.).\
> \
> You can optionally filter by document type and year to narrow down the\
> results.\
> \
> Document categories include: Annual Return, Director / Secretary\
> Changes, Charges Filed, Incorporation & Name Change, Liquidation &\
> Deregistration, Registered Office / Address, Share Capital, and Other.\
> \
> Note: Not all countries have document search available, please refer to \`/cra/info\`\
> to confirm\
> \
> Recommended: First retrieve/confirm the companyId from \`/cra/{countryCode}/search/companies\`\
> or \`/cra/{countryCode}/search/company\` prior to calling this endpoint<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Document":{"type":"object","required":["category","companyId","documentName"],"properties":{"category":{"type":"string","description":"Document category (e.g., Annual Return & Accounts, Directors & Company Secretaries)","enum":["Incorporation & Registration","Annual Return & Accounts","Directors & Company Secretaries","Registered Office & Name Changes","Share Capital","Charges","Articles of Association","Deregistration & Liquidation","Amalgamation","Open-Ended Fund Companies","Limited Partnership Funds","Rectification & Administration","Annual Return / Financial Statements","Articles of Association / Members","Auditors","Change of Company Name","Deregistration","Directors and Company Secretary","Incorporation of Local Companies","Inspectors","Mortgage & Charges","Re-domiciliation","Registered Foreign Companies","Registered Offices and Location of Registers","Registration of Eligible Companies","Re-Registration","Share Acquisition or Buy-back/Share Certificates","Receivership","Winding Up","Others"]},"documentYear":{"type":"string","description":"Accounting year (for annual returns)"},"documentName":{"type":"string","description":"English name of the document"},"pages":{"type":"string","description":"Number of pages"},"filingDate":{"type":"string","format":"date","description":"Filing date (YYYY-MM-DD format), can be date of processing or date filed depending on country"},"documentId":{"type":"string","description":"Unique document identifier"},"companyId":{"type":"string","description":"Company ID"},"hasLinked":{"type":"boolean","description":"Whether the document has linked files"},"description":{"type":"object","description":"Additional useful info regarding the document","additionalProperties":{"type":"string"}}}}}},"paths":{"/cra/{countryCode}/search/documents":{"post":{"tags":["CorpVerify"],"summary":"Search Company Documents","description":"This endpoint searches for and returns documents filed by a company with\nthe Companies Registry. Documents are grouped by category (e.g., Annual\nReturn, Director/Secretary Changes, Charges Filed, etc.).\n\nYou can optionally filter by document type and year to narrow down the\nresults.\n\nDocument categories include: Annual Return, Director / Secretary\nChanges, Charges Filed, Incorporation & Name Change, Liquidation &\nDeregistration, Registered Office / Address, Share Capital, and Other.\n\nNote: Not all countries have document search available, please refer to `/cra/info`\nto confirm\n\nRecommended: First retrieve/confirm the companyId from `/cra/{countryCode}/search/companies`\nor `/cra/{countryCode}/search/company` prior to calling this endpoint\n","operationId":"searchDocuments","parameters":[{"name":"countryCode","in":"path","required":true,"description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code.","schema":{"pattern":"^[a-z]{2}$","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["companyId"],"properties":{"companyId":{"type":"string","description":"Company ID (e.g., BRN for Hong Kong, ACN for Australia)"},"documentType":{"type":"string","description":"Optional filter by document type. (Country Specific)\n- HK: Any valid document category, such as \"Annual Return / Financial Statements\", \"Mortgage & Charges\", etc.\n  Valid document categories can be any of the values returned under `category` of this endpoint.\n- PH: GIS, AFS\n- GB: Specific filing type codes (e.g. CS01, AA, AR01, AP01, TM01, SH01, MR01) or\n  category names (e.g. accounts, officers, confirmation-statement). Specific codes\n  are the primary interface and match the `documentName` values returned by this\n  endpoint and the `documentType` accepted by `/cra/request`.\n"},"documentYear":{"type":"string","description":"The year the document covers, as returned by the `documentYear` value of this endpoint.\n`documentYear` has no strict check against `filingDate`.\n"},"page":{"type":"integer","minimum":1,"default":1,"description":"Page of results to return. Check `meta.totalPages` in the response to determine total pages available."}}}}}},"responses":{"200":{"description":"Successfully retrieved documents as a flat array","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["success","search error"],"description":"Status of the operation"},"meta":{"type":"object","required":["page","totalPages"],"properties":{"page":{"type":"integer","nullable":true,"description":"Current page returned, or null if pagination is not supported for this country."},"totalPages":{"type":"integer","nullable":true,"description":"Total pages available, or null if unknown. When filtering by a specific GB document code this is an overestimate based on the parent category total."}}},"result":{"type":"array","description":"array of documents filed by the company.","items":{"$ref":"#/components/schemas/Document"}}}}}}},"400":{"description":"Bad Request - Unsupported country code or search not implemented","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["search error"]}}}}}}}}}}}
```

## Search Litigation Records

> Search Hong Kong court records for a given party (typically a company name).\
> Returns three aggregated arrays:\
> \
> \- \`judgments\` — public court judgments matching the party name.\
> \- \`writs\` — submitted Writs of Summons, grouped by court / format variant.\
> \- \`hearings\` — scheduled (past and upcoming) court hearings.\
> \
> Currently only \`HK\` is supported. Other country codes return 400.\
> \
> Matching is case-insensitive substring against party-name text. The judgments source\
> additionally normalises away common corporate suffixes (LTD, LIMITED, CO, COMPANY, etc.)\
> before matching, since those suffixes vary across records.\
> \
> \*\*Per-country response shape.\*\* The \`result\` envelope is currently modelled on Hong Kong court\
> records (\`judgments\` + \`writs\` + \`hearings\`). If other jurisdictions are implemented, the\
> populated arrays and their item shapes may differ per \`countryCode\`: a future jurisdiction\
> may omit \`writs\` or \`hearings\` entirely, add new top-level arrays, or use a different\
> \`LitigationWrit\` variant set. Callers should branch on \`countryCode\` when consuming\
> \`result\`, and treat unrecognised \`caseType\` values as \`other\`.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"LitigationJudgment":{"type":"object","description":"A public court judgment record matching the search term.","required":["title","caseRef","citation","court","date","parties","judge","judgmentUrl"],"properties":{"title":{"type":"string"},"caseRef":{"type":"string","description":"Source case reference as it appears in the court record."},"citation":{"type":"string","description":"Citation as published by the court. Format varies by jurisdiction\n(e.g. neutral citation in HK/UK/AU; reporter citations elsewhere).\n"},"court":{"type":"string"},"date":{"type":"string","description":"Publication date (ISO 8601)."},"parties":{"type":"string","description":"Full parties description as recorded by the court (bilingual)."},"judge":{"type":"string","description":"Coram (judge / panel) string."},"judgmentUrl":{"type":"string","description":"Public URL to the full judgment."}}},"LitigationWrit":{"type":"object","description":"A submitted Writ of Summons. The `caseType` discriminator tells you\nwhich optional fields are populated on this row:\n- `civil_action`: `representation`, `claimNature`, `claimAmount`, `claimCurrency`, `claimAmountRaw`, `filingResponses`\n- `personal_injuries`: `representation`, `claimNature`, `claimAmount`, `claimCurrency`, `claimAmountRaw`, `filingResponses`\n- `civil_appeal`: `lowerCourtCaseNo`, `lowerCourtJudge`, `appellantRepresentation`, `respondentRepresentation`\n- `employees_compensation`: `representation`, `claimNature`\n- `ip`: `representation`, `subjectMatter`, `filingResponses`\n- `other`: only the base fields (`caseNo`, `primaryDate`, `parties`, `remarks`)\n\nThis shape is currently modelled on Hong Kong court records and may be extended\n(new `caseType` values, new optional fields) if the service expands to other regions.\nCallers should treat unrecognised `caseType` values as `other`.\n","required":["caseType","caseNo","primaryDate","parties"],"properties":{"caseType":{"type":"string","enum":["civil_action","personal_injuries","civil_appeal","employees_compensation","ip","other"],"description":"Discriminator for variant-specific fields. See schema description."},"caseNo":{"type":"string"},"primaryDate":{"type":"string","description":"Primary date for the writ (ISO 8601)."},"parties":{"type":"array","items":{"$ref":"#/components/schemas/LitigationWritParty"}},"remarks":{"type":"string","nullable":true},"representation":{"type":"string","nullable":true,"description":"Free-text blob describing legal representation for both sides\n(e.g. \"PLAINTIFF(s) In Person; DEFENDANT(s) Smith & Co\"). Not\nparsed into per-side entries — wording is inconsistent in the\nsource filings.\n"},"claimNature":{"type":"string","nullable":true},"claimAmount":{"type":"number","nullable":true,"description":"Best-effort numeric claim amount derived in code from the Claim\nAmount cell. Null when the cell has no parseable figure (e.g.\n\"Unspecified\") even if claimAmountRaw is set; for cells stacking\nmultiple figures it holds only the last one — prefer claimAmountRaw\nwhen that is present.\n"},"claimCurrency":{"type":"string","nullable":true,"description":"Currency code derived alongside claimAmount; reflects a single\nfigure only.\n"},"claimAmountRaw":{"type":"string","nullable":true,"description":"Verbatim Claim Amount cell text. Some cells stack more than one\ndollar figure (e.g. partial + total on a debt claim); claimAmount\nonly ever holds the last one, so use this field to recover the\nfull breakdown when present. Populated only for rows parsed after\nthis field was introduced, so many historical rows have it null\neven when claimAmount is set — fall back to claimAmount /\nclaimCurrency there.\n"},"filingResponses":{"type":"array","nullable":true,"items":{"type":"object","properties":{"partyName":{"type":"string","nullable":true},"filingDate":{"type":"string","nullable":true},"intentionToContest":{"type":"string","nullable":true}}}},"lowerCourtCaseNo":{"type":"string","nullable":true},"lowerCourtJudge":{"type":"string","nullable":true},"appellantRepresentation":{"type":"string","nullable":true},"respondentRepresentation":{"type":"string","nullable":true},"subjectMatter":{"type":"string","nullable":true}}},"LitigationWritParty":{"type":"object","required":["side","nameRaw"],"properties":{"side":{"type":"string","enum":["plaintiff","defendant","appellant","respondent","applicant","claimant","petitioner","party"]},"nameRaw":{"type":"string","description":"Verbatim party name from the source filing."},"nameEn":{"type":"string","nullable":true},"nameLocal":{"type":"string","nullable":true,"description":"Local-language name as it appears in the source filing\n(e.g. Chinese for `HK`). Script depends on `countryCode`.\n"}}},"LitigationHearing":{"type":"object","description":"A scheduled court hearing. `courtCode` values are drawn from the Hong Kong\ncourt system today; expect this set to expand or diverge per `countryCode`\nas other jurisdictions come online.\n","required":["hearingDate","courtCode"],"properties":{"hearingDate":{"type":"string","description":"Scheduled hearing date (ISO 8601)."},"courtCode":{"type":"string"},"court":{"type":"string","nullable":true,"description":"Specific room / judge label within the court code."},"time":{"type":"string","nullable":true},"caseNumber":{"type":"string","nullable":true,"description":"Case identifier as it appeared in the cause list (whitespace not canonical)."},"parties":{"type":"string","nullable":true,"description":"Free-text parties description."},"nature":{"type":"string","nullable":true,"description":"Hearing type (e.g. Trial, Application, Mention)."}}}}},"paths":{"/cra/{countryCode}/search/litigation":{"post":{"tags":["CorpVerify"],"summary":"Search Litigation Records","description":"Search Hong Kong court records for a given party (typically a company name).\nReturns three aggregated arrays:\n\n- `judgments` — public court judgments matching the party name.\n- `writs` — submitted Writs of Summons, grouped by court / format variant.\n- `hearings` — scheduled (past and upcoming) court hearings.\n\nCurrently only `HK` is supported. Other country codes return 400.\n\nMatching is case-insensitive substring against party-name text. The judgments source\nadditionally normalises away common corporate suffixes (LTD, LIMITED, CO, COMPANY, etc.)\nbefore matching, since those suffixes vary across records.\n\n**Per-country response shape.** The `result` envelope is currently modelled on Hong Kong court\nrecords (`judgments` + `writs` + `hearings`). If other jurisdictions are implemented, the\npopulated arrays and their item shapes may differ per `countryCode`: a future jurisdiction\nmay omit `writs` or `hearings` entirely, add new top-level arrays, or use a different\n`LitigationWrit` variant set. Callers should branch on `countryCode` when consuming\n`result`, and treat unrecognised `caseType` values as `other`.\n","operationId":"searchLitigation","parameters":[{"name":"countryCode","in":"path","required":true,"description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code.","schema":{"pattern":"^[a-z]{2}$","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["searchTerm"],"properties":{"searchTerm":{"type":"string","description":"Party name to search for (typically a company name; English or Chinese)."}}}}}},"responses":{"200":{"description":"Successfully retrieved litigation records","content":{"application/json":{"schema":{"type":"object","required":["message","result"],"properties":{"message":{"type":"string","enum":["success"]},"result":{"type":"object","required":["searchTerm","judgments","writs","hearings"],"properties":{"searchTerm":{"type":"string"},"judgments":{"type":"array","items":{"$ref":"#/components/schemas/LitigationJudgment"}},"writs":{"type":"array","items":{"$ref":"#/components/schemas/LitigationWrit"}},"hearings":{"type":"array","items":{"$ref":"#/components/schemas/LitigationHearing"}}}}}}}}},"400":{"description":"Bad Request - Unsupported country code or search not implemented","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["search error"]}}}}}}}}}}}
```

## Get Company Base Information

> This endpoint retrieves the base information for a specific company from\
> the Companies Registry using its Company ID.\
> \
> For Hong Kong Companies, the information includes company name (English and Chinese), status,\
> type, category, incorporation date, dissolution date (if applicable),\
> and any remarks.\
> \
> For other countries, the information includes company name, status, category, incorporation date,\
> and other available details such as entity type, registration address, and remarks where\
> applicable. The exact fields returned may vary depending on the data provided by each\
> country’s registry.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Company":{"required":["companyId","companyName","idType","registrationDetails"],"type":"object","description":"Company information returned from the Companies Registry search","properties":{"companyId":{"type":"string","description":"Unique company identifier used in subsequent API calls.\nFor Hong Kong: Business Registration Number (BRN) - an 8-digit number.\nFor Australia: Australian Company Number (ACN).\nFor Singapore: Unique Entity Number (UEN).\n"},"idType":{"type":"string","description":"Type of company identifier returned.\n- \"BRN\" - Business Registration Number (Hong Kong)\n- \"ACN\" - Australian Company Number (Australia)\n- \"UEN\" - Unique Entity Number (Singapore)\n- \"CIN\" - Corporate Identification Number (India)\n- \"FCRN\" - Foreign Company Registration Number (India)\n- \"LLPIN\" - Limited Liability Partnership Identification Number (India)\n- \"FLLPIN\" - Foreign LLP Identification Number (India)\n- \"Unavailable\" - When the country does not provide a company ID\n"},"companyName":{"type":"string","description":"Official registered company name (in English or Chinese depending on the search)"},"localName":{"type":"string","description":"Name of the company in local language (if applicable and different from companyName)"},"status":{"type":"string","enum":["Live","Distressed","Dissolved"],"description":"Current active status of the company.\n- \"Live\" - Company is currently active and in good standing\n- \"Distressed\" - Company is undergoing liquidation, insolvency proceedings, or striking-off process\n- \"Dissolved\" - Company has been dissolved/deregistered\n"},"nameType":{"type":"string","enum":["current","old"],"description":"Indicates whether the returned name is the current or a previous name.\n- \"current\" - This is the company's current registered name\n- \"old\" - This is a previous/historical name of the company\n"},"address":{"type":"string","description":"Registered address of the company (when available)"},"state":{"type":"string","description":"State or province of the company's registered office (when available)"},"registrationDetails":{"type":"array","description":"A list of attributes defining the company's legal structure, registration category, or public/private status as defined by the local jurisdiction.","items":{"$ref":"#/components/schemas/registrationDetail"}},"dissolutionDate":{"type":"string","format":"date","description":"Date of dissolution (YYYY-MM-DD format, empty string if not dissolved)"},"incorporationDate":{"type":"string","format":"date","description":"Date of incorporation/registration (YYYY-MM-DD format)"},"remarks":{"type":"string","description":"Any remarks or notes about the company"},"nameHistory":{"type":"array","description":"Historical company names (previous names the company has used)","items":{"type":"object","properties":{"companyName":{"type":"string","description":"English company name"},"localName":{"type":"string","description":"Chinese company name (if available)"},"effectiveDate":{"type":"string","format":"date","description":"Date when this name became effective (YYYY-MM-DD format)"}}}}}},"registrationDetail":{"type":"string","description":"Legal classification or entity type identifier. \nProvides details about a company based on its incorporation structure (e.g., Limited by Shares) or its regulatory category (e.g., Private vs. Public) according to the relevant national companies legislation.\n","enum":["Corporation","Company Limited by Shares","Registered Non-Hong Kong Company","Company Limited by Guarantee","Limited Company","Limited Liability Company","Unlimited Company","Registered Society/Organization","Open-ended Fund Company","Open-ended Investment Company","Limited Partnership Fund","Public Company","Private Company","Foreign Company","Foreign Company Branch","Registered Overseas Entity","Registered Australian Corporation under non-Corporations Law","Company Limited by Both Shares and Guarantees","No Liability Company","Sole Proprietorship/ Partnership","Sole Proprietorship","Limited Liability Partnership","Limited Partnership","Unlimited Partnership","Local Company","Juristic Ordinary Partnership","Foreign Juristic Person","Joint Venture","Chamber of Commerce","Private Limited by Guarantee (Section 60 Exemption)","Assurance Company","European Economic Interest Grouping","Royal Charter Body","United Kingdom Societas","United Kingdom Economic Interest Grouping","Charitable Incorporated Organisation","Educational Corporation","Government Body","General Partnership Company","Limited Partnership Company","Special Registered Corporation","One Person Company","Section 8 Company","Nidhi Company","Producer Company","IFSC Company","Partnership","Entity Registered Under Myanmar Companies Act 1914","Economic Interest Grouping","Civil Company","Other","N/A"]}}},"paths":{"/cra/{countryCode}/search/company":{"post":{"tags":["CorpVerify"],"summary":"Get Company Base Information","description":"This endpoint retrieves the base information for a specific company from\nthe Companies Registry using its Company ID.\n\nFor Hong Kong Companies, the information includes company name (English and Chinese), status,\ntype, category, incorporation date, dissolution date (if applicable),\nand any remarks.\n\nFor other countries, the information includes company name, status, category, incorporation date,\nand other available details such as entity type, registration address, and remarks where\napplicable. The exact fields returned may vary depending on the data provided by each\ncountry’s registry.\n","operationId":"searchCompany","parameters":[{"name":"countryCode","in":"path","required":true,"description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code.","schema":{"pattern":"^[a-z]{2}(-[a-z]{2})?$","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["companyId"],"properties":{"companyId":{"type":"string","description":"Company ID (e.g., BRN for Hong Kong, ACN for Australia)"}}}}}},"responses":{"200":{"description":"Successfully retrieved company information","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["success","search error"],"description":"Status of the operation"},"result":{"description":"Company base information object or null if not found","oneOf":[{"$ref":"#/components/schemas/Company"},{"type":"null"}]}}}}}},"400":{"description":"Bad Request - Unsupported country code or search not implemented","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","enum":["search error"]}}}}}}}}}}}
```

## Info

> Returns metadata and a list of all countries supported by the CorpVerify service,\
> including their automation status, available search capabilities, report contents,\
> and the available document types per country. Each country includes a \`defaultDocumentType\`\
> indicating which document is returned when \`documentType\` is omitted from a \`/cra/request\` call.\
> \
> \> This contains the same data as the \[CorpVerify Country Coverage table]\(#COUNTRIES.md).<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"CorpVerify","description":"CorpVerify provides company registry data and documents across **60+ jurisdictions** worldwide.\nReports include registration details, shareholder information, and financial data where available.\n\nFor the full list of supported countries and their capabilities, see\n[CorpVerify Country Coverage](#countries).\n\n\n---\n\n### Default Flow\n\n1. Use `/cra/{countryCode}/search/companies` to find the Company ID\n\n2. Pass this ID to `/cra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/cra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/cra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/cra/poll` with the returned token until a `200` response is returned.\n\n---\n\n### Retrieval Methods\n\n**Automated Retrieval** — For supported countries (for example Hong Kong), providing a valid\n`companyId` enables automatic document fetching. The `/cra/poll` endpoint typically resolves\nwithin 5 minutes. Use `/cra/{countryCode}/search/companies` to obtain valid Company IDs.\n\n**Manual Processing** — For countries without automation or when `companyId` is unavailable, Fill Easy\nprocesses requests manually. This may take up to several business days. You can still poll\n`/cra/poll` to check status and retrieve the document when ready.\n\n> **Note:** The search endpoint may return an empty `companyId` for certain countries.\n> In these cases, provide the `companyName` instead and the request will be processed manually.\n\n---\n\n### Try It Out\n\nExplore available regions, search for companies, and purchase documents using our web interface:\n[search.fill-easy.com](https://search.fill-easy.com)\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Country":{"type":"object","required":["name","code","region","status","sourceLanguage","search","contents","documentTypes","defaultDocumentType"],"properties":{"name":{"type":"string","description":"Country name"},"code":{"type":"string","description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code."},"region":{"type":"string","description":"Geographic region"},"sourceLanguage":{"type":"string","description":"ISO 639-1 language code for the source language of documents"},"status":{"type":"string","enum":["automated","manual"],"description":"Whether the country is fully automated or requires manual processing"},"search":{"type":"object","required":["documents","companies","company"],"properties":{"documents":{"type":"boolean","description":"Whether document search is available"},"companies":{"type":"boolean","description":"Whether company name search is available"},"company":{"type":"boolean","description":"Whether company ID lookup is available"}}},"contents":{"type":"object","required":["registration","shareholder","financial"],"properties":{"registration":{"type":"boolean","description":"Whether registration information is available"},"shareholder":{"type":"boolean","description":"Whether shareholder information is available"},"financial":{"type":"boolean","description":"Whether financial information is available"}}},"defaultDocumentType":{"type":"string","description":"The document type used when `documentType` is omitted from a `/cra/request` call.\nAlways matches one of the `name` values in `documentTypes`.\n"},"documentTypes":{"type":"array","description":"Available document types for this country","items":{"type":"object","required":["name","contents","source"],"properties":{"name":{"type":"string","description":"Document type name"},"aliases":{"type":"array","description":"Alternative names for the document type. Not allowed into the documentType field of `/cra/request`"},"contents":{"type":"array","items":{"$ref":"#/components/schemas/DocumentContents"},"description":"List of content fields included in this document type"},"source":{"type":"string","description":"Source of the document"},"sampleUrl":{"type":"string","format":"uri","description":"URL to a sample document"},"retrievalRequiresDocumentId":{"type":"boolean","description":"When true, the `documentId` field is required in `/cra/request` for this document type"},"retrievalRequiresDocumentYear":{"type":"boolean","description":"When true, the `documentYear` field is required in `/cra/request` for this document type"},"retrievalSupportsDocumentYear":{"type":"boolean","description":"When true, the `documentYear` field is accepted but optional in `/cra/request` for this document type"}}}}}},"DocumentContents":{"type":"string","description":"Granular data points available in a company registry document","enum":["Company Name","Unique Identifier","Date of Incorporation","Company Type","Registered Office Address","Company Status","Status Date","Jurisdiction","Authorized Capital","Paid-Up Capital","Share Information","Shareholder Name","Ownership Ratio","Ownership Volume","Director Name","Director Position","Director Nationality","Registered Agent","Registered Agent Contact","Filing History","Branches and Subsidiaries","Insolvency Information","Notary Name","Notary Deed Number","Notary Deed Date","Business Activities","Subscribed Capital","Commissioner Name","Commissioner Position","Business Capital","Owner Name","Owner Position","Beneficial Owner Name","Beneficial Owner Criteria","Financial Statement","Company Secretary","Mortgages and Charges","Court Judgments","Writs of Summons","Court Hearings"]}}},"paths":{"/cra/info":{"get":{"tags":["CorpVerify"],"summary":"Info","description":"Returns metadata and a list of all countries supported by the CorpVerify service,\nincluding their automation status, available search capabilities, report contents,\nand the available document types per country. Each country includes a `defaultDocumentType`\nindicating which document is returned when `documentType` is omitted from a `/cra/request` call.\n\n> This contains the same data as the [CorpVerify Country Coverage table](#COUNTRIES.md).\n","operationId":"craInfo","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code (e.g. `HK`). Case insensitive."}],"responses":{"200":{"description":"Successfully retrieved country information","content":{"application/json":{"schema":{"type":"object","required":["meta","countries"],"properties":{"meta":{"type":"object","required":["totalCountries","automated","manual","searchable"],"properties":{"totalCountries":{"type":"number","description":"Total number of countries"},"automated":{"type":"number","description":"Number of automated countries"},"manual":{"type":"number","description":"Number of manual countries"},"searchable":{"type":"number","description":"Number of countries with at least one search capability"}}},"countries":{"type":"array","items":{"$ref":"#/components/schemas/Country"}}}}}}},"400":{"description":"Bad Request"},"500":{"description":"Internal server error"}}}}}}
```


# Land Registry Report

Search and retrieve official land documents in minutes.

***

#### Flow

1. Optionally use `/lra/search` to find the Property Reference Number (PRN)
2. Pass the PRN to `/lra/request` to initiate the report request
3. Receive results via **webhook** or **poll** `/lra/poll`

***

#### Result Delivery

**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body. When the report is ready, a `POST` request is sent to that URL with the report payload wrapped in a `WebhookPayload` envelope. Polling remains available as a fallback if delivery fails.

**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.

## Request

> Each request maps to exactly one returned document.\
> \
> Specify either PRN (if known or found through \`/lra/search\`) or address.\
> \
> Requests with the PRN will return within 5 minutes most of the time.\
> \
> Requests with Just the address will be manually resolved within 1-2 days.\
> \
> For requests that are not a PRN (Memorials), please pass the Memorial ID into the address field like \`{"address": "Memorial 1234567"}\`. These requests will be manually resolved within 1-2 days.\
> \
> \*\*Dry Run:\*\* Set \`dryRun: true\` to test the integration without incurring costs.\
> A sample Land Registry PDF is uploaded to the report path and returned immediately — no\
> retrieval script or manual process runs. The response includes \`dryRun: true\` and a token\
> that can be polled normally via \`/lra/poll\`.\
> \
> \*\*Webhook Delivery:\*\* Provide \`callbackUrl\` to receive a \`POST\` with the completed report\
> when it is ready. The webhook body is a \[\`WebhookPayload\`]\(#/components/schemas/WebhookPayload)\
> containing the same data as a \`200\` response from \`/lra/poll\`.\
> The request includes \`X-Webhook-Event: lra.report.completed\` and \`X-Request-Id\` headers,\
> plus any custom headers supplied in \`callbackHeaders\`.\
> Polling via \`/lra/poll\` remains available regardless of whether a \`callbackUrl\` is provided.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Land Registry Report","description":"Search and retrieve official land documents in minutes.\n\n---\n\n### Flow\n\n1. Optionally use `/lra/search` to find the Property Reference Number (PRN)\n\n2. Pass the PRN to `/lra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/lra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/lra/request":{"post":{"tags":["Land Registry Report"],"summary":"Request","description":"Each request maps to exactly one returned document.\n\nSpecify either PRN (if known or found through `/lra/search`) or address.\n\nRequests with the PRN will return within 5 minutes most of the time.\n\nRequests with Just the address will be manually resolved within 1-2 days.\n\nFor requests that are not a PRN (Memorials), please pass the Memorial ID into the address field like `{\"address\": \"Memorial 1234567\"}`. These requests will be manually resolved within 1-2 days.\n\n**Dry Run:** Set `dryRun: true` to test the integration without incurring costs.\nA sample Land Registry PDF is uploaded to the report path and returned immediately — no\nretrieval script or manual process runs. The response includes `dryRun: true` and a token\nthat can be polled normally via `/lra/poll`.\n\n**Webhook Delivery:** Provide `callbackUrl` to receive a `POST` with the completed report\nwhen it is ready. The webhook body is a [`WebhookPayload`](#/components/schemas/WebhookPayload)\ncontaining the same data as a `200` response from `/lra/poll`.\nThe request includes `X-Webhook-Event: lra.report.completed` and `X-Request-Id` headers,\nplus any custom headers supplied in `callbackHeaders`.\nPolling via `/lra/poll` remains available regardless of whether a `callbackUrl` is provided.\n","operationId":"lraRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"countryCode":{"type":"string","description":"Country code for the property"},"prn":{"type":"string","description":"Property Reference Number"},"address":{"type":"string","description":"Property Address"},"category":{"type":"string","enum":["confirm","clarify","reject","lot","memorial"],"description":"Resolver outcome for this order (drives the ops dashboard view)"},"reasoning":{"type":"string","description":"Judge reasoning or defer reason, shown to ops"},"candidates":{"type":"array","description":"Alternative matches considered (shown to ops for clarify/reject)","items":{"type":"object","required":["prn","free_format_addr_eng"],"properties":{"prn":{"type":"string","description":"Property Reference Number"},"free_format_addr_eng":{"type":"string","description":"Free format English address"}}}},"emailList":{"type":"array","items":{"type":"string","format":"email"},"description":"Optional field for usage analytics"},"externalRefId":{"type":"string","description":"Your own reference ID (optional field for usage analytics)"},"dryRun":{"type":"boolean","description":"Set to `true` to test the full request-poll flow without incurring costs.\nA sample Land Registry PDF is uploaded to S3 and the request returns immediately.\n"},"express":{"type":"boolean","description":"Expediate request speed (Only used if turn-around times have been agreed upon)"},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://.+","description":"HTTPS URL to receive a webhook POST when the report is ready.\nWhen provided, the completed report (same payload as a `200` response from `/lra/poll`)\nis delivered to this URL.\nPolling remains available as a fallback.\n"},"callbackHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the webhook request.\nUse this to pass authentication or any other headers your endpoint requires\n(e.g. `{\"Authorization\": \"Bearer <token>\", \"X-Api-Key\": \"...\"}`).\n"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Poll with this token"},"dryRun":{"description":"Echoed back as `true` when the request was a dry run — no cost incurred","type":"boolean"}}}}}}}}}}}
```

## Poll Report

> Check the status of a land registry report request.\
> Keep polling until a \`200\` response is returned.\
> \
> Returns \`202\` while the report is still being processed.\
> \
> If a \`callbackUrl\` was provided in \`/lra/request\`, the report is also\
> delivered via webhook when ready. Polling is always available as a fallback.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Land Registry Report","description":"Search and retrieve official land documents in minutes.\n\n---\n\n### Flow\n\n1. Optionally use `/lra/search` to find the Property Reference Number (PRN)\n\n2. Pass the PRN to `/lra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/lra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/lra/poll":{"post":{"tags":["Land Registry Report"],"summary":"Poll Report","description":"Check the status of a land registry report request.\nKeep polling until a `200` response is returned.\n\nReturns `202` while the report is still being processed.\n\nIf a `callbackUrl` was provided in `/lra/request`, the report is also\ndelivered via webhook when ready. Polling is always available as a fallback.\n","operationId":"lraPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["token"],"type":"object","properties":{"token":{"type":"string","description":"Output of `/lra/request`"}}}}}},"responses":{"200":{"description":"Report ready","content":{"application/json":{"schema":{"type":"object","required":["message","data"],"properties":{"message":{"type":"string"},"data":{"type":"string","description":"Presigned URL to download the report"},"fileName":{"type":"string","description":"Suggested file name — the property address (or PRN), e.g. \"Flat A, 12 F, Block 1, Discovery Bay_Land Search.pdf\"."}}}}}},"202":{"description":"Report is pending","content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}}}}}}}
```

## Search HK Land Registry address records

> Queries the \`address\_table\` in PostgreSQL to find matching property records.\
> Returns up to 300 matching records. All filter conditions are combined with AND logic.\
> At least one search parameter should be provided.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Land Registry Report","description":"Search and retrieve official land documents in minutes.\n\n---\n\n### Flow\n\n1. Optionally use `/lra/search` to find the Property Reference Number (PRN)\n\n2. Pass the PRN to `/lra/request` to initiate the report request\n\n3. Receive results via **webhook** or **poll** `/lra/poll`\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/lra/request` body.\nWhen the report is ready, a `POST` request is sent to that URL with the report payload\nwrapped in a [`WebhookPayload`](#/components/schemas/WebhookPayload) envelope.\nPolling remains available as a fallback if delivery fails.\n\n**Polling** — Call `/lra/poll` with the returned token until a `200` response is returned.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/lra/search":{"post":{"tags":["Land Registry Report"],"summary":"Search HK Land Registry address records","description":"Queries the `address_table` in PostgreSQL to find matching property records.\nReturns up to 300 matching records. All filter conditions are combined with AND logic.\nAt least one search parameter should be provided.\n","operationId":"lraSearch","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Search filters for address lookup. All fields are optional but at least one should be provided.\nAll supplied conditions are combined with AND logic.\n","properties":{"block":{"type":"string","description":"Block or tower identifier (e.g. \"BLOCK B\", \"TOWER 1\").\nExact match against the `block` column.\n"},"eng_street_name":{"type":"string","description":"English street name. Case-insensitive containment match\n(`UPPER(street_name_eng) LIKE '%value%'`).\nTolerates partial matches.\n"},"ch_street_name":{"type":"string","description":"Chinese street name. Containment match against `street_name_chn`.\nOnly used if `eng_street_name` is not provided.\n"},"flat":{"type":"string","description":"Flat or unit identifier (e.g. \"A\", \"12\", \"B1\").\nCase-insensitive containment match (`UPPER(flat) LIKE '%value%'`).\n"},"floor":{"type":"string","description":"Floor designation (e.g. \"8\", \"G/F\", \"MEZZANINE\").\nCase-insensitive containment match (`UPPER(floor) LIKE '%value'`).\n"},"free_entry":{"type":"array","items":{"type":"string"},"description":"Free-form substrings matched against the `free_format_addr_eng` column.\nEach entry is matched independently with case-insensitive containment\n(`UPPER(free_format_addr_eng) LIKE '%value%'`).\nMultiple entries are combined with AND — all must match.\nUseful for searching building names, estate names, or partial addresses.\n"},"house_prefix":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":2,"description":"Numeric part of the house/building number.\n- **1 value** `[86]`: exact match (`house_num_prefix = 86`).\n- **2 values** `[80, 90]`: inclusive range (`house_num_prefix BETWEEN 80 AND 90`).\n"},"house_suffix":{"type":"string","description":"Alphabetic suffix of the building number (e.g. \"A\" in \"12A\").\nExact match against the `house_num_suffix` column.\n"}}}}}},"responses":{"200":{"description":"Matching address records (max 300).","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["prn","free_format_addr_eng"],"properties":{"prn":{"type":"string","description":"Property Reference Number — unique identifier for the property in HK Land Registry."},"free_format_addr_eng":{"type":"string","description":"Full English free-format address as stored in the registry."}}}}}}}}}}}}
```


# KYC China

KYC verification for mainland China citizens — identity, mobile, risk, and bank checks against Chinese government, telecom carrier, and banking records.

### Single endpoint, smart fan-out

You send one request to `POST /kyc/cn/request` with whatever fields you have, then either receive the result via a webhook (pass `callbackUrl` in the request) or poll `POST /kyc/cn/poll` until the result is ready. The service inspects the request, picks the strongest verification variant on each axis (e.g. four-factor instead of two-factor when ID dates are present), and runs every eligible sub-check in parallel against the upstream sources.

The merged response tells you, per category, whether the person matched, plus an execution `summary` so you can tell at a glance which checks ran, which matched, which came back empty, and which errored.

### Products

Each check has a **product number**. Pass these in `run` on `POST /kyc/cn/request` to control exactly which checks fire — and what you pay for. Omit `run` to fan out to every product whose inputs are present.

| Product | Check                                  | Inputs it needs                                                |
| ------- | -------------------------------------- | -------------------------------------------------------------- |
| `1`     | Identity — name + ID                   | `name`, `idNumber`                                             |
| `2`     | Identity — face match                  | `name`, `idNumber`, `facePhoto`                                |
| `3`     | Identity — name + ID + validity dates  | `name`, `idNumber`, `idIssueDate`, `idExpiryDate`              |
| `4`     | Identity — validity dates + face match | `name`, `idNumber`, `idIssueDate`, `idExpiryDate`, `facePhoto` |
| `8.1`   | Bank — 2-factor                        | `name`, `bankCardNumber`                                       |
| `8.2.1` | Bank — 3-factor                        | `name`, `idNumber`, `bankCardNumber`                           |
| `8.3`   | Bank — 4-factor                        | `name`, `idNumber`, `bankCardNumber`, `mobile`                 |
| `11`    | Mobile registered to name / ID         | `mobile` + `name` and/or `idNumber`                            |
| `12`    | Mobile + name + ID (3-factor)          | `name`, `idNumber`, `mobile`                                   |
| `15`    | Mobile attribution + location          | `mobile`                                                       |
| `17`    | Address-to-mobile association          | `mobile`, `addressesToVerify[]`                                |
| `24`    | Risk — fraud / gambling blacklist      | `mobile` or `idNumber`                                         |
| `25`    | Litigation records                     | `name`, `idNumber`                                             |
| `27`    | Risk — criminal / police record        | `name`, `idNumber`                                             |

The detailed sub-check eligibility (which upstream call each product maps to, and the smart-selection rules) lives under `POST /kyc/cn/request`.

### Data sources & residency

All upstream calls go through a Beijing-based proxy and query official sources: Chinese government (identity & criminal), telecom carriers (mobile & location), UnionPay member banks (bank verification), and the national anti-fraud blacklist (risk). No personal data is stored by Fill Easy after the response is returned.

### Cost & rate limits

Each sub-check is a separate upstream call; see the `summary` bucket table under `POST /kyc/cn/request` for which outcomes are billed. A request with `name`, `idNumber`, `mobile`, and `bankCardNumber` fans out to **9 calls** in parallel (worst case without `addressesToVerify`). Each entry in `addressesToVerify` adds one further call. To narrow what runs, simply omit the inputs you don't want to verify — every sub-check whose required fields are present always fires.

## KYC China verification - Request

> Verify a Chinese citizen's identity, mobile, risk profile, and/or bank card in a\
> single request. You send whatever fields you have; the service decides which\
> sub-checks to run, fans them out in parallel against the upstream sources, \
> and merges the results into one response.\
> \
> \---\
> \
> \## Selecting which products to run\
> \
> By default the endpoint runs \*\*every\*\* sub-check whose required inputs are\
> present. To restrict the request to a specific set of products, supply \`run\`\
> with an array of product numbers from the\
> \[KYC Mainland China catalogue]\(#tag/KYC-China). For example, \`run: \["1", "8.3", "25"]\`\
> runs only ID & Name verification, bank account 4-factor verification, and litigation\
> records. Product numbers are strings — bank verification is addressed per factor\
> level (\`8.1\`, \`8.2.1\`, \`8.3\`).\
> \
> \| Product # | Name | Sub-checks |\
> \|---|---|---|\
> \| \`1\` | ID & Name Verify | \`identity.two-factor\` |\
> \| \`2\` | ID, Name & Face Verify | \`identity.image\` |\
> \| \`3\` | ID, Name & Date Verify | \`identity.four-factor\` |\
> \| \`4\` | ID, Name, Date & Face Verify | \`identity.four-factor\` + \`identity.image\` |\
> \| \`8.1\` | Bank Account 2FV (name + card) | \`bank.two-factor\` |\
> \| \`8.2.1\` | Bank Account 3FV (name + card + ID) | \`bank.three-factor\` |\
> \| \`8.3\` | Bank Account 4FV (name + card + ID + mobile) | \`bank.four-factor\` |\
> \| \`11\` | Telecom 2FV | \`identity.name-mobile\`, \`identity.id-mobile\` |\
> \| \`12\` | Telecom 3FV | \`identity.three-factor\` |\
> \| \`15\` | Telecom Operator Location | \`mobile.attribution\`, \`mobile.location-work\`, \`mobile.location-residential\` |\
> \| \`17\` | Phone-Address Association | \`mobile.address-verify\[N]\` (one per \`addressesToVerify\` entry) |\
> \| \`24\` | Risk Score for Adverse Records | \`risk.fraud\` |\
> \| \`25\` | Litigation Record Verification | \`litigation.records\` |\
> \| \`27\` | Credit Risk Validation | \`risk.criminal\` |\
> \
> When \`run\` is omitted or empty, the default fan-out applies and the smart-selection\
> rules below avoid paying for redundant calls. When \`run\` is supplied, each requested\
> product fires independently if its required inputs are present — so asking for both\
> product \`1\` (two-factor) and product \`3\` (four-factor) runs \*\*both\*\*, bypassing the\
> default upgrade rule.\
> \
> \---\
> \
> \## How the request fans out\
> \
> The endpoint runs every sub-check whose required inputs are present in your request,\
> with two \*\*smart-selection rules\*\* that avoid paying for redundant calls:\
> \
> \- On the \*\*identity-document axis\*\*, the strongest available variant runs and\
> &#x20; weaker ones are skipped. Specifically, \`identity.four-factor\` (which verifies the\
> &#x20; ID's validity dates in addition to name + ID) supersedes \`identity.two-factor\`\
> &#x20; when both \`idIssueDate\` and \`idExpiryDate\` are supplied.\
> \- On the \*\*identity-mobile axis\*\*, the strongest available variant runs.\
> &#x20; \`identity.three-factor\` (name + ID + mobile) supersedes \`identity.name-mobile\`\
> &#x20; and \`identity.id-mobile\` when all three fields are present.\
> \- On the \*\*bank axis\*\*, the default fan-out runs only the strongest eligible\
> &#x20; variant: \`bank.four-factor\` (name + ID + card + mobile) supersedes\
> &#x20; \`bank.three-factor\` (name + ID + card), which supersedes \`bank.two-factor\`\
> &#x20; (name + card). When you select bank products explicitly via \`run\`, each one\
> &#x20; fires independently — \`run: \["8.1", "8.3"]\` runs both 2-factor and 4-factor,\
> &#x20; and each is reported in its own \`bank2f\` / \`bank3f\` / \`bank4f\` field.\
> \
> Other sub-checks run independently — face match (\`identity.image\`) is on a\
> separate axis from document verification, mobile lookups, and risk checks.\
> \
> Every sub-check whose required fields are present \*\*always runs\*\*. There is no\
> opt-out — if you don't want a category to fire, simply don't supply its inputs.\
> \
> \### Sub-check eligibility\
> \
> \| Sub-check | Required fields | What it verifies |\
> \|---|---|---|\
> \| \`identity.two-factor\` | \`name\`, \`idNumber\` | Name + ID pair exists in MPS records |\
> \| \`identity.four-factor\` | \`+ idIssueDate\`, \`idExpiryDate\` | As above, plus dates match the on-file record |\
> \| \`identity.image\` | \`name\`, \`idNumber\`, \`facePhoto\` | Photo matches the MPS face on file |\
> \| \`identity.name-mobile\` | \`name\`, \`mobile\` | Mobile is registered to that name |\
> \| \`identity.id-mobile\` | \`idNumber\`, \`mobile\` | Mobile is registered to that ID |\
> \| \`identity.three-factor\` | \`name\`, \`idNumber\`, \`mobile\` | All three are tied to one person |\
> \| \`mobile.attribution\` | \`mobile\` | Carrier, registered province, city |\
> \| \`mobile.location-work\` | \`mobile\` | Most-active city during 07:00-19:00 weekdays (last 3 months) |\
> \| \`mobile.location-residential\` | \`mobile\` | Most-active city during 21:00-07:00 (last 3 months) |\
> \| \`mobile.address-verify\[N]\` | \`mobile\` + entry in \`addressesToVerify\` | Distance segment between the supplied address and the mobile's recorded \`common\` / \`work\` / \`residential\` area. One sub-check fires per entry, indexed \`\[0]\`, \`\[1]\`, … |\
> \| \`risk.fraud\` | \`mobile\` or \`idNumber\` | Fraud / gambling / money-mule blacklist hits |\
> \| \`risk.criminal\` | \`name\`, \`idNumber\` | Police record flags (criminal, drug, fugitive, etc.) |\
> \| \`bank.two-factor\` | \`name\`, \`bankCardNumber\` | Card is registered under that name |\
> \| \`bank.three-factor\` | \`+ idNumber\` | As above, plus the card belongs to that ID |\
> \| \`bank.four-factor\` | \`+ mobile\` | As above, plus mobile is the card's registered number |\
> \
> \---\
> \
> \## Reading the response\
> \
> The response always contains a \`summary\` object. Each sub-category (\`identity\`,\
> \`mobile\`, \`risk\`, and the \`bank2f\` / \`bank3f\` / \`bank4f\` fields) is \*\*present only\
> if its sub-check ran and returned data\*\*. Categories with only errored or\
> not-found outcomes are omitted.\
> \
> \### \`summary\` buckets\
> \
> Every attempted sub-check appears in \`summary.ran\`. From there it lands in \*\*exactly\
> one\*\* of these buckets:\
> \
> \| Bucket | Meaning |\
> \|---|---|\
> \| \`matched\` | An identity- or bank-axis check returned \`match\` |\
> \| \`unmatched\` | An identity- or bank-axis check returned \`no match\` (the call ran successfully; the answer was negative) |\
> \| \`notFound\` | The upstream had no record for the input. For risk, litigation, and bank checks this is the clean-record answer and is billed; identity and mobile checks returning \`not found\` are not billed |\
> \| \`errored\` | The check could not be completed. \`error\` carries a short human-readable explanation. Not billed on its own — a multi-check product still bills once if another of its checks delivered |\
> \
> A sub-check whose upstream was unreachable or returned an unusable response\
> appears only in \`summary.unavailable\` — not in \`ran\` or any bucket above —\
> and is not billed on its own.\
> \
> Mobile lookups (\`mobile.attribution\`, \`mobile.location-\*\`) and risk lookups\
> (\`risk.fraud\`, \`risk.criminal\`) have no match/no-match semantics. They appear in\
> \`ran\` and either \`notFound\` or \`errored\` — never in \`matched\`/\`unmatched\`.\
> \
> \### Result semantics by category\
> \
> \- \*\*Identity\*\* — array of \`{ type, result, verification }\`. Treat \`match\` as a\
> &#x20; positive identity signal. \`no match\` from \`three-factor\` typically means the\
> &#x20; mobile isn't tied to that person; pair it with the result from \`two-factor\` /\
> &#x20; \`four-factor\` (also returned) to disambiguate document mismatch from mobile mismatch.\
> \- \*\*Mobile\*\* — flat object with whatever the lookups returned. Fields are absent\
> &#x20; when their underlying call returned no data; check \`summary.notFound\` to tell\
> &#x20; "no data available" from "we never asked".\
> \- \*\*Risk\*\* — \`risk.fraud\` returns a fixed list of four risk types (fraud, gambling\
> &#x20; operator, gambling player, money mule) each with severity \`None\` / \`Low\` /\
> &#x20; \`Medium\` / \`High\`. \`risk.criminal\` returns a flat boolean map. \`isNormal: null\`\
> &#x20; (rather than a boolean) means the check could not complete and the records are\
> &#x20; not authoritative.\
> \- \*\*Bank\*\* — up to three independent fields, one per variant that ran:\
> &#x20; \`bank2f\` (name + card), \`bank3f\` (name + card + ID), and \`bank4f\` (name + card +\
> &#x20; ID + mobile). Each holds \`match\` / \`no match\` / \`not found\` and is present only\
> &#x20; when that variant ran. The default fan-out populates a single field (strongest\
> &#x20; eligible); selecting multiple bank products via \`run\` populates one field each.\
> \
> \---\
> \
> \## Errors\
> \
> \| Code | Meaning |\
> \|---|---|\
> \| \`200\` | Always returned when at least one sub-check was eligible. Per-check failures appear in \`summary.errored\` or \`summary.unavailable\`, never as a 4xx/5xx |\
> \| \`400\` | No sub-checks were eligible with the supplied fields (e.g. only \`facePhoto\` provided without \`name\` + \`idNumber\`) |\
> \| \`502\` | Internal failure invoking the upstream — only thrown when something fails outside the per-check fan-out |\
> \
> Partial failures are intentional: a single misbehaving upstream sub-call should not\
> prevent the rest of the response from being delivered.\
> \
> \---\
> \
> \## Common patterns\
> \
> \*\*Lightweight identity check.\*\* Send \`name\` + \`idNumber\` only — runs \`identity.two-factor\`\
> and \`risk.criminal\` for the cost of two upstream calls.\
> \
> \*\*Document verification with face match.\*\* Send \`name\`, \`idNumber\`, \`idIssueDate\`,\
> \`idExpiryDate\`, \`facePhoto\` — runs \`identity.four-factor\` + \`identity.image\` plus\
> \`risk.criminal\`. The strongest non-mobile identity confirmation available.\
> \
> \*\*Mobile-anchored screening.\*\* Send \`mobile\` only — runs \`mobile.attribution\`, both\
> location lookups, and \`risk.fraud\`. Useful when only a phone number is known.\
> \
> \*\*Full KYC.\*\* Send \`name\`, \`idNumber\`, \`mobile\`, \`bankCardNumber\` (and optionally\
> \`idIssueDate\` / \`idExpiryDate\` / \`facePhoto\`) — fans out to up to 9 calls in parallel,\
> plus one extra call per entry in \`addressesToVerify\`.\
> \
> \*\*Address verification.\*\* Pass an \`addressesToVerify\[]\` entry to ask "is this address\
> near the user's \`work\` / \`residential\` / \`common\` area?". Each entry returns a\
> distance bucket (\`≤3km\` → \`>50km\`). Useful for verifying a user's stated address\
> against where their phone is actually used — runs alongside the standard mobile\
> location lookups, which return the actual cities.\
> \
> \*\*Staged verification.\*\* To gate later steps on earlier ones (e.g. only screen risk\
> and bank after identity passes), call the endpoint twice: first with \`name\` +\
> \`idNumber\` only, then re-call with the additional fields after you've inspected\
> the identity result. Each call is independent.\
> \
> \*\*Webhook Delivery:\*\* Provide \`callbackUrl\` to receive a \`POST\` with the completed report\
> when it is ready. The webhook body is a \[\`WebhookPayload\`]\(#/components/schemas/WebhookPayload)\
> containing the same data as a \`200\` response from \`/kyc/cn/poll\`.\
> The request includes \`X-Webhook-Event: kyc.cn.report.completed\` and \`X-Request-Id\` headers,\
> plus any custom headers supplied in \`callbackHeaders\`.\
> Polling via \`/kyc/cn/poll\` remains available regardless of whether a \`callbackUrl\` is provided.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC China","description":"KYC verification for mainland China citizens — identity, mobile, risk, and bank checks\nagainst Chinese government, telecom carrier, and banking records.\n\n## Single endpoint, smart fan-out\n\nYou send one request to [`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest)\nwith whatever fields you have, then either receive the result via a webhook\n(pass `callbackUrl` in the request) or poll\n[`POST /kyc/cn/poll`](#tag/KYC-China/operation/kycCnPoll) until the result is ready. The service inspects the request, picks the strongest\nverification variant on each axis (e.g. four-factor instead of two-factor when ID dates\nare present), and runs every eligible sub-check in parallel against the upstream sources.\n\nThe merged response tells you, per category, whether the person matched, plus an\nexecution `summary` so you can tell at a glance which checks ran, which matched, which\ncame back empty, and which errored.\n\n## Products\n\nEach check has a **product number**. Pass these in `run` on\n[`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest) to control exactly which\nchecks fire — and what you pay for. Omit `run` to fan out to every product whose inputs\nare present.\n\n| Product | Check | Inputs it needs |\n|---|---|---|\n| `1` | Identity — name + ID | `name`, `idNumber` |\n| `2` | Identity — face match | `name`, `idNumber`, `facePhoto` |\n| `3` | Identity — name + ID + validity dates | `name`, `idNumber`, `idIssueDate`, `idExpiryDate` |\n| `4` | Identity — validity dates + face match | `name`, `idNumber`, `idIssueDate`, `idExpiryDate`, `facePhoto` |\n| `8.1` | Bank — 2-factor | `name`, `bankCardNumber` |\n| `8.2.1` | Bank — 3-factor | `name`, `idNumber`, `bankCardNumber` |\n| `8.3` | Bank — 4-factor | `name`, `idNumber`, `bankCardNumber`, `mobile` |\n| `11` | Mobile registered to name / ID | `mobile` + `name` and/or `idNumber` |\n| `12` | Mobile + name + ID (3-factor) | `name`, `idNumber`, `mobile` |\n| `15` | Mobile attribution + location | `mobile` |\n| `17` | Address-to-mobile association | `mobile`, `addressesToVerify[]` |\n| `24` | Risk — fraud / gambling blacklist | `mobile` or `idNumber` |\n| `25` | Litigation records | `name`, `idNumber` |\n| `27` | Risk — criminal / police record | `name`, `idNumber` |\n\nThe detailed sub-check eligibility (which upstream call each product maps to, and the\nsmart-selection rules) lives under\n[`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest).\n\n## Data sources & residency\n\nAll upstream calls go through a Beijing-based proxy and query official sources:\nChinese government (identity & criminal), telecom carriers (mobile & location),\nUnionPay member banks (bank verification), and the national anti-fraud blacklist (risk).\nNo personal data is stored by Fill Easy after the response is returned.\n\n## Cost & rate limits\n\nEach sub-check is a separate upstream call; see the `summary` bucket table under\n`POST /kyc/cn/request` for which outcomes are billed. A request with `name`, `idNumber`,\n`mobile`, and `bankCardNumber` fans out to **9 calls** in parallel (worst case without\n`addressesToVerify`). Each entry in `addressesToVerify` adds one further call. To narrow\nwhat runs, simply omit the inputs you don't want to verify — every sub-check whose\nrequired fields are present always fires.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/kyc/cn/request":{"post":{"tags":["KYC China"],"summary":"KYC China verification - Request","description":"Verify a Chinese citizen's identity, mobile, risk profile, and/or bank card in a\nsingle request. You send whatever fields you have; the service decides which\nsub-checks to run, fans them out in parallel against the upstream sources, \nand merges the results into one response.\n\n---\n\n## Selecting which products to run\n\nBy default the endpoint runs **every** sub-check whose required inputs are\npresent. To restrict the request to a specific set of products, supply `run`\nwith an array of product numbers from the\n[KYC Mainland China catalogue](#tag/KYC-China). For example, `run: [\"1\", \"8.3\", \"25\"]`\nruns only ID & Name verification, bank account 4-factor verification, and litigation\nrecords. Product numbers are strings — bank verification is addressed per factor\nlevel (`8.1`, `8.2.1`, `8.3`).\n\n| Product # | Name | Sub-checks |\n|---|---|---|\n| `1` | ID & Name Verify | `identity.two-factor` |\n| `2` | ID, Name & Face Verify | `identity.image` |\n| `3` | ID, Name & Date Verify | `identity.four-factor` |\n| `4` | ID, Name, Date & Face Verify | `identity.four-factor` + `identity.image` |\n| `8.1` | Bank Account 2FV (name + card) | `bank.two-factor` |\n| `8.2.1` | Bank Account 3FV (name + card + ID) | `bank.three-factor` |\n| `8.3` | Bank Account 4FV (name + card + ID + mobile) | `bank.four-factor` |\n| `11` | Telecom 2FV | `identity.name-mobile`, `identity.id-mobile` |\n| `12` | Telecom 3FV | `identity.three-factor` |\n| `15` | Telecom Operator Location | `mobile.attribution`, `mobile.location-work`, `mobile.location-residential` |\n| `17` | Phone-Address Association | `mobile.address-verify[N]` (one per `addressesToVerify` entry) |\n| `24` | Risk Score for Adverse Records | `risk.fraud` |\n| `25` | Litigation Record Verification | `litigation.records` |\n| `27` | Credit Risk Validation | `risk.criminal` |\n\nWhen `run` is omitted or empty, the default fan-out applies and the smart-selection\nrules below avoid paying for redundant calls. When `run` is supplied, each requested\nproduct fires independently if its required inputs are present — so asking for both\nproduct `1` (two-factor) and product `3` (four-factor) runs **both**, bypassing the\ndefault upgrade rule.\n\n---\n\n## How the request fans out\n\nThe endpoint runs every sub-check whose required inputs are present in your request,\nwith two **smart-selection rules** that avoid paying for redundant calls:\n\n- On the **identity-document axis**, the strongest available variant runs and\n  weaker ones are skipped. Specifically, `identity.four-factor` (which verifies the\n  ID's validity dates in addition to name + ID) supersedes `identity.two-factor`\n  when both `idIssueDate` and `idExpiryDate` are supplied.\n- On the **identity-mobile axis**, the strongest available variant runs.\n  `identity.three-factor` (name + ID + mobile) supersedes `identity.name-mobile`\n  and `identity.id-mobile` when all three fields are present.\n- On the **bank axis**, the default fan-out runs only the strongest eligible\n  variant: `bank.four-factor` (name + ID + card + mobile) supersedes\n  `bank.three-factor` (name + ID + card), which supersedes `bank.two-factor`\n  (name + card). When you select bank products explicitly via `run`, each one\n  fires independently — `run: [\"8.1\", \"8.3\"]` runs both 2-factor and 4-factor,\n  and each is reported in its own `bank2f` / `bank3f` / `bank4f` field.\n\nOther sub-checks run independently — face match (`identity.image`) is on a\nseparate axis from document verification, mobile lookups, and risk checks.\n\nEvery sub-check whose required fields are present **always runs**. There is no\nopt-out — if you don't want a category to fire, simply don't supply its inputs.\n\n### Sub-check eligibility\n\n| Sub-check | Required fields | What it verifies |\n|---|---|---|\n| `identity.two-factor` | `name`, `idNumber` | Name + ID pair exists in MPS records |\n| `identity.four-factor` | `+ idIssueDate`, `idExpiryDate` | As above, plus dates match the on-file record |\n| `identity.image` | `name`, `idNumber`, `facePhoto` | Photo matches the MPS face on file |\n| `identity.name-mobile` | `name`, `mobile` | Mobile is registered to that name |\n| `identity.id-mobile` | `idNumber`, `mobile` | Mobile is registered to that ID |\n| `identity.three-factor` | `name`, `idNumber`, `mobile` | All three are tied to one person |\n| `mobile.attribution` | `mobile` | Carrier, registered province, city |\n| `mobile.location-work` | `mobile` | Most-active city during 07:00-19:00 weekdays (last 3 months) |\n| `mobile.location-residential` | `mobile` | Most-active city during 21:00-07:00 (last 3 months) |\n| `mobile.address-verify[N]` | `mobile` + entry in `addressesToVerify` | Distance segment between the supplied address and the mobile's recorded `common` / `work` / `residential` area. One sub-check fires per entry, indexed `[0]`, `[1]`, … |\n| `risk.fraud` | `mobile` or `idNumber` | Fraud / gambling / money-mule blacklist hits |\n| `risk.criminal` | `name`, `idNumber` | Police record flags (criminal, drug, fugitive, etc.) |\n| `bank.two-factor` | `name`, `bankCardNumber` | Card is registered under that name |\n| `bank.three-factor` | `+ idNumber` | As above, plus the card belongs to that ID |\n| `bank.four-factor` | `+ mobile` | As above, plus mobile is the card's registered number |\n\n---\n\n## Reading the response\n\nThe response always contains a `summary` object. Each sub-category (`identity`,\n`mobile`, `risk`, and the `bank2f` / `bank3f` / `bank4f` fields) is **present only\nif its sub-check ran and returned data**. Categories with only errored or\nnot-found outcomes are omitted.\n\n### `summary` buckets\n\nEvery attempted sub-check appears in `summary.ran`. From there it lands in **exactly\none** of these buckets:\n\n| Bucket | Meaning |\n|---|---|\n| `matched` | An identity- or bank-axis check returned `match` |\n| `unmatched` | An identity- or bank-axis check returned `no match` (the call ran successfully; the answer was negative) |\n| `notFound` | The upstream had no record for the input. For risk, litigation, and bank checks this is the clean-record answer and is billed; identity and mobile checks returning `not found` are not billed |\n| `errored` | The check could not be completed. `error` carries a short human-readable explanation. Not billed on its own — a multi-check product still bills once if another of its checks delivered |\n\nA sub-check whose upstream was unreachable or returned an unusable response\nappears only in `summary.unavailable` — not in `ran` or any bucket above —\nand is not billed on its own.\n\nMobile lookups (`mobile.attribution`, `mobile.location-*`) and risk lookups\n(`risk.fraud`, `risk.criminal`) have no match/no-match semantics. They appear in\n`ran` and either `notFound` or `errored` — never in `matched`/`unmatched`.\n\n### Result semantics by category\n\n- **Identity** — array of `{ type, result, verification }`. Treat `match` as a\n  positive identity signal. `no match` from `three-factor` typically means the\n  mobile isn't tied to that person; pair it with the result from `two-factor` /\n  `four-factor` (also returned) to disambiguate document mismatch from mobile mismatch.\n- **Mobile** — flat object with whatever the lookups returned. Fields are absent\n  when their underlying call returned no data; check `summary.notFound` to tell\n  \"no data available\" from \"we never asked\".\n- **Risk** — `risk.fraud` returns a fixed list of four risk types (fraud, gambling\n  operator, gambling player, money mule) each with severity `None` / `Low` /\n  `Medium` / `High`. `risk.criminal` returns a flat boolean map. `isNormal: null`\n  (rather than a boolean) means the check could not complete and the records are\n  not authoritative.\n- **Bank** — up to three independent fields, one per variant that ran:\n  `bank2f` (name + card), `bank3f` (name + card + ID), and `bank4f` (name + card +\n  ID + mobile). Each holds `match` / `no match` / `not found` and is present only\n  when that variant ran. The default fan-out populates a single field (strongest\n  eligible); selecting multiple bank products via `run` populates one field each.\n\n---\n\n## Errors\n\n| Code | Meaning |\n|---|---|\n| `200` | Always returned when at least one sub-check was eligible. Per-check failures appear in `summary.errored` or `summary.unavailable`, never as a 4xx/5xx |\n| `400` | No sub-checks were eligible with the supplied fields (e.g. only `facePhoto` provided without `name` + `idNumber`) |\n| `502` | Internal failure invoking the upstream — only thrown when something fails outside the per-check fan-out |\n\nPartial failures are intentional: a single misbehaving upstream sub-call should not\nprevent the rest of the response from being delivered.\n\n---\n\n## Common patterns\n\n**Lightweight identity check.** Send `name` + `idNumber` only — runs `identity.two-factor`\nand `risk.criminal` for the cost of two upstream calls.\n\n**Document verification with face match.** Send `name`, `idNumber`, `idIssueDate`,\n`idExpiryDate`, `facePhoto` — runs `identity.four-factor` + `identity.image` plus\n`risk.criminal`. The strongest non-mobile identity confirmation available.\n\n**Mobile-anchored screening.** Send `mobile` only — runs `mobile.attribution`, both\nlocation lookups, and `risk.fraud`. Useful when only a phone number is known.\n\n**Full KYC.** Send `name`, `idNumber`, `mobile`, `bankCardNumber` (and optionally\n`idIssueDate` / `idExpiryDate` / `facePhoto`) — fans out to up to 9 calls in parallel,\nplus one extra call per entry in `addressesToVerify`.\n\n**Address verification.** Pass an `addressesToVerify[]` entry to ask \"is this address\nnear the user's `work` / `residential` / `common` area?\". Each entry returns a\ndistance bucket (`≤3km` → `>50km`). Useful for verifying a user's stated address\nagainst where their phone is actually used — runs alongside the standard mobile\nlocation lookups, which return the actual cities.\n\n**Staged verification.** To gate later steps on earlier ones (e.g. only screen risk\nand bank after identity passes), call the endpoint twice: first with `name` +\n`idNumber` only, then re-call with the additional fields after you've inspected\nthe identity result. Each call is independent.\n\n**Webhook Delivery:** Provide `callbackUrl` to receive a `POST` with the completed report\nwhen it is ready. The webhook body is a [`WebhookPayload`](#/components/schemas/WebhookPayload)\ncontaining the same data as a `200` response from `/kyc/cn/poll`.\nThe request includes `X-Webhook-Event: kyc.cn.report.completed` and `X-Request-Id` headers,\nplus any custom headers supplied in `callbackHeaders`.\nPolling via `/kyc/cn/poll` remains available regardless of whether a `callbackUrl` is provided.\n","operationId":"kycCnRequest","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"All fields are optional. The endpoint runs every sub-check whose required\nfields are present (see the *Sub-check eligibility* table above). At least\none sub-check must be eligible — otherwise a `400` is returned.\n","properties":{"name":{"type":"string","description":"Full legal name in **Chinese characters** (simplified). Must match the\nname on the resident ID card exactly. Latin pinyin transliterations are\nnot accepted by the upstream.\n\nEnables: identity-document checks, mobile-cross checks, bank checks, criminal records.\n"},"idNumber":{"type":"string","description":"18-digit Chinese Resident Identity Card number (居民身份证号码).\nThe 18th character may be `X` for older IDs.\n\nEnables: identity-document checks, mobile-cross checks, bank checks, fraud, criminal records.\n","pattern":"^[0-9]{17}[0-9Xx]$"},"idIssueDate":{"type":"string","description":"ID card issue date in `YYYYMMDD` format (no separators). Found on the\nback of the physical card under 签发日期.\n\nPair with `idExpiryDate` to upgrade `identity.two-factor` to the stronger\n`identity.four-factor` check that also validates the on-file dates.\n","pattern":"^[0-9]{8}$"},"idExpiryDate":{"type":"string","description":"ID card expiry date in `YYYYMMDD` format, or the literal string `长期`\nwhen the card has no expiry (issued to citizens 46+ in some cases).\nFound on the back of the physical card under 有效期限.\n"},"facePhoto":{"type":"string","description":"Base64-encoded facial photo. **Do not include the `data:image/...;base64,`\nprefix** — only the raw base64 payload.\n\nRecommended: clear front-facing photo, no occlusions, JPEG/PNG, ≤2 MB.\nEnables `identity.image`, which compares the photo against the MPS face\non file for the supplied name + ID. Requires `name` and `idNumber`.\n"},"mobile":{"type":"string","description":"11-digit mainland China mobile number. **No country code, no `+86`,\nno spaces.** First two digits must be `13`-`19`.\n\nEnables: mobile lookups, mobile-cross identity checks, fraud screening,\nbank `four-factor`. Mobile alone is enough to run mobile/risk lookups\nwithout any identity fields.\n","pattern":"^1[3-9][0-9]{9}$"},"bankCardNumber":{"type":"string","description":"Bank card number — debit or credit. Digits only, no spaces. Enables\n`bank.two-factor` (with `name`), `bank.three-factor` (also with `idNumber`),\nor `bank.four-factor` (also with `mobile`).\n"},"addressesToVerify":{"type":"array","description":"Addresses to verify against the mobile's recorded location patterns.\nEach entry asks the upstream to compute the distance segment between\nthe supplied `address` and the mobile's most-active area for the\nselected `type`. Requires `mobile`.\n\nEach entry produces one `mobile.address-verify[N]` sub-check, where\n`N` is the array index. Results appear in the response under\n`mobile.addressVerifications[]` in the same order.\n\nUp to ~10 entries per request — each is a separate upstream call.\n","items":{"type":"object","required":["type","city","address"],"properties":{"type":{"type":"string","enum":["common","work","residential"],"description":"Which of the mobile's recorded locations to compare against:\n- `common` — area with overall highest mobile activity\n- `work` — most active area during 07:00-19:00 weekdays\n- `residential` — most active area during 21:00-07:00\n"},"city":{"type":"string","description":"City the address is located in (Chinese characters)."},"address":{"type":"string","description":"Street-level address (Chinese characters)."}}}},"run":{"type":"array","description":"Restrict the request to a specific set of products from the KYC\nMainland China catalogue. Product numbers are strings (e.g. `\"1\"`,\n`\"8.3\"`). When omitted or empty, every eligible sub-check runs\n(smart-selection rules apply). When supplied, only the listed\nproducts fire — and each runs independently, bypassing the default\nsupersession rules between products `1`/`3`, `11`/`12`, and the\nbank variants. Selecting multiple bank products runs each one and\nreports it in its own `bank2f` / `bank3f` / `bank4f` field.\n\nSupported values: `\"1\", \"2\", \"3\", \"4\", \"8.1\", \"8.2.1\", \"8.3\", \"11\",\n\"12\", \"15\", \"17\", \"24\", \"25\", \"27\"`. See the *Selecting which\nproducts to run* section above for the product-number → sub-check\nmapping.\n\nAny other value returns a `400` with `requestId` and a message\ndistinguishing **unimplemented** (catalogued but no upstream yet —\n`5, 6, 7, 8.2.2, 9.1, 9.2.1, 9.2.2, 9.3, 10, 13, 14, 16, 18–23, 26,\n28–35`) from **unknown** (outside the catalogue entirely).\n","items":{"type":"string"}},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://.+","description":"HTTPS URL to receive a webhook POST when the report is ready.\nWhen provided, the completed report (same payload as a `200` response from `/kyc/cn/poll`)\nis delivered to this URL.\nPolling remains available as a fallback.\n"},"callbackHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the webhook request.\nUse this to pass authentication or any other headers your endpoint requires\n(e.g. `{\"Authorization\": \"Bearer <token>\", \"X-Api-Key\": \"...\"}`).\n"}}}}}},"responses":{"200":{"description":"KYC verification request initiated. Use the returned token with `/kyc/cn/poll` to fetch the result.","content":{"application/json":{"schema":{"type":"object","required":["token","requestId"],"properties":{"token":{"type":"string","description":"JWT token encoding the request — pass it to `/kyc/cn/poll` until a `200` response\nis returned (typically within 10-30 seconds for a full KYC fan-out).\n"},"requestId":{"type":"string","description":"Stable identifier for this request. Returned on both `200` and `400`\nresponses for tracing/support. Prefixed `KYC_` followed by 12\nrandom characters.\n"}}}}}},"400":{"description":"Returned in two cases:\n- No sub-checks were eligible with the provided fields (e.g. supplying only\n  `facePhoto` without `name` and `idNumber`, or an empty request body).\n- `run` contains a product number that is not in the supported set\n  (`1, 2, 3, 4, 8, 11, 12, 15, 17, 24, 25, 27`).\n\nThe body always contains `{ \"message\": \"...\", \"requestId\": \"KYC_...\" }` —\nthe `requestId` is logged in the tracker so support can correlate the\nrejection with the originating call.\n","content":{"application/json":{"schema":{"type":"object","required":["message","requestId"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"502":{"description":"Internal failure invoking the upstream verification service before any sub-check\ncould run. Per-check failures during fan-out do **not** produce a 502 — they\nappear in `summary.errored` or `summary.unavailable` inside a successful 200 response.\n"}}}}}}
```

## KYC China verification - Poll

> Check the status of a KYC verification request initiated via\
> \[\`POST /kyc/cn/request\`]\(#tag/KYC-China/operation/kycCnRequest).\
> Returns \`202\` while the verification is still running, and \`200\` with\
> the full result when complete.\
> \
> Verification typically completes within 10-30 seconds depending on the\
> number of sub-checks and PDF rendering. Poll every 2-3 seconds.\
> \
> See the \[\`/kyc/cn/request\`]\(#tag/KYC-China/operation/kycCnRequest) documentation\
> for the response shape semantics (sub-check eligibility, summary buckets,\
> category-by-category interpretation).<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC China","description":"KYC verification for mainland China citizens — identity, mobile, risk, and bank checks\nagainst Chinese government, telecom carrier, and banking records.\n\n## Single endpoint, smart fan-out\n\nYou send one request to [`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest)\nwith whatever fields you have, then either receive the result via a webhook\n(pass `callbackUrl` in the request) or poll\n[`POST /kyc/cn/poll`](#tag/KYC-China/operation/kycCnPoll) until the result is ready. The service inspects the request, picks the strongest\nverification variant on each axis (e.g. four-factor instead of two-factor when ID dates\nare present), and runs every eligible sub-check in parallel against the upstream sources.\n\nThe merged response tells you, per category, whether the person matched, plus an\nexecution `summary` so you can tell at a glance which checks ran, which matched, which\ncame back empty, and which errored.\n\n## Products\n\nEach check has a **product number**. Pass these in `run` on\n[`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest) to control exactly which\nchecks fire — and what you pay for. Omit `run` to fan out to every product whose inputs\nare present.\n\n| Product | Check | Inputs it needs |\n|---|---|---|\n| `1` | Identity — name + ID | `name`, `idNumber` |\n| `2` | Identity — face match | `name`, `idNumber`, `facePhoto` |\n| `3` | Identity — name + ID + validity dates | `name`, `idNumber`, `idIssueDate`, `idExpiryDate` |\n| `4` | Identity — validity dates + face match | `name`, `idNumber`, `idIssueDate`, `idExpiryDate`, `facePhoto` |\n| `8.1` | Bank — 2-factor | `name`, `bankCardNumber` |\n| `8.2.1` | Bank — 3-factor | `name`, `idNumber`, `bankCardNumber` |\n| `8.3` | Bank — 4-factor | `name`, `idNumber`, `bankCardNumber`, `mobile` |\n| `11` | Mobile registered to name / ID | `mobile` + `name` and/or `idNumber` |\n| `12` | Mobile + name + ID (3-factor) | `name`, `idNumber`, `mobile` |\n| `15` | Mobile attribution + location | `mobile` |\n| `17` | Address-to-mobile association | `mobile`, `addressesToVerify[]` |\n| `24` | Risk — fraud / gambling blacklist | `mobile` or `idNumber` |\n| `25` | Litigation records | `name`, `idNumber` |\n| `27` | Risk — criminal / police record | `name`, `idNumber` |\n\nThe detailed sub-check eligibility (which upstream call each product maps to, and the\nsmart-selection rules) lives under\n[`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest).\n\n## Data sources & residency\n\nAll upstream calls go through a Beijing-based proxy and query official sources:\nChinese government (identity & criminal), telecom carriers (mobile & location),\nUnionPay member banks (bank verification), and the national anti-fraud blacklist (risk).\nNo personal data is stored by Fill Easy after the response is returned.\n\n## Cost & rate limits\n\nEach sub-check is a separate upstream call; see the `summary` bucket table under\n`POST /kyc/cn/request` for which outcomes are billed. A request with `name`, `idNumber`,\n`mobile`, and `bankCardNumber` fans out to **9 calls** in parallel (worst case without\n`addressesToVerify`). Each entry in `addressesToVerify` adds one further call. To narrow\nwhat runs, simply omit the inputs you don't want to verify — every sub-check whose\nrequired fields are present always fires.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"LitigationStats":{"type":"object","description":"Aggregated counts and amounts for a litigation category (or all categories,\nwhen used as the `overall` block). Counts are case counts; amounts are in CNY.\n","required":["total"],"properties":{"total":{"type":"integer","description":"Total cases."},"open":{"type":"integer","description":"Open (unresolved) cases."},"closed":{"type":"integer","description":"Closed cases."},"asPlaintiff":{"type":"integer","description":"Cases where the subject was the plaintiff."},"asDefendant":{"type":"integer","description":"Cases where the subject was the defendant."},"asThirdParty":{"type":"integer","description":"Cases where the subject was a third party."},"totalAmount":{"type":"number","description":"Total monetary amount involved (CNY)."},"openAmount":{"type":"number","description":"Amount tied to open cases (CNY)."},"closedAmount":{"type":"number","description":"Amount tied to closed cases (CNY)."},"causeDistribution":{"type":"string","description":"Distribution of case causes, formatted by upstream as `Cause(count), Cause(count)`."},"locationDistribution":{"type":"string","description":"Distribution by case location."},"yearDistribution":{"type":"string","description":"Distribution by filing year."},"closingMethodDistribution":{"type":"string","description":"Distribution by closing method (e.g. judgment, mediation)."}}},"LitigationCategory":{"type":"object","required":["cases","stats"],"properties":{"cases":{"type":"array","items":{"$ref":"#/components/schemas/LitigationCase"}},"stats":{"$ref":"#/components/schemas/LitigationStats"}}},"LitigationCase":{"type":"object","description":"A single litigation record. Always includes the structural fields (case number,\ncourt, stage, parties). Optional fields are present only when the upstream service\nreturns them — criminal-specific fields (`charges`, `crimeAmount`) are absent for\nnon-criminal cases.\n","required":["caseType","caseNumber","court","courtLevel","stage","procedure","location","cause","partyRole","parties"],"properties":{"caseType":{"type":"string","description":"Case type label (e.g. `Civil First Instance`, `Criminal First Instance`, `Property Preservation Execution`)."},"caseNumber":{"type":"string"},"court":{"type":"string"},"courtLevel":{"type":"string","description":"Court level (Basic Court / Intermediate / High / Supreme)."},"stage":{"type":"string","description":"Case progress stage as returned by upstream (e.g. `Open`, `Closed`)."},"procedure":{"type":"string","description":"Trial procedure (First Instance, Second Instance, Retrial, Execution)."},"location":{"type":"string"},"cause":{"type":"string"},"partyRole":{"type":"string","description":"Subject's role in this case."},"parties":{"type":"array","items":{"$ref":"#/components/schemas/LitigationParty"}},"filingDate":{"type":"string","format":"date"},"closingDate":{"type":"string","format":"date"},"causeDetail":{"type":"string","description":"Full cause taxonomy path (comma-delimited from broad to specific)."},"closingMethod":{"type":"string","description":"How the case was closed (Judgment, Mediation, Withdrawal, etc.)."},"amount":{"type":"number","description":"Closing subject amount (CNY)."},"victoryEstimate":{"type":"string","description":"Upstream estimate of the subject's outcome (Won / Lost / Partial / Unknown)."},"charges":{"type":"string","description":"Criminal charges (criminal cases only)."},"chargesDetail":{"type":"string","description":"Full charge taxonomy path (criminal cases only)."},"crimeAmount":{"type":"number","description":"Crime amount (criminal cases only, CNY)."}}},"LitigationParty":{"type":"object","required":["name","role","type"],"properties":{"name":{"type":"string"},"role":{"type":"string","description":"Litigation status (e.g. Plaintiff, Defendant, Person Subject to Application, Third Party)."},"type":{"type":"string","description":"Party type (e.g. Natural Person, Enterprise Organization)."}}}}},"paths":{"/kyc/cn/poll":{"post":{"tags":["KYC China"],"summary":"KYC China verification - Poll","description":"Check the status of a KYC verification request initiated via\n[`POST /kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest).\nReturns `202` while the verification is still running, and `200` with\nthe full result when complete.\n\nVerification typically completes within 10-30 seconds depending on the\nnumber of sub-checks and PDF rendering. Poll every 2-3 seconds.\n\nSee the [`/kyc/cn/request`](#tag/KYC-China/operation/kycCnRequest) documentation\nfor the response shape semantics (sub-check eligibility, summary buckets,\ncategory-by-category interpretation).\n","operationId":"kycCnPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token"}}}}}},"responses":{"200":{"description":"KYC China result. Categories are present only when at least one of their sub-checks ran.","content":{"application/json":{"schema":{"type":"object","required":["reportMetadata","summary","submitted","pdfUrl","pdfFileName"],"properties":{"reportMetadata":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["completed"]}}},"submitted":{"type":"object","description":"Masked echo of the inputs that were submitted, for audit and report\nrendering. Each field is present only if it was supplied in the\nrequest. Sensitive values are masked — the first two characters are\nkept and the rest replaced with asterisks of the same length.\n","properties":{"name":{"type":"string"},"idNumber":{"type":"string"},"idIssueDate":{"type":"string"},"idExpiryDate":{"type":"string"},"facePhoto":{"type":"string","description":"Literal `provided` when a face photo was supplied; otherwise omitted."},"mobile":{"type":"string"},"bankCardNumber":{"type":"string"},"addressesToVerify":{"type":"array","items":{"type":"object","required":["type","city","address"],"properties":{"type":{"type":"string","enum":["common","work","residential"]},"city":{"type":"string"},"address":{"type":"string"}}}}}},"pdfUrl":{"type":"string","format":"uri","description":"Presigned URL to download a PDF version of this report. Valid for 7 days.\nThe underlying object is deleted after 30 days by bucket lifecycle rule.\n"},"pdfFileName":{"type":"string","description":"Suggested filename for the PDF download."},"summary":{"type":"object","required":["ran","matched","unmatched","notFound","errored"],"properties":{"ran":{"type":"array","description":"Every sub-check that was attempted.","items":{"type":"string"}},"matched":{"type":"array","description":"Identity and bank checks that returned `match`.","items":{"type":"string"}},"unmatched":{"type":"array","description":"Identity and bank checks that returned `no match`.","items":{"type":"string"}},"notFound":{"type":"array","description":"Sub-checks where the upstream had no data on file.","items":{"type":"string"}},"errored":{"type":"array","description":"Sub-checks that could not be completed. Not billed on their own.","items":{"type":"object","required":["check","error"],"properties":{"check":{"type":"string"},"error":{"type":"string","description":"Short human-readable explanation. Internal diagnostics stay in server logs."}}}},"unavailable":{"type":"array","description":"Sub-checks that could not be attempted because the upstream\nwas unreachable or returned an unusable response. Not billed\non their own and not listed in `ran`. Absent when every\neligible sub-check was attempted.\n","items":{"type":"string"}}}},"identity":{"type":"array","description":"Present when at least one identity check ran. Each entry corresponds to one sub-check.","items":{"type":"object","required":["type","result","verification"],"properties":{"type":{"type":"string","enum":["two-factor","four-factor","image","name-mobile","id-mobile","three-factor"]},"result":{"type":"string","enum":["match","no match","not found"]},"verification":{"type":"string","description":"Human-readable description of what was verified."}}}},"mobile":{"type":"object","description":"Present when at least one mobile lookup returned data.","properties":{"carrier":{"type":"string"},"province":{"type":"string"},"city":{"type":"string"},"workLocation":{"type":"string","description":"Most active city during weekday work hours (07:00-19:00)."},"residentialLocation":{"type":"string","description":"Most active city during night hours (21:00-07:00)."},"addressVerifications":{"type":"array","description":"Per-entry results for each address supplied in\n`addressesToVerify[]`, in the same order as the input. The\noriginal `type`, `city`, and `address` are echoed back so\ncallers can correlate results to inputs without tracking the\nindex themselves.\n\nThe `distance` field is **present only when the upstream\nreturned a match** — its absence signals \"no data on file\"\n(the entry is also listed in `summary.notFound`). Errored\nentries are omitted from this array entirely and listed in\n`summary.errored`.\n","items":{"type":"object","required":["type","city","address"],"properties":{"type":{"type":"string","enum":["common","work","residential"]},"city":{"type":"string"},"address":{"type":"string"},"distance":{"type":"string","enum":["≤3km","≤5km","≤10km","≤20km","≤30km","≤50km",">50km"],"description":"Distance segment between the supplied address and the\nmobile's recorded location for the chosen `type`.\n"}}}}}},"risk":{"type":"object","description":"Present when at least one risk check ran.","properties":{"fraud":{"type":"array","items":{"type":"object","required":["type","level"],"properties":{"type":{"type":"string"},"level":{"type":"string","enum":["None","Low","Medium","High"]}}}},"criminal":{"type":"object","required":["isNormal","records"],"properties":{"isNormal":{"type":"boolean","nullable":true,"description":"`true` when no risk events are recorded; `false` when records exist;\n`null` when verification could not complete.\n"},"records":{"type":"object","additionalProperties":{"type":"boolean"},"description":"Map of human-readable record category to whether it applies."}}}}},"bank2f":{"type":"string","enum":["match","no match","not found"],"description":"Result of the 2-factor bank check (name + card, product `8.1`).\nPresent only when the 2FV variant ran.\n"},"bank3f":{"type":"string","enum":["match","no match","not found"],"description":"Result of the 3-factor bank check (name + card + ID, product `8.2.1`).\nPresent only when the 3FV variant ran.\n"},"bank4f":{"type":"string","enum":["match","no match","not found"],"description":"Result of the 4-factor bank check (name + card + ID + mobile, product\n`8.3`). Present only when the 4FV variant ran.\n"},"litigation":{"type":"object","description":"Judicial litigation records aggregated across civil, criminal,\nadministrative, preservation, execution, and bankruptcy case types.\nEach category is present only when at least one case exists. `overall`\nis the cross-category statistics block returned by the upstream service.\n","properties":{"overall":{"$ref":"#/components/schemas/LitigationStats"},"civil":{"$ref":"#/components/schemas/LitigationCategory"},"criminal":{"$ref":"#/components/schemas/LitigationCategory"},"administrative":{"$ref":"#/components/schemas/LitigationCategory"},"preservation":{"$ref":"#/components/schemas/LitigationCategory"},"execution":{"$ref":"#/components/schemas/LitigationCategory"},"bankruptcy":{"$ref":"#/components/schemas/LitigationCategory"}}}}}}}},"202":{"description":"KYC verification still processing — keep polling every 2-3 seconds.","content":{"application/json":{"schema":{"type":"object","required":["reportMetadata"],"properties":{"reportMetadata":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["processing"]}}}}}}}},"400":{"description":"Invalid or expired token."}}}}}}
```


# KYC Hong Kong

Hong Kong KYC checks, each completed in a single synchronous call: AML name screening against global watchlists, and lookups against Hong Kong's official public registers returning the structured register record together with a page print (PDF) of the register's own detail page.

## Single-name AML / sanctions / PEP screening

> Screens a single name against global \*\*sanctions\*\*, \*\*PEP\*\* (Politically Exposed Person),\
> and \*\*adverse-media\*\* watchlists (data sourced from Acuris Risk Intelligence) and returns\
> any matches in one synchronous call.\
> \
> Supply at least one name field — \`name\`, \`nameEnglish\`, \`nameChinese\`, or \`nameOtherLang\`.\
> Optional \`dob\`, \`gender\`, \`country\`, and \`entityType\` narrow the screen.\
> \
> The response \`summary\` counts matches by resolution status, and \`matches\` lists each\
> watchlist hit with its strength (\`0\`–\`1\`), the categories it appears on (\`PEP\`, \`Sanction\`,\
> …), and identifying details. A returned \`caseId\` references the screening case for future\
> retrieval.\
> \
> Set \`full: true\` to also include each match's \*\*complete profile\*\* (addresses, ID & passport\
> numbers, sanction regime & measures, PEP positions, linked persons, evidence sources, photo,\
> …) under \`matches\[].profile\`. This is heavier — it makes one extra upstream call per match —\
> so it defaults to \`false\`, returning only the headline match data.\
> \
> Every screening also produces a \*\*PDF report\*\* of the result, returned as a presigned\
> download link in \`pdfUrl\` (valid for 7 days; the file is retained for 30 days). Download\
> it promptly — there is no endpoint to re-fetch the link later. With \`full: true\` the\
> report also renders each match's complete profile — sanctions, PEP positions, linked\
> persons, and evidence sources. If report generation fails, the screening still succeeds\
> and \`pdfUrl\` is omitted from the response.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC Hong Kong","description":"Hong Kong KYC checks, each completed in a single synchronous call: AML name screening\nagainst global watchlists, and lookups against Hong Kong's official public registers\nreturning the structured register record together with a page print (PDF) of the\nregister's own detail page.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}}},"paths":{"/kyc/hk/screening":{"post":{"tags":["KYC Hong Kong"],"summary":"Single-name AML / sanctions / PEP screening","description":"Screens a single name against global **sanctions**, **PEP** (Politically Exposed Person),\nand **adverse-media** watchlists (data sourced from Acuris Risk Intelligence) and returns\nany matches in one synchronous call.\n\nSupply at least one name field — `name`, `nameEnglish`, `nameChinese`, or `nameOtherLang`.\nOptional `dob`, `gender`, `country`, and `entityType` narrow the screen.\n\nThe response `summary` counts matches by resolution status, and `matches` lists each\nwatchlist hit with its strength (`0`–`1`), the categories it appears on (`PEP`, `Sanction`,\n…), and identifying details. A returned `caseId` references the screening case for future\nretrieval.\n\nSet `full: true` to also include each match's **complete profile** (addresses, ID & passport\nnumbers, sanction regime & measures, PEP positions, linked persons, evidence sources, photo,\n…) under `matches[].profile`. This is heavier — it makes one extra upstream call per match —\nso it defaults to `false`, returning only the headline match data.\n\nEvery screening also produces a **PDF report** of the result, returned as a presigned\ndownload link in `pdfUrl` (valid for 7 days; the file is retained for 30 days). Download\nit promptly — there is no endpoint to re-fetch the link later. With `full: true` the\nreport also renders each match's complete profile — sanctions, PEP positions, linked\npersons, and evidence sources. If report generation fails, the screening still succeeds\nand `pdfUrl` is omitted from the response.\n","operationId":"kycHkScreening","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"At least one of `name`, `nameEnglish`, `nameChinese`, or `nameOtherLang` is required.","properties":{"name":{"type":"string","description":"Name to screen. Use this when you have a single name and don't need to disambiguate the script."},"nameEnglish":{"type":"string","description":"Name in English / Latin script."},"nameChinese":{"type":"string","description":"Name in Chinese script."},"nameOtherLang":{"type":"string","description":"Name in a language other than English or Chinese."},"entityType":{"type":"string","enum":["Individual","Entity","Aircraft","Vessel","Country"],"description":"Type of entity being screened. Optional."},"dob":{"type":"string","description":"Date of birth in `YYYY-MM-DD` format. Optional."},"gender":{"type":"string","enum":["male","female"],"description":"Optional."},"country":{"type":"string","description":"Nationality, citizenship, or residency — name or code of the country/region. Optional."},"externalRefId":{"type":"string","description":"Your own reference id for this screen, echoed back in the response. Optional."},"full":{"type":"boolean","description":"When `true`, fetch each match's complete profile and include it as\n`matches[].profile` and as a detailed section in the PDF report. Adds one\nupstream call per match. Defaults to `false` (headline match data only).\n"}}}}}},"responses":{"200":{"description":"Screening completed. Returns the screening case id and any watchlist matches.","content":{"application/json":{"schema":{"type":"object","required":["requestId","caseId","name","summary","matches"],"properties":{"requestId":{"type":"string","description":"Unique id for this screening request, for tracking and billing reconciliation."},"caseId":{"type":"string","description":"Identifier of the screening case, for future retrieval."},"name":{"type":"string","description":"The name that was screened."},"externalRefId":{"type":"string","description":"The reference id supplied in the request, if any."},"summary":{"type":"object","description":"Count of matches by resolution status.","required":["total","positive","possible","false","unspecified","unresolved"],"properties":{"total":{"type":"number","description":"Total number of matches found."},"positive":{"type":"number","description":"Matches resolved as positive (a true hit)."},"possible":{"type":"number","description":"Matches resolved as possible."},"false":{"type":"number","description":"Matches resolved as false positives."},"unspecified":{"type":"number","description":"Matches resolved without a specified outcome."},"unresolved":{"type":"number","description":"Matches not yet reviewed."}}},"matches":{"type":"array","items":{"type":"object","required":["matchId","matchedName","name","types"],"properties":{"matchId":{"type":"string","description":"Identifier of the matched watchlist record."},"matchedName":{"type":"string","description":"The screened name as matched."},"name":{"type":"string","description":"Primary name of the watchlist record."},"nameType":{"type":"string","description":"How `name` relates to the record (e.g. `Primary`, `AKA`)."},"nameOriginalScript":{"type":"string","description":"The record's name in its original script, if available."},"alias":{"type":"string","description":"Comma-separated known aliases of the record."},"types":{"type":"array","items":{"type":"string"},"description":"Watchlist categories the record appears on (e.g. `PEP`, `Sanction`)."},"matchStrength":{"type":"number","description":"Match confidence from 0 to 1."},"matchType":{"type":"string","description":"How the match was made (e.g. `Native Name Match`)."},"dob":{"type":"string","description":"Date(s) of birth on the record."},"gender":{"type":"string","description":"Gender on the record."},"countryOfResidence":{"type":"string","description":"Country of residence on the record."},"profile":{"type":"object","additionalProperties":true,"description":"The match's complete upstream profile — addresses, ID/passport numbers,\nsanction regime & measures, PEP positions, linked persons, evidence\nsources, photo, and more. Present only when `full: true` was requested.\n"}}}},"pdfUrl":{"type":"string","description":"Presigned download link for the PDF report of this screening. Valid for\n7 days; the file itself is retained for 30 days. Omitted if report\ngeneration failed — the screening result is unaffected.\n"},"pdfFileName":{"type":"string","description":"Suggested file name for the PDF report."}}}}}},"400":{"description":"Bad Request — no name field supplied."},"503":{"description":"Screening provider unavailable or rejected the request."}}}}}}
```

## SFC licensed person register lookup

> Looks up one record in the SFC's \*\*Public Register of Licensed Persons and Registered\
> Institutions\*\* and synchronously returns the structured record — covering every tab of\
> the register's detail pages — together with a page print (PDF) of the first tab\
> (licence details).\
> \
> Identify the person by name, or by \`ceRef\` (Central Entity number). The query must\
> resolve to exactly one register record — a query matching no record returns \`404\`, a\
> query matching more than one returns \`422\` and must be refined (the CE number is always\
> unambiguous).\
> \
> The register matches names case-insensitively and as a \*\*substring\*\*, so short queries\
> resolve to many records — \`Wong\` alone matches over 5,000. Individuals are held\
> surname-first, with the surname capitalised and a comma before any Western given name\
> (\`WONG Chung Sing, Xavier\`); the comma may be omitted from a query. Because the match is\
> by substring, a name that is complete and correct can still be contained in a longer one;\
> where exactly one of the matched records carries the queried name in full, that record is\
> returned instead of a \`422\`. Records genuinely sharing a name — several licensees are\
> registered as \`LEE Ka Ming\` — remain a \`422\`, listing the candidates and their CE numbers.\
> \
> A \`ceRef\` lookup additionally reaches firms — licensed corporations and registered\
> institutions — which the name search does not cover.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC Hong Kong","description":"Hong Kong KYC checks, each completed in a single synchronous call: AML name screening\nagainst global watchlists, and lookups against Hong Kong's official public registers\nreturning the structured register record together with a page print (PDF) of the\nregister's own detail page.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"KycHkRegisterResult":{"type":"object","description":"Common envelope of all `/kyc/hk` register lookups. Each endpoint adds its register-specific `record`.","required":["requestId"],"properties":{"requestId":{"type":"string","description":"Unique id for this lookup, for tracking and billing reconciliation."},"externalRefId":{"type":"string","description":"Your own reference id, echoed back from the request."},"pagePrints":{"type":"array","description":"PDF page prints of the register's own detail pages for this record, as displayed at\nretrieval time. One entry per attempted print — a print that failed to render still\nappears, with `status: failed`. The structured record is unaffected either way.\n","items":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Per-print status:\n- \"ready\": the print is available, `url` and `fileName` are populated\n- \"failed\": the print could not be rendered in time, no link is issued\n","enum":["ready","failed"]},"url":{"type":"string","format":"uri","description":"Presigned download link (only when status is \"ready\"). Valid for 7 days; the\nfile is retained for 30 days.\n"},"fileName":{"type":"string","description":"Suggested file name (only when status is \"ready\")."}}}}}},"SfcEntity":{"type":"object","description":"Reference to another SFC register entry (a principal or a registered institution).","required":["name"],"properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number."},"name":{"type":"string"},"nameChinese":{"type":"string"}}},"SfcPerson":{"type":"object","description":"Individual attached to a firm on the SFC register.","required":["name"],"properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number."},"name":{"type":"string"},"nameChinese":{"type":"string"},"activities":{"type":"array","items":{"type":"string"},"description":"Regulated activities the attachment covers."}}},"KycHkRegisterError":{"type":"object","description":"Error body of all `/kyc/hk` register lookups.","required":["message","requestId"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"}}},"KycHkAmbiguousMatch":{"type":"object","description":"Body of the `422` every `/kyc/hk` register lookup returns when the query matched more than one record. Each endpoint adds its register-specific `candidates`.\n","required":["message","requestId","total"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"},"total":{"type":"number","description":"How many records matched."}}}}},"paths":{"/kyc/hk/sfc":{"post":{"tags":["KYC Hong Kong"],"summary":"SFC licensed person register lookup","description":"Looks up one record in the SFC's **Public Register of Licensed Persons and Registered\nInstitutions** and synchronously returns the structured record — covering every tab of\nthe register's detail pages — together with a page print (PDF) of the first tab\n(licence details).\n\nIdentify the person by name, or by `ceRef` (Central Entity number). The query must\nresolve to exactly one register record — a query matching no record returns `404`, a\nquery matching more than one returns `422` and must be refined (the CE number is always\nunambiguous).\n\nThe register matches names case-insensitively and as a **substring**, so short queries\nresolve to many records — `Wong` alone matches over 5,000. Individuals are held\nsurname-first, with the surname capitalised and a comma before any Western given name\n(`WONG Chung Sing, Xavier`); the comma may be omitted from a query. Because the match is\nby substring, a name that is complete and correct can still be contained in a longer one;\nwhere exactly one of the matched records carries the queried name in full, that record is\nreturned instead of a `422`. Records genuinely sharing a name — several licensees are\nregistered as `LEE Ka Ming` — remain a `422`, listing the candidates and their CE numbers.\n\nA `ceRef` lookup additionally reaches firms — licensed corporations and registered\ninstitutions — which the name search does not cover.\n","operationId":"kycHkSfc","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"At least one of `ceRef`, `name`, or `nameChinese` is required.","properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number. Unambiguous — preferred over name lookups."},"name":{"type":"string","description":"Name in English as it appears on the register — surname first, with the surname capitalised and a comma before any Western given name. Matched case-insensitively as a substring; the comma is optional.\n"},"nameChinese":{"type":"string","description":"Name in Chinese as it appears on the register. Matched as a substring."},"externalRefId":{"type":"string","description":"Your own reference id, echoed back in the response."}}}}}},"responses":{"200":{"description":"Exactly one register record matched. Returns the structured record and its page print.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkRegisterResult"},{"type":"object","required":["record"],"properties":{"record":{"type":"object","description":"The full register record. Which tab fields are present depends on the entity kind — individuals carry `licenceDetails`, `accreditedTo` and `executiveOfficerOf`; firms carry the officer/representative lists, `emails` and `websites`.\n","required":["ceRef","name","entityType","status"],"properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number."},"name":{"type":"string","description":"Name in English."},"nameChinese":{"type":"string","description":"Name in Chinese."},"entityType":{"type":"string","enum":["Individual","Executive Officer","Licensed Corporation","Registered Institution"],"description":"Kind of register entry. `Individual` also covers individuals who additionally serve as executive officer of a registered institution; `Executive Officer` alone marks executive officers holding no SFC licence of their own.\n"},"status":{"type":"string","enum":["Active","Inactive"],"description":"Whether the register shows any currently active licence or registration."},"regulatedActivities":{"type":"array","items":{"type":"string"},"description":"Regulated activities the current SFO licence / registration covers."},"amloRegulatedActivities":{"type":"array","items":{"type":"string"},"description":"Activities covered under the AMLO regime (virtual assets / stablecoins), if any."},"licenceDetails":{"type":"array","description":"Rows of the register's first tab. Individuals get one row per accreditation (principal × regulated activity), firms one row per regulated activity.\n","items":{"type":"object","required":["activity"],"properties":{"regime":{"type":"string","enum":["SFO","AMLO"]},"activityType":{"type":"integer","description":"Regulated activity type number."},"activity":{"type":"string"},"activityChinese":{"type":"string"},"role":{"type":"string","enum":["Representative","Responsible Officer"],"description":"Capacity in which an individual is accredited."},"principal":{"$ref":"#/components/schemas/SfcEntity"},"accreditedSince":{"type":"string","format":"date","description":"Date of accreditation to the principal (individuals)."},"licensedSince":{"type":"string","format":"date","description":"Date the activity was first licensed (individuals)."},"effectiveDate":{"type":"string","format":"date","description":"Effective date of the activity (firms)."},"endDate":{"type":"string","format":"date"},"statusCode":{"type":"string","description":"Raw register status code — `A` current, `S` suspended, `U` suspended approval of responsible officer.\n"},"statusNote":{"type":"string","description":"Register annotation, e.g. cessation-of-business remarks."}}}},"accreditedTo":{"type":"array","description":"Principals a licensed individual is accredited to.","items":{"$ref":"#/components/schemas/SfcEntity"}},"executiveOfficerOf":{"type":"array","description":"Registered institutions the person serves as executive officer for, one row per regulated activity.\n","items":{"type":"object","required":["registeredInstitution","activity"],"properties":{"registeredInstitution":{"$ref":"#/components/schemas/SfcEntity"},"activityType":{"type":"integer"},"activity":{"type":"string"},"activityChinese":{"type":"string"},"effectiveDate":{"type":"string","format":"date"},"statusCode":{"type":"string"}}}},"addresses":{"type":"array","description":"Business addresses; for individuals one entry per principal.","items":{"type":"object","required":["address"],"properties":{"address":{"type":"string"},"addressChinese":{"type":"string"},"principal":{"$ref":"#/components/schemas/SfcEntity"}}}},"emails":{"type":"array","items":{"type":"string"}},"websites":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","description":"Licensing / registration conditions in force.","items":{"type":"object","required":["condition"],"properties":{"regime":{"type":"string","enum":["SFO","AMLO"]},"condition":{"type":"string"},"conditionChinese":{"type":"string"},"effectiveDate":{"type":"string","format":"date"}}}},"responsibleOfficers":{"type":"array","description":"Responsible officers of a licensed corporation.","items":{"$ref":"#/components/schemas/SfcPerson"}},"representatives":{"type":"array","description":"Licensed representatives accredited to a licensed corporation.","items":{"$ref":"#/components/schemas/SfcPerson"}},"executiveOfficers":{"type":"array","description":"Executive officers of a registered institution.","items":{"$ref":"#/components/schemas/SfcPerson"}},"complaintsOfficers":{"type":"array","items":{"type":"object","properties":{"telephone":{"type":"string"},"fax":{"type":"string"},"email":{"type":"string"},"address":{"type":"string"},"addressChinese":{"type":"string"}}}},"publicDisciplinaryActions":{"type":"array","description":"Public disciplinary actions in the past five years, if any.","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"action":{"type":"string"},"actionChinese":{"type":"string"},"documentUrlEnglish":{"type":"string","description":"Register link to the action's press release / statement."},"documentUrlChinese":{"type":"string"}}}},"licenceRecord":{"type":"array","description":"Full licence / registration history, including past accreditations.","items":{"type":"object","required":["activity"],"properties":{"regime":{"type":"string","enum":["SFO","AMLO"]},"role":{"type":"string","enum":["Representative","Responsible Officer"]},"principal":{"$ref":"#/components/schemas/SfcEntity"},"activityType":{"type":"integer"},"activity":{"type":"string"},"activityChinese":{"type":"string"},"statusCode":{"type":"string"},"effectivePeriods":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}}}}}}}}}}]}}}},"400":{"description":"Bad Request — no identifying field supplied."},"404":{"description":"No register record matched the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycHkRegisterError"}}}},"422":{"description":"More than one register record matched — refine the query, ideally with `ceRef`.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkAmbiguousMatch"},{"type":"object","required":["candidates"],"properties":{"candidates":{"type":"array","description":"The first matching records (up to 10), to help refine the query.","items":{"type":"object","required":["ceRef","name"],"properties":{"ceRef":{"type":"string"},"name":{"type":"string"},"nameChinese":{"type":"string"},"entityType":{"type":"string","enum":["Individual","Executive Officer","Licensed Corporation","Registered Institution"]}}}}}}]}}}},"503":{"description":"The register is unavailable or the retrieval failed."}}}}}}
```

## MPFA Subsidiary Intermediary register lookup

> Looks up a person or licensed long-term insurance agency on the \*\*MPFA Public Register of\
> Subsidiary Intermediaries\*\* (mpfa.org.hk) and returns the register record in one synchronous\
> call — registration status, frontline regulator(s), attached principal intermediaries,\
> conditions imposed, and public disciplinary orders of the last 5 years.\
> \
> Supply exactly one identifier — they are used in order of precedence:\
> 1\. \`registrationNo\` — unambiguous, preferred. Numeric for persons (\`152269\`),\
> &#x20;  \`A\`-prefixed for agencies (\`A000040\`).\
> 2\. \`name\` — English name as it appears on the register. For a person, surname first\
> &#x20;  (e.g. \`Chan Tai Man\`); the register holds names in upper case but matches\
> &#x20;  case-insensitively, as a substring.\
> 3\. \`nameChinese\` — Chinese name, in either Simplified or Traditional characters. Matched\
> &#x20;  as a substring, but a whole-name match takes precedence over the longer names it\
> &#x20;  appears in.\
> &#x20;  Whitespace is ignored; an exact match wins, and a substring match is used only when\
> &#x20;  nothing matches exactly.\
> \
> \`registrationNo\` reaches every kind of record. Name lookups reach people only, so an\
> agency must be looked up by its registration number.\
> \
> Because names are matched by substring, a name that is complete and correct can still be\
> contained in a longer one; where exactly one of the matched records carries the queried\
> name in full, that record is returned instead of a \`422\`. Records genuinely sharing a\
> name — a dozen people are registered as \`CHAN WAI MAN\` — remain a \`422\`, listing the\
> candidates and their registration numbers.\
> \
> The lookup only succeeds when it narrows to \*\*exactly one\*\* record — \`404\` when nothing\
> matched, \`422\` with a candidate list when several did.\
> \
> Every successful lookup also produces a \*\*page print PDF\*\* of the official register detail\
> page, returned in \`pagePrints\` as a presigned download link (valid for 7 days; the file\
> is retained for 30 days). If the page print fails to render, the lookup still succeeds and\
> the entry comes back with \`status: failed\`.\
> \
> The register is updated by the MPFA every working day; \`registerRevisionDate\` states the\
> register's own last-revision date at the time of the lookup.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC Hong Kong","description":"Hong Kong KYC checks, each completed in a single synchronous call: AML name screening\nagainst global watchlists, and lookups against Hong Kong's official public registers\nreturning the structured register record together with a page print (PDF) of the\nregister's own detail page.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"KycHkRegisterResult":{"type":"object","description":"Common envelope of all `/kyc/hk` register lookups. Each endpoint adds its register-specific `record`.","required":["requestId"],"properties":{"requestId":{"type":"string","description":"Unique id for this lookup, for tracking and billing reconciliation."},"externalRefId":{"type":"string","description":"Your own reference id, echoed back from the request."},"pagePrints":{"type":"array","description":"PDF page prints of the register's own detail pages for this record, as displayed at\nretrieval time. One entry per attempted print — a print that failed to render still\nappears, with `status: failed`. The structured record is unaffected either way.\n","items":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Per-print status:\n- \"ready\": the print is available, `url` and `fileName` are populated\n- \"failed\": the print could not be rendered in time, no link is issued\n","enum":["ready","failed"]},"url":{"type":"string","format":"uri","description":"Presigned download link (only when status is \"ready\"). Valid for 7 days; the\nfile is retained for 30 days.\n"},"fileName":{"type":"string","description":"Suggested file name (only when status is \"ready\")."}}}}}},"KycHkRegisterError":{"type":"object","description":"Error body of all `/kyc/hk` register lookups.","required":["message","requestId"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"}}},"KycHkAmbiguousMatch":{"type":"object","description":"Body of the `422` every `/kyc/hk` register lookup returns when the query matched more than one record. Each endpoint adds its register-specific `candidates`.\n","required":["message","requestId","total"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"},"total":{"type":"number","description":"How many records matched."}}}}},"paths":{"/kyc/hk/mpfa":{"post":{"tags":["KYC Hong Kong"],"summary":"MPFA Subsidiary Intermediary register lookup","description":"Looks up a person or licensed long-term insurance agency on the **MPFA Public Register of\nSubsidiary Intermediaries** (mpfa.org.hk) and returns the register record in one synchronous\ncall — registration status, frontline regulator(s), attached principal intermediaries,\nconditions imposed, and public disciplinary orders of the last 5 years.\n\nSupply exactly one identifier — they are used in order of precedence:\n1. `registrationNo` — unambiguous, preferred. Numeric for persons (`152269`),\n   `A`-prefixed for agencies (`A000040`).\n2. `name` — English name as it appears on the register. For a person, surname first\n   (e.g. `Chan Tai Man`); the register holds names in upper case but matches\n   case-insensitively, as a substring.\n3. `nameChinese` — Chinese name, in either Simplified or Traditional characters. Matched\n   as a substring, but a whole-name match takes precedence over the longer names it\n   appears in.\n   Whitespace is ignored; an exact match wins, and a substring match is used only when\n   nothing matches exactly.\n\n`registrationNo` reaches every kind of record. Name lookups reach people only, so an\nagency must be looked up by its registration number.\n\nBecause names are matched by substring, a name that is complete and correct can still be\ncontained in a longer one; where exactly one of the matched records carries the queried\nname in full, that record is returned instead of a `422`. Records genuinely sharing a\nname — a dozen people are registered as `CHAN WAI MAN` — remain a `422`, listing the\ncandidates and their registration numbers.\n\nThe lookup only succeeds when it narrows to **exactly one** record — `404` when nothing\nmatched, `422` with a candidate list when several did.\n\nEvery successful lookup also produces a **page print PDF** of the official register detail\npage, returned in `pagePrints` as a presigned download link (valid for 7 days; the file\nis retained for 30 days). If the page print fails to render, the lookup still succeeds and\nthe entry comes back with `status: failed`.\n\nThe register is updated by the MPFA every working day; `registerRevisionDate` states the\nregister's own last-revision date at the time of the lookup.\n","operationId":"kycHkMpfa","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"At least one of `registrationNo`, `name`, or `nameChinese` is required.","properties":{"registrationNo":{"type":"string","description":"MPF registration number. Unambiguous — preferred over name lookups."},"name":{"type":"string","description":"English name as appearing on the register, surname first. The register holds names in upper case; matched case-insensitively as a substring. Finds people only — an agency must be looked up by its registration number.\n"},"nameChinese":{"type":"string","description":"Chinese name as appearing on the register. Whitespace is ignored and an exact match is preferred over a substring match. Finds people only — an agency must be looked up by its registration number.\n"},"externalRefId":{"type":"string","description":"Your own reference id, echoed back in the response."}}}}}},"responses":{"200":{"description":"Exactly one register record matched.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkRegisterResult"},{"type":"object","required":["record"],"properties":{"registerRevisionDate":{"type":"string","format":"date","description":"The register's own \"Last Review / Revision Date\" at the time of the lookup."},"record":{"type":"object","required":["registrationNo","name","entityType","status","principalIntermediaries"],"properties":{"registrationNo":{"type":"string","description":"MPF registration number."},"name":{"type":"string","description":"English name as on the register."},"nameChinese":{"type":"string","description":"Chinese name as on the register, if any."},"entityType":{"type":"string","enum":["Individual","Agency"],"description":"Whether the subsidiary intermediary is a person or a licensed long-term insurance agency."},"status":{"type":"string","description":"Registration status (e.g. `Active`)."},"statusNote":{"type":"string","description":"Additional status annotation shown on the register, if any."},"frontlineRegulators":{"type":"array","items":{"type":"string"},"description":"Frontline regulator(s) (e.g. `Insurance Authority`)."},"principalIntermediaries":{"type":"array","description":"Principal intermediaries the subsidiary intermediary is attached to.","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"English name of the principal intermediary."},"nameChinese":{"type":"string","description":"Chinese name of the principal intermediary, if shown."},"registrationNo":{"type":"string","description":"MPF registration number of the principal intermediary, cross-referenced\nfrom the MPFA Principal Intermediary register. Omitted when the\ncross-reference is not unambiguous.\n"},"address":{"type":"string","description":"Address of the principal place of business."},"frontlineRegulator":{"type":"string"},"registrationStatus":{"type":"string"},"actingAsResponsibleOfficer":{"type":"string","description":"Whether this subsidiary intermediary acts as a responsible officer (`Yes` / `No`)."},"responsibleOfficerStatus":{"type":"string"},"attachmentStatus":{"type":"string","description":"Status of this subsidiary intermediary's attachment to the principal intermediary."},"remarks":{"type":"string"}}}},"conditionsImposed":{"type":"string","description":"Condition(s) imposed on the registration, or `Nil`."},"disciplinaryOrders":{"type":"array","description":"Public disciplinary orders by the MPFA within the last 5 years. Empty when none.","items":{"type":"object","properties":{"dateOfAction":{"type":"string"},"actionsTaken":{"type":"string"},"againstCapacityOf":{"type":"string"},"pressReleaseUrls":{"type":"array","items":{"type":"string"}}}}},"otherParticulars":{"type":"string","description":"Other particulars shown on the register, or `Nil`."}}}}}]}}}},"400":{"description":"Bad Request — none of `registrationNo`, `name`, or `nameChinese` supplied."},"404":{"description":"No register record matched the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycHkRegisterError"}}}},"422":{"description":"More than one register record matched — refine the query, ideally with `registrationNo`.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkAmbiguousMatch"},{"type":"object","required":["candidates"],"properties":{"candidates":{"type":"array","description":"The first matching records (up to 10), to help refine the query.","items":{"type":"object","required":["registrationNo","name"],"properties":{"registrationNo":{"type":"string"},"name":{"type":"string"},"nameChinese":{"type":"string"},"entityType":{"type":"string","enum":["Individual","Agency"]}}}}}}]}}}},"503":{"description":"The MPFA register is unavailable."}}}}}}
```

## IA licensed insurance intermediary register lookup

> Looks up an individual on the Hong Kong Insurance Authority's \*\*Register of Licensed\
> Insurance Intermediaries\*\* (iir.ia.org.hk) and returns the register record in one\
> synchronous call — licence and its conditions, appointing principals past and present,\
> and public enforcement actions of the last 5 years — together with a page print (PDF)\
> of the register's own record page, its appointment history expanded.\
> \
> Supply exactly one identifier — they are used in order of precedence:\
> 1\. \`licenceNo\` — unambiguous, preferred.\
> 2\. \`name\` — English name as it appears on the register, surname first\
> &#x20;  (e.g. \`CHAN Tai Man\`). Matched case-insensitively, as a substring.\
> 3\. \`nameChinese\` — Chinese name in \*\*Traditional\*\* characters. Matched as a substring;\
> &#x20;  Simplified input does not match.\
> \
> Only individuals are covered. Licensed insurance agencies and broker companies sit on a\
> separate register this endpoint does not reach.\
> \
> Every licence status is searched, lapsed and revoked included: restricting to active\
> licences hides exactly the people a KYC check needs to find.\
> \
> The register matches names literally — it folds case and normalises nothing else. Spacing\
> and punctuation are part of the stored name (\`Au-Yeung Wing Shing Steve\`, \`Li Lai Ha,\
> Janet\`), so a name is looked up as written, then retried without its punctuation if that\
> found nothing.\
> \
> Because names are matched by substring, a name that is complete and correct can still be\
> contained in a longer one; where exactly one of the matched records carries the queried\
> name in full, that record is returned instead of a \`422\`. The register holds no personal\
> identifier other than the licence number, so records genuinely sharing a name — 66 people\
> are registered as \`CHAN KA MAN\` — remain a \`422\`, listing the candidates and their\
> licence numbers.\
> \
> The lookup only succeeds when it narrows to \*\*exactly one\*\* record — \`404\` when nothing\
> matched, \`422\` with a candidate list when several did. A query matching more than 1,000\
> records also returns \`422\`: the register caps its results there and stops reporting the\
> true total, so beyond the cap no record can be resolved with confidence.<br>

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"KYC Hong Kong","description":"Hong Kong KYC checks, each completed in a single synchronous call: AML name screening\nagainst global watchlists, and lookups against Hong Kong's official public registers\nreturning the structured register record together with a page print (PDF) of the\nregister's own detail page.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"KycHkRegisterResult":{"type":"object","description":"Common envelope of all `/kyc/hk` register lookups. Each endpoint adds its register-specific `record`.","required":["requestId"],"properties":{"requestId":{"type":"string","description":"Unique id for this lookup, for tracking and billing reconciliation."},"externalRefId":{"type":"string","description":"Your own reference id, echoed back from the request."},"pagePrints":{"type":"array","description":"PDF page prints of the register's own detail pages for this record, as displayed at\nretrieval time. One entry per attempted print — a print that failed to render still\nappears, with `status: failed`. The structured record is unaffected either way.\n","items":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Per-print status:\n- \"ready\": the print is available, `url` and `fileName` are populated\n- \"failed\": the print could not be rendered in time, no link is issued\n","enum":["ready","failed"]},"url":{"type":"string","format":"uri","description":"Presigned download link (only when status is \"ready\"). Valid for 7 days; the\nfile is retained for 30 days.\n"},"fileName":{"type":"string","description":"Suggested file name (only when status is \"ready\")."}}}}}},"IaPrincipal":{"type":"object","description":"Insurer or licensed broker appointing an insurance intermediary.","required":["name"],"properties":{"licenceNo":{"type":"string","description":"The principal's own licence number, where the register states it."},"name":{"type":"string"},"nameChinese":{"type":"string"}}},"KycHkRegisterError":{"type":"object","description":"Error body of all `/kyc/hk` register lookups.","required":["message","requestId"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"}}},"KycHkAmbiguousMatch":{"type":"object","description":"Body of the `422` every `/kyc/hk` register lookup returns when the query matched more than one record. Each endpoint adds its register-specific `candidates`.\n","required":["message","requestId","total"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"},"total":{"type":"number","description":"How many records matched."}}}}},"paths":{"/kyc/hk/ia":{"post":{"tags":["KYC Hong Kong"],"summary":"IA licensed insurance intermediary register lookup","description":"Looks up an individual on the Hong Kong Insurance Authority's **Register of Licensed\nInsurance Intermediaries** (iir.ia.org.hk) and returns the register record in one\nsynchronous call — licence and its conditions, appointing principals past and present,\nand public enforcement actions of the last 5 years — together with a page print (PDF)\nof the register's own record page, its appointment history expanded.\n\nSupply exactly one identifier — they are used in order of precedence:\n1. `licenceNo` — unambiguous, preferred.\n2. `name` — English name as it appears on the register, surname first\n   (e.g. `CHAN Tai Man`). Matched case-insensitively, as a substring.\n3. `nameChinese` — Chinese name in **Traditional** characters. Matched as a substring;\n   Simplified input does not match.\n\nOnly individuals are covered. Licensed insurance agencies and broker companies sit on a\nseparate register this endpoint does not reach.\n\nEvery licence status is searched, lapsed and revoked included: restricting to active\nlicences hides exactly the people a KYC check needs to find.\n\nThe register matches names literally — it folds case and normalises nothing else. Spacing\nand punctuation are part of the stored name (`Au-Yeung Wing Shing Steve`, `Li Lai Ha,\nJanet`), so a name is looked up as written, then retried without its punctuation if that\nfound nothing.\n\nBecause names are matched by substring, a name that is complete and correct can still be\ncontained in a longer one; where exactly one of the matched records carries the queried\nname in full, that record is returned instead of a `422`. The register holds no personal\nidentifier other than the licence number, so records genuinely sharing a name — 66 people\nare registered as `CHAN KA MAN` — remain a `422`, listing the candidates and their\nlicence numbers.\n\nThe lookup only succeeds when it narrows to **exactly one** record — `404` when nothing\nmatched, `422` with a candidate list when several did. A query matching more than 1,000\nrecords also returns `422`: the register caps its results there and stops reporting the\ntrue total, so beyond the cap no record can be resolved with confidence.\n","operationId":"kycHkIa","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"At least one of `licenceNo`, `name`, or `nameChinese` is required.","properties":{"licenceNo":{"type":"string","description":"Insurance intermediary licence number. Unambiguous — preferred over name lookups."},"name":{"type":"string","description":"English name as it appears on the register, surname first. Matched case-insensitively as a literal substring: spacing and punctuation count, and are matched as the register stores them. A name that finds nothing is retried with its punctuation dropped. Finds people only — an agency or broker company is not on this register.\n"},"nameChinese":{"type":"string","description":"Chinese name as it appears on the register, in Traditional characters — Simplified input does not match. Matched as a substring; spacing is ignored.\n"},"externalRefId":{"type":"string","description":"Your own reference id, echoed back in the response."}}}}}},"responses":{"200":{"description":"Exactly one register record matched.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkRegisterResult"},{"type":"object","required":["record"],"properties":{"record":{"type":"object","required":["licenceNo","name","status","licenceType"],"properties":{"licenceNo":{"type":"string","description":"Insurance intermediary licence number."},"name":{"type":"string","description":"English name as on the register."},"nameChinese":{"type":"string","description":"Chinese name as on the register, if any."},"status":{"type":"string","enum":["Active","Inactive"],"description":"Licence status. Lapsed and revoked licences are `Inactive`."},"licenceType":{"type":"string","description":"Register code, e.g. `IND`, `TRA`, `TRB`."},"licencePeriod":{"type":"object","description":"Validity period of the licence.","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}},"businessAddress":{"type":"string"},"businessAddressChinese":{"type":"string"},"linesOfBusiness":{"type":"string","description":"Lines of business the licence covers, as the register words it."},"suspended":{"type":"boolean"},"pendingRenewal":{"type":"boolean"},"conditions":{"type":"array","description":"Conditions imposed on the licence.","items":{"type":"object","required":["condition"],"properties":{"condition":{"type":"string"},"conditionChinese":{"type":"string"},"effectiveFrom":{"type":"string","format":"date"},"effectiveTo":{"type":"string","format":"date"}}}},"publicDisciplinaryActions":{"type":"array","description":"Public enforcement actions of the last 5 years.","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"action":{"type":"string"},"actionChinese":{"type":"string"},"pressReleaseUrls":{"type":"array","items":{"type":"string","format":"uri"}}}}},"currentAppointments":{"type":"array","description":"Principals the licensee is currently appointed by.","items":{"type":"object","required":["appointingPrincipal"],"properties":{"appointingPrincipal":{"$ref":"#/components/schemas/IaPrincipal"},"lineOfBusiness":{"type":"string"},"appointmentDate":{"type":"string","format":"date"},"effectiveDate":{"type":"string","format":"date"},"principalType":{"type":"string"},"status":{"type":"string","enum":["Active","Inactive"]},"isResponsibleOfficer":{"type":"boolean"}}}},"appointmentHistory":{"type":"array","description":"Past and present appointments under this licence.","items":{"type":"object","required":["appointingPrincipal"],"properties":{"appointingPrincipal":{"$ref":"#/components/schemas/IaPrincipal"},"lineOfBusiness":{"type":"string"},"status":{"type":"string","enum":["Active","Inactive"]},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}}}}}}}]}}}},"400":{"description":"Bad Request — none of `licenceNo`, `name`, or `nameChinese` supplied."},"404":{"description":"No register record matched the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycHkRegisterError"}}}},"422":{"description":"More than one register record matched, or the query ran past the register's 1,000-record cap and its matches can no longer be counted — refine the query, ideally with `licenceNo`.\n","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/KycHkAmbiguousMatch"},{"type":"object","required":["candidates"],"properties":{"candidates":{"type":"array","description":"The first matching records (up to 10), to help refine the query.","items":{"type":"object","required":["licenceNo","name"],"properties":{"licenceNo":{"type":"string"},"name":{"type":"string"},"nameChinese":{"type":"string"}}}}}}]}}}},"503":{"description":"The register is unavailable, or its captcha could not be solved after retries."}}}}}}
```


# Facial & ID Scan

Identity verification that bundles **ID document verification**, **face match**, and **passive liveness** into a single hosted flow. The user completes capture on a Fill Easy-hosted page; you receive the decision via webhook or polling.

***

#### Flow

1. Call `POST /ocr/auth` with a `redirect` URL → receive a `token` and a hosted `sessionUrl`
2. Redirect the user to `sessionUrl` to complete ID capture, liveness, and face match
3. Receive the result via **webhook** or **poll** `/ocr/poll`

***

#### Result Delivery

**Webhook (recommended)** — Pass a `callbackUrl` in the `/ocr/auth` body. When verification completes, a `POST` is sent to that URL with the decision wrapped in a `WebhookPayload` envelope. Polling remains available as a fallback.

**Polling** — Call `/ocr/poll` with the returned `token` until a `200` response is returned.

***

#### Direct API (no redirect)

Prefer to run capture inside your own app? Call `POST /ocr/verify` with base64 images to get the same `OcrResult` decision synchronously — no hosted page, webhook, or polling. The checks that run are driven by what you send: `frontImage` for ID Verification, `selfie` for Passive Liveness, and both together add Face Match.

## Start session

> Creates an OCR verification session bundling ID Verification, Face Match,\
> and Passive Liveness. Returns a hosted \`sessionUrl\` to redirect the user to,\
> plus a JWT \`token\` used later with \`/ocr/poll\` to retrieve the decision.\
> \
> \*\*Webhook Delivery:\*\* Provide \`callbackUrl\` to receive a \`POST\` when verification\
> completes. The webhook body is a \[\`WebhookPayload\`]\(#/components/schemas/WebhookPayload)\
> envelope whose \`data\` is an \[\`OcrResult\`]\(#/components/schemas/OcrResult) — the\
> same shape returned by \`/ocr/poll\` on \`200\`. The request also carries an\
> \`X-Webhook-Event: ocr.verification.completed\` header plus any custom headers\
> supplied via \`callbackHeaders\`. Polling remains available regardless of whether\
> a \`callbackUrl\` is provided.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Facial & ID Scan","description":"Identity verification that bundles **ID document verification**, **face match**, and\n**passive liveness** into a single hosted flow. The user completes capture on a\nFill Easy-hosted page; you receive the decision via webhook or polling.\n\n---\n\n### Flow\n\n1. Call [`POST /ocr/auth`](#tag/OCR/operation/ocrAuth) with a `redirect` URL → receive a\n   `token` and a hosted `sessionUrl`\n\n2. Redirect the user to `sessionUrl` to complete ID capture, liveness, and face match\n\n3. Receive the result via **webhook** or **poll** [`/ocr/poll`](#tag/OCR/operation/ocrPoll)\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/ocr/auth` body. When verification\ncompletes, a `POST` is sent to that URL with the decision wrapped in a\n[`WebhookPayload`](#/components/schemas/WebhookPayload) envelope. Polling remains available\nas a fallback.\n\n**Polling** — Call `/ocr/poll` with the returned `token` until a `200` response is returned.\n\n---\n\n### Direct API (no redirect)\n\nPrefer to run capture inside your own app? Call\n[`POST /ocr/verify`](#tag/OCR/operation/ocrVerify) with base64 images to get the same\n[`OcrResult`](#/components/schemas/OcrResult) decision synchronously — no hosted page,\nwebhook, or polling. The checks that run are driven by what you send: `frontImage` for\nID Verification, `selfie` for Passive Liveness, and both together add Face Match.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/ocr/auth":{"post":{"tags":["Facial & ID Scan"],"summary":"Start session","description":"Creates an OCR verification session bundling ID Verification, Face Match,\nand Passive Liveness. Returns a hosted `sessionUrl` to redirect the user to,\nplus a JWT `token` used later with `/ocr/poll` to retrieve the decision.\n\n**Webhook Delivery:** Provide `callbackUrl` to receive a `POST` when verification\ncompletes. The webhook body is a [`WebhookPayload`](#/components/schemas/WebhookPayload)\nenvelope whose `data` is an [`OcrResult`](#/components/schemas/OcrResult) — the\nsame shape returned by `/ocr/poll` on `200`. The request also carries an\n`X-Webhook-Event: ocr.verification.completed` header plus any custom headers\nsupplied via `callbackHeaders`. Polling remains available regardless of whether\na `callbackUrl` is provided.","operationId":"ocrAuth","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect"],"properties":{"redirect":{"$ref":"#/components/schemas/RedirectUri"},"vendorData":{"type":"string","description":"Optional identifier of your own (e.g. user id) stored with the session and returned in the webhook payload."},"metadata":{"type":"object","description":"Arbitrary JSON stored with the session, returned in the webhook payload.","additionalProperties":true},"callbackUrl":{"type":"string","format":"uri","pattern":"^https://.+","description":"HTTPS URL to receive a webhook POST when verification completes.\nWhen provided, the webhook `data` is the same payload as a `200` response\nfrom `/ocr/poll`. Polling remains available as a fallback.\n"},"callbackHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers to include in the webhook request.\nUse this to pass authentication or any other headers your endpoint requires\n(e.g. `{\"Authorization\": \"Bearer <token>\", \"X-Api-Key\": \"...\"}`).\n"}}}}}},"responses":{"200":{"description":"Session created","content":{"application/json":{"schema":{"type":"object","required":["token","sessionUrl"],"properties":{"token":{"type":"string","description":"JWT to pass to /ocr/poll"},"sessionUrl":{"type":"string","format":"uri","description":"Hosted OCR verification URL to redirect the user to"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"Upstream verification provider unavailable - retry later"}}}}}}
```

## Poll result

> Poll with the \`token\` returned from \`/ocr/auth\` to get the verification decision.\
> Returns 202 while still pending, 200 once the upstream webhook has delivered the\
> result. The \`status\` field doubles as the pending flag and the terminal verdict.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Facial & ID Scan","description":"Identity verification that bundles **ID document verification**, **face match**, and\n**passive liveness** into a single hosted flow. The user completes capture on a\nFill Easy-hosted page; you receive the decision via webhook or polling.\n\n---\n\n### Flow\n\n1. Call [`POST /ocr/auth`](#tag/OCR/operation/ocrAuth) with a `redirect` URL → receive a\n   `token` and a hosted `sessionUrl`\n\n2. Redirect the user to `sessionUrl` to complete ID capture, liveness, and face match\n\n3. Receive the result via **webhook** or **poll** [`/ocr/poll`](#tag/OCR/operation/ocrPoll)\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/ocr/auth` body. When verification\ncompletes, a `POST` is sent to that URL with the decision wrapped in a\n[`WebhookPayload`](#/components/schemas/WebhookPayload) envelope. Polling remains available\nas a fallback.\n\n**Polling** — Call `/ocr/poll` with the returned `token` until a `200` response is returned.\n\n---\n\n### Direct API (no redirect)\n\nPrefer to run capture inside your own app? Call\n[`POST /ocr/verify`](#tag/OCR/operation/ocrVerify) with base64 images to get the same\n[`OcrResult`](#/components/schemas/OcrResult) decision synchronously — no hosted page,\nwebhook, or polling. The checks that run are driven by what you send: `frontImage` for\nID Verification, `selfie` for Passive Liveness, and both together add Face Match.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"},"OcrResult":{"type":"object","description":"Verification decision returned by `/ocr/poll` (200) and as the `data` field of\nthe `ocr.verification.completed` webhook. `status` carries the terminal verdict.\n`identity`, `faceMatch`, and `liveness` are present only when the upstream\ncheck produced data — for example, a `Declined` outcome with no captured\ndocument may return only `status`.\n","required":["status"],"properties":{"status":{"type":"string","enum":["Approved","Declined","In Review","Kyc Expired"],"description":"Terminal verdict from the verification provider."},"identity":{"type":"object","description":"Extracted ID document fields.","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"documentNumber":{"type":"string"},"documentType":{"type":"string"},"issuingCountry":{"type":"string","description":"ISO 3166-1 alpha-3 code."},"gender":{"type":"string"},"dateOfIssue":{"type":"string"},"expirationDate":{"type":"string"}}},"faceMatch":{"type":"object","description":"1:1 face match between the selfie capture and the ID portrait.","properties":{"score":{"type":"number","description":"Similarity 0-100 (higher is a closer match)."}}},"liveness":{"type":"object","description":"Passive liveness check on the selfie capture.","properties":{"score":{"type":"number","description":"Confidence 0-100 that the subject is a live person."},"method":{"type":"string"}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/ocr/poll":{"post":{"tags":["Facial & ID Scan"],"summary":"Poll result","description":"Poll with the `token` returned from `/ocr/auth` to get the verification decision.\nReturns 202 while still pending, 200 once the upstream webhook has delivered the\nresult. The `status` field doubles as the pending flag and the terminal verdict.","operationId":"ocrPoll","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"$ref":"#/components/schemas/Token"}}}}}},"responses":{"200":{"description":"Verification complete - decision returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OcrResult"}}}},"202":{"description":"Pending - user has not completed verification yet","content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["pending"]}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"410":{"description":"Token is valid but the session result has expired (TTL) or is unknown"}}}}}}
```

## Verify (direct)

> Synchronous, no-redirect alternative to \`/ocr/auth\`. Submit the images you have as\
> base64 strings and receive the decision directly in the response — the same\
> \[\`OcrResult\`]\(#/components/schemas/OcrResult) shape \`/ocr/poll\` returns.\
> \
> \*\*You choose which checks run by what you send\*\* (send at least one of \`frontImage\`\
> or \`selfie\`):\
> \
> \| Inputs sent | Checks run |\
> \|---|---|\
> \| \`frontImage\` (+ optional \`backImage\`) | ID Verification |\
> \| \`selfie\` | Passive Liveness |\
> \| \`frontImage\` + \`selfie\` | ID Verification + Face Match + Passive Liveness |\
> \
> No hosted page, webhook, or polling is involved: your application captures the images\
> and this call returns the verdict in one round-trip. \`status\` is \`Approved\` only when\
> every check that ran passed; \`identity\`, \`faceMatch\`, and \`liveness\` are present only\
> for the checks that ran.\
> \
> Images are base64-encoded — a raw base64 string or a \`data:\` URL. Keep the combined\
> request body under \~6 MB; compress phone captures before sending.

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Facial & ID Scan","description":"Identity verification that bundles **ID document verification**, **face match**, and\n**passive liveness** into a single hosted flow. The user completes capture on a\nFill Easy-hosted page; you receive the decision via webhook or polling.\n\n---\n\n### Flow\n\n1. Call [`POST /ocr/auth`](#tag/OCR/operation/ocrAuth) with a `redirect` URL → receive a\n   `token` and a hosted `sessionUrl`\n\n2. Redirect the user to `sessionUrl` to complete ID capture, liveness, and face match\n\n3. Receive the result via **webhook** or **poll** [`/ocr/poll`](#tag/OCR/operation/ocrPoll)\n\n---\n\n### Result Delivery\n\n**Webhook (recommended)** — Pass a `callbackUrl` in the `/ocr/auth` body. When verification\ncompletes, a `POST` is sent to that URL with the decision wrapped in a\n[`WebhookPayload`](#/components/schemas/WebhookPayload) envelope. Polling remains available\nas a fallback.\n\n**Polling** — Call `/ocr/poll` with the returned `token` until a `200` response is returned.\n\n---\n\n### Direct API (no redirect)\n\nPrefer to run capture inside your own app? Call\n[`POST /ocr/verify`](#tag/OCR/operation/ocrVerify) with base64 images to get the same\n[`OcrResult`](#/components/schemas/OcrResult) decision synchronously — no hosted page,\nwebhook, or polling. The checks that run are driven by what you send: `frontImage` for\nID Verification, `selfie` for Passive Liveness, and both together add Face Match.\n"}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"schemas":{"OcrResult":{"type":"object","description":"Verification decision returned by `/ocr/poll` (200) and as the `data` field of\nthe `ocr.verification.completed` webhook. `status` carries the terminal verdict.\n`identity`, `faceMatch`, and `liveness` are present only when the upstream\ncheck produced data — for example, a `Declined` outcome with no captured\ndocument may return only `status`.\n","required":["status"],"properties":{"status":{"type":"string","enum":["Approved","Declined","In Review","Kyc Expired"],"description":"Terminal verdict from the verification provider."},"identity":{"type":"object","description":"Extracted ID document fields.","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"documentNumber":{"type":"string"},"documentType":{"type":"string"},"issuingCountry":{"type":"string","description":"ISO 3166-1 alpha-3 code."},"gender":{"type":"string"},"dateOfIssue":{"type":"string"},"expirationDate":{"type":"string"}}},"faceMatch":{"type":"object","description":"1:1 face match between the selfie capture and the ID portrait.","properties":{"score":{"type":"number","description":"Similarity 0-100 (higher is a closer match)."}}},"liveness":{"type":"object","description":"Passive liveness check on the selfie capture.","properties":{"score":{"type":"number","description":"Confidence 0-100 that the subject is a live person."},"method":{"type":"string"}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/ocr/verify":{"post":{"tags":["Facial & ID Scan"],"summary":"Verify (direct)","description":"Synchronous, no-redirect alternative to `/ocr/auth`. Submit the images you have as\nbase64 strings and receive the decision directly in the response — the same\n[`OcrResult`](#/components/schemas/OcrResult) shape `/ocr/poll` returns.\n\n**You choose which checks run by what you send** (send at least one of `frontImage`\nor `selfie`):\n\n| Inputs sent | Checks run |\n|---|---|\n| `frontImage` (+ optional `backImage`) | ID Verification |\n| `selfie` | Passive Liveness |\n| `frontImage` + `selfie` | ID Verification + Face Match + Passive Liveness |\n\nNo hosted page, webhook, or polling is involved: your application captures the images\nand this call returns the verdict in one round-trip. `status` is `Approved` only when\nevery check that ran passed; `identity`, `faceMatch`, and `liveness` are present only\nfor the checks that ran.\n\nImages are base64-encoded — a raw base64 string or a `data:` URL. Keep the combined\nrequest body under ~6 MB; compress phone captures before sending.","operationId":"ocrVerify","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Send at least one of `frontImage` or `selfie`.","properties":{"frontImage":{"type":"string","description":"Base64-encoded image of the ID document front. Triggers ID Verification."},"backImage":{"type":"string","description":"Base64-encoded image of the ID document back, when the document has one."},"selfie":{"type":"string","description":"Base64-encoded selfie. Triggers Passive Liveness, and Face Match when `frontImage` is also sent."}}}}}},"responses":{"200":{"description":"Verification complete - decision returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OcrResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"Upstream verification provider unavailable - retry later"}}}}}}
```


# Billing

Currently supports a single function: View billed items for a time range.

## GET /core/billing

> Get Billed Items

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"tags":[{"name":"Billing","description":"Currently supports a single function: View billed items for a time range."}],"servers":[{"url":"sandbox.staging-api.fill-easy.com"}],"security":[{"ClientID":[],"ClientSecret":[]}],"components":{"securitySchemes":{"ClientID":{"type":"apiKey","description":"Client ID in x-client-id header.","name":"x-client-id","in":"header"}},"responses":{"BadRequest":{"description":"Bad Request - Invalid input parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized - Token is missing, invalid, or expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}}},"paths":{"/core/billing":{"get":{"tags":["Billing"],"summary":"Get Billed Items","operationId":"billingGetItems","parameters":[{"name":"start","in":"query","required":true,"schema":{"type":"number","description":"Start timestamp (epoch seconds)"}},{"name":"end","in":"query","required":true,"schema":{"type":"number","description":"End timestamp (epoch seconds)"}}],"responses":{"200":{"description":"Billed items in the specified time range","content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["businessID","service","timestamp"],"properties":{"businessID":{"type":"string"},"service":{"type":"string"},"timestamp":{"type":"number","description":"Successful poll timestamp (epoch seconds)"},"createTime":{"type":"number","description":"Request timestamp (epoch seconds)"},"requestDetails":{"type":"string"},"express":{"type":"boolean"},"externalRefId":{"type":"string"},"countryCode":{"type":"string"}}}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```


# Models

## The KycHkRegisterResult object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"KycHkRegisterResult":{"type":"object","description":"Common envelope of all `/kyc/hk` register lookups. Each endpoint adds its register-specific `record`.","required":["requestId"],"properties":{"requestId":{"type":"string","description":"Unique id for this lookup, for tracking and billing reconciliation."},"externalRefId":{"type":"string","description":"Your own reference id, echoed back from the request."},"pagePrints":{"type":"array","description":"PDF page prints of the register's own detail pages for this record, as displayed at\nretrieval time. One entry per attempted print — a print that failed to render still\nappears, with `status: failed`. The structured record is unaffected either way.\n","items":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Per-print status:\n- \"ready\": the print is available, `url` and `fileName` are populated\n- \"failed\": the print could not be rendered in time, no link is issued\n","enum":["ready","failed"]},"url":{"type":"string","format":"uri","description":"Presigned download link (only when status is \"ready\"). Valid for 7 days; the\nfile is retained for 30 days.\n"},"fileName":{"type":"string","description":"Suggested file name (only when status is \"ready\")."}}}}}}}}}
```

## The KycHkRegisterError object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"KycHkRegisterError":{"type":"object","description":"Error body of all `/kyc/hk` register lookups.","required":["message","requestId"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"}}}}}}
```

## The KycHkAmbiguousMatch object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"KycHkAmbiguousMatch":{"type":"object","description":"Body of the `422` every `/kyc/hk` register lookup returns when the query matched more than one record. Each endpoint adds its register-specific `candidates`.\n","required":["message","requestId","total"],"properties":{"message":{"type":"string"},"requestId":{"type":"string"},"total":{"type":"number","description":"How many records matched."}}}}}}
```

## The SfcEntity object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"SfcEntity":{"type":"object","description":"Reference to another SFC register entry (a principal or a registered institution).","required":["name"],"properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number."},"name":{"type":"string"},"nameChinese":{"type":"string"}}}}}}
```

## The SfcPerson object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"SfcPerson":{"type":"object","description":"Individual attached to a firm on the SFC register.","required":["name"],"properties":{"ceRef":{"type":"string","description":"Central Entity (CE) number."},"name":{"type":"string"},"nameChinese":{"type":"string"},"activities":{"type":"array","items":{"type":"string"},"description":"Regulated activities the attachment covers."}}}}}}
```

## The IaPrincipal object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IaPrincipal":{"type":"object","description":"Insurer or licensed broker appointing an insurance intermediary.","required":["name"],"properties":{"licenceNo":{"type":"string","description":"The principal's own licence number, where the register states it."},"name":{"type":"string"},"nameChinese":{"type":"string"}}}}}}
```

## The Document object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"Document":{"type":"object","required":["category","companyId","documentName"],"properties":{"category":{"type":"string","description":"Document category (e.g., Annual Return & Accounts, Directors & Company Secretaries)","enum":["Incorporation & Registration","Annual Return & Accounts","Directors & Company Secretaries","Registered Office & Name Changes","Share Capital","Charges","Articles of Association","Deregistration & Liquidation","Amalgamation","Open-Ended Fund Companies","Limited Partnership Funds","Rectification & Administration","Annual Return / Financial Statements","Articles of Association / Members","Auditors","Change of Company Name","Deregistration","Directors and Company Secretary","Incorporation of Local Companies","Inspectors","Mortgage & Charges","Re-domiciliation","Registered Foreign Companies","Registered Offices and Location of Registers","Registration of Eligible Companies","Re-Registration","Share Acquisition or Buy-back/Share Certificates","Receivership","Winding Up","Others"]},"documentYear":{"type":"string","description":"Accounting year (for annual returns)"},"documentName":{"type":"string","description":"English name of the document"},"pages":{"type":"string","description":"Number of pages"},"filingDate":{"type":"string","format":"date","description":"Filing date (YYYY-MM-DD format), can be date of processing or date filed depending on country"},"documentId":{"type":"string","description":"Unique document identifier"},"companyId":{"type":"string","description":"Company ID"},"hasLinked":{"type":"boolean","description":"Whether the document has linked files"},"description":{"type":"object","description":"Additional useful info regarding the document","additionalProperties":{"type":"string"}}}}}}}
```

## The Country object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"Country":{"type":"object","required":["name","code","region","status","sourceLanguage","search","contents","documentTypes","defaultDocumentType"],"properties":{"name":{"type":"string","description":"Country name"},"code":{"type":"string","description":"[ISO 3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) country code."},"region":{"type":"string","description":"Geographic region"},"sourceLanguage":{"type":"string","description":"ISO 639-1 language code for the source language of documents"},"status":{"type":"string","enum":["automated","manual"],"description":"Whether the country is fully automated or requires manual processing"},"search":{"type":"object","required":["documents","companies","company"],"properties":{"documents":{"type":"boolean","description":"Whether document search is available"},"companies":{"type":"boolean","description":"Whether company name search is available"},"company":{"type":"boolean","description":"Whether company ID lookup is available"}}},"contents":{"type":"object","required":["registration","shareholder","financial"],"properties":{"registration":{"type":"boolean","description":"Whether registration information is available"},"shareholder":{"type":"boolean","description":"Whether shareholder information is available"},"financial":{"type":"boolean","description":"Whether financial information is available"}}},"defaultDocumentType":{"type":"string","description":"The document type used when `documentType` is omitted from a `/cra/request` call.\nAlways matches one of the `name` values in `documentTypes`.\n"},"documentTypes":{"type":"array","description":"Available document types for this country","items":{"type":"object","required":["name","contents","source"],"properties":{"name":{"type":"string","description":"Document type name"},"aliases":{"type":"array","description":"Alternative names for the document type. Not allowed into the documentType field of `/cra/request`"},"contents":{"type":"array","items":{"$ref":"#/components/schemas/DocumentContents"},"description":"List of content fields included in this document type"},"source":{"type":"string","description":"Source of the document"},"sampleUrl":{"type":"string","format":"uri","description":"URL to a sample document"},"retrievalRequiresDocumentId":{"type":"boolean","description":"When true, the `documentId` field is required in `/cra/request` for this document type"},"retrievalRequiresDocumentYear":{"type":"boolean","description":"When true, the `documentYear` field is required in `/cra/request` for this document type"},"retrievalSupportsDocumentYear":{"type":"boolean","description":"When true, the `documentYear` field is accepted but optional in `/cra/request` for this document type"}}}}}},"DocumentContents":{"type":"string","description":"Granular data points available in a company registry document","enum":["Company Name","Unique Identifier","Date of Incorporation","Company Type","Registered Office Address","Company Status","Status Date","Jurisdiction","Authorized Capital","Paid-Up Capital","Share Information","Shareholder Name","Ownership Ratio","Ownership Volume","Director Name","Director Position","Director Nationality","Registered Agent","Registered Agent Contact","Filing History","Branches and Subsidiaries","Insolvency Information","Notary Name","Notary Deed Number","Notary Deed Date","Business Activities","Subscribed Capital","Commissioner Name","Commissioner Position","Business Capital","Owner Name","Owner Position","Beneficial Owner Name","Beneficial Owner Criteria","Financial Statement","Company Secretary","Mortgages and Charges","Court Judgments","Writs of Summons","Court Hearings"]}}}}
```

## The Error object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Error message"}}}}}}
```

## The DocumentContents object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"DocumentContents":{"type":"string","description":"Granular data points available in a company registry document","enum":["Company Name","Unique Identifier","Date of Incorporation","Company Type","Registered Office Address","Company Status","Status Date","Jurisdiction","Authorized Capital","Paid-Up Capital","Share Information","Shareholder Name","Ownership Ratio","Ownership Volume","Director Name","Director Position","Director Nationality","Registered Agent","Registered Agent Contact","Filing History","Branches and Subsidiaries","Insolvency Information","Notary Name","Notary Deed Number","Notary Deed Date","Business Activities","Subscribed Capital","Commissioner Name","Commissioner Position","Business Capital","Owner Name","Owner Position","Beneficial Owner Name","Beneficial Owner Criteria","Financial Statement","Company Secretary","Mortgages and Charges","Court Judgments","Writs of Summons","Court Hearings"]}}}}
```

## The Token object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"Token":{"type":"string","pattern":"^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$","description":"JWT token"}}}}
```

## The IamSmartSource object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IamSmartSource":{"type":"string","description":"The device platform and browser combination","enum":["PC_Browser","android","iOS","Android_Chrome","Android_Firefox","Android_Edge","Android_Samsung","Android_Huawei","Android_Xiaomi","iOS_Safari","iOS_Chrome","iOS_Firefox","iOS_Edge","iOS_IMS_InAppBrowser","Android_IMS_InAppBrowser"]}}}}
```

## The IamSmartScope object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IamSmartScope":{"type":"string","description":"Setting the scope is required only in cases where operations are chained, e.g auth + formfilling, auth + signing.\nBy default, the scope is set to the value required for the operation.\nRequested scope of authorization based on available services.\nMultiple scopes should be space-separated. Valid scopes are:\neidapi_auth, eidapi_profiles, eidapi_formFilling, eidapi_sign, eidapi_fr, eidapi_bulksign\n","pattern":"^(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign)(\\s+(eidapi_auth|eidapi_profiles|eidapi_formFilling|eidapi_sign|eidapi_fr|eidapi_bulksign))*$"}}}}
```

## The IamSmartLanguage object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IamSmartLanguage":{"type":"string","description":"iAM Smart App display language\n","enum":["en-US","zh-HK","zh-CN"],"default":"en-US"}}}}
```

## The IamSmartActivityClass object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IamSmartActivityClass":{"type":["string","null"],"description":"Android activity class (required if source is android)"}}}}
```

## The IamSmartActivityParams object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"IamSmartActivityParams":{"type":["string","null"],"description":"Additional activity parameters (optional if source is android)"}}}}
```

## The RedirectUri object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"RedirectUri":{"type":"string","description":"Redirect URI after user authorization.\n\nBrowser: HTTPS URL to your website.\n\niOS: HTTPS Universal link\n\nAndroid: Package name (com.filleasy.app)\n"}}}}
```

## The FormData object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"FormData":{"type":"object","properties":{"formName":{"type":"string","description":"Form title displayed to user in iAM Smart app","maxLength":100},"formNum":{"type":"string","description":"Form reference code","maxLength":50},"formDesc":{"type":"string","description":"Form description displayed to user","maxLength":500},"formFields":{"type":"array","description":"Detail fields to request from user","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender","prefix","maritalStatus","homeTelNumber","officeTelNumber","mobileNumber","emailAddress","residentialAddress","postalAddress","educationLevel","addressDocInfo","addressDocFile"]}}}}}}}
```

## The ProfileFields object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"ProfileFields":{"type":"array","description":"Mandatorily obtain specific profile fields.\nNote: You must display a consent page per iAM Smart UI/UX requirements when using these fields.\nIf fields overlap between `profileFields` and `formData.formFields`, `profileFields` takes precedence.\n","items":{"type":"string","enum":["idNo","enName","chName","birthDate","gender"]}}}}}
```

## The BatchReport object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"BatchReport":{"type":"object","description":"Aggregate result of a batch request. Returned by `/cra/batch/poll` (200) and sent as the `data`\nfield of the `cra.batch.completed` / `cra.batch.partial` webhook.\n","required":["batchId","status","countryCode","companyId","companyName","summaryRequired","summary","companyData","documents"],"properties":{"batchId":{"type":"string"},"status":{"type":"string","description":"- `completed`: every order was retrieved.\n- `partial`: the batch is delivered but one or more orders were cancelled.\n- `processing`: not yet ready (only on `/cra/batch/poll` 202-equivalents).\n","enum":["completed","partial","processing"]},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"companyId":{"type":["string","null"]},"companyName":{"type":["string","null"]},"summaryRequired":{"type":"boolean"},"summary":{"type":"object","description":"The generated summary PDF.","required":["status"],"properties":{"status":{"type":"string","enum":["ready","processing","not_applicable"]},"url":{"type":"string","format":"uri","description":"Presigned URL to download the summary PDF (only when `ready`). Valid for 7 days."},"fileName":{"type":"string","description":"Suggested file name — \"<company name>_Summary.pdf\"."}}},"companyData":{"type":["object","null"],"description":"Structured company data — the company-particulars order's unified JSON — when one of the\norders produced it. `null` otherwise.\n"},"documents":{"type":"array","description":"Per-order document status.","items":{"type":"object","required":["requestId","status","originalDocuments"],"properties":{"requestId":{"type":"string","description":"The child request ID for this order."},"documentType":{"type":"string"},"documentYear":{"type":["string","number"]},"status":{"type":"string","description":"- `ready`: document retrieved and available.\n- `processing`: still being retrieved/processed.\n- `manual`: awaiting manual upload or resolution.\n- `cancelled`: order was cancelled and dropped from the batch.\n","enum":["ready","processing","manual","cancelled"]},"message":{"type":"string","description":"Why a `cancelled` order produced nothing (rejection reason or retrieval failure).\nAbsent when the order was cancelled without a recorded cause, e.g. manually.\n"},"originalDocuments":{"type":"array","description":"Downloadable files for this order — the original and, when one was produced, the\ntranslation. Empty until the order's `status` is `ready`.\n","items":{"type":"object","required":["type","status"],"properties":{"type":{"type":"string","enum":["original","translated"]},"status":{"type":"string","enum":["ready","processing","not_applicable"]},"url":{"type":"string","format":"uri","description":"Presigned URL (7 days), only when `ready`."},"fileName":{"type":"string","description":"Suggested file name — company name, document type and year when available."}}}}}}}}}}}}
```

## The WebhookPayload object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"WebhookPayload":{"type":"object","description":"Envelope sent as the JSON body of webhook `POST` requests to your `callbackUrl`.\n","required":["event","requestId","timestamp","data"],"properties":{"event":{"type":"string","description":"Event identifier.\n","enum":["cra.report.partial","cra.report.completed","cra.batch.completed","cra.batch.partial","lra.report.completed","kyc.cn.report.completed","ocr.verification.completed"]},"requestId":{"type":"string","description":"The request ID associated with this report. For batch events this is the batch ID (`BAT_...`)."},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of when the webhook was sent."},"data":{"type":"object","description":"The report payload. Identical to the `200` response body of the\ncorresponding poll endpoint (`/cra/poll`, `/cra/batch/poll`, `/lra/poll`, `/kyc/cn/poll`,\nor `/ocr/poll`).\n"}}}}}}
```

## The OcrResult object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"OcrResult":{"type":"object","description":"Verification decision returned by `/ocr/poll` (200) and as the `data` field of\nthe `ocr.verification.completed` webhook. `status` carries the terminal verdict.\n`identity`, `faceMatch`, and `liveness` are present only when the upstream\ncheck produced data — for example, a `Declined` outcome with no captured\ndocument may return only `status`.\n","required":["status"],"properties":{"status":{"type":"string","enum":["Approved","Declined","In Review","Kyc Expired"],"description":"Terminal verdict from the verification provider."},"identity":{"type":"object","description":"Extracted ID document fields.","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"fullName":{"type":"string"},"dateOfBirth":{"type":"string"},"documentNumber":{"type":"string"},"documentType":{"type":"string"},"issuingCountry":{"type":"string","description":"ISO 3166-1 alpha-3 code."},"gender":{"type":"string"},"dateOfIssue":{"type":"string"},"expirationDate":{"type":"string"}}},"faceMatch":{"type":"object","description":"1:1 face match between the selfie capture and the ID portrait.","properties":{"score":{"type":"number","description":"Similarity 0-100 (higher is a closer match)."}}},"liveness":{"type":"object","description":"Passive liveness check on the selfie capture.","properties":{"score":{"type":"number","description":"Confidence 0-100 that the subject is a live person."},"method":{"type":"string"}}}}}}}}
```

## The Company object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"Company":{"required":["companyId","companyName","idType","registrationDetails"],"type":"object","description":"Company information returned from the Companies Registry search","properties":{"companyId":{"type":"string","description":"Unique company identifier used in subsequent API calls.\nFor Hong Kong: Business Registration Number (BRN) - an 8-digit number.\nFor Australia: Australian Company Number (ACN).\nFor Singapore: Unique Entity Number (UEN).\n"},"idType":{"type":"string","description":"Type of company identifier returned.\n- \"BRN\" - Business Registration Number (Hong Kong)\n- \"ACN\" - Australian Company Number (Australia)\n- \"UEN\" - Unique Entity Number (Singapore)\n- \"CIN\" - Corporate Identification Number (India)\n- \"FCRN\" - Foreign Company Registration Number (India)\n- \"LLPIN\" - Limited Liability Partnership Identification Number (India)\n- \"FLLPIN\" - Foreign LLP Identification Number (India)\n- \"Unavailable\" - When the country does not provide a company ID\n"},"companyName":{"type":"string","description":"Official registered company name (in English or Chinese depending on the search)"},"localName":{"type":"string","description":"Name of the company in local language (if applicable and different from companyName)"},"status":{"type":"string","enum":["Live","Distressed","Dissolved"],"description":"Current active status of the company.\n- \"Live\" - Company is currently active and in good standing\n- \"Distressed\" - Company is undergoing liquidation, insolvency proceedings, or striking-off process\n- \"Dissolved\" - Company has been dissolved/deregistered\n"},"nameType":{"type":"string","enum":["current","old"],"description":"Indicates whether the returned name is the current or a previous name.\n- \"current\" - This is the company's current registered name\n- \"old\" - This is a previous/historical name of the company\n"},"address":{"type":"string","description":"Registered address of the company (when available)"},"state":{"type":"string","description":"State or province of the company's registered office (when available)"},"registrationDetails":{"type":"array","description":"A list of attributes defining the company's legal structure, registration category, or public/private status as defined by the local jurisdiction.","items":{"$ref":"#/components/schemas/registrationDetail"}},"dissolutionDate":{"type":"string","format":"date","description":"Date of dissolution (YYYY-MM-DD format, empty string if not dissolved)"},"incorporationDate":{"type":"string","format":"date","description":"Date of incorporation/registration (YYYY-MM-DD format)"},"remarks":{"type":"string","description":"Any remarks or notes about the company"},"nameHistory":{"type":"array","description":"Historical company names (previous names the company has used)","items":{"type":"object","properties":{"companyName":{"type":"string","description":"English company name"},"localName":{"type":"string","description":"Chinese company name (if available)"},"effectiveDate":{"type":"string","format":"date","description":"Date when this name became effective (YYYY-MM-DD format)"}}}}}},"registrationDetail":{"type":"string","description":"Legal classification or entity type identifier. \nProvides details about a company based on its incorporation structure (e.g., Limited by Shares) or its regulatory category (e.g., Private vs. Public) according to the relevant national companies legislation.\n","enum":["Corporation","Company Limited by Shares","Registered Non-Hong Kong Company","Company Limited by Guarantee","Limited Company","Limited Liability Company","Unlimited Company","Registered Society/Organization","Open-ended Fund Company","Open-ended Investment Company","Limited Partnership Fund","Public Company","Private Company","Foreign Company","Foreign Company Branch","Registered Overseas Entity","Registered Australian Corporation under non-Corporations Law","Company Limited by Both Shares and Guarantees","No Liability Company","Sole Proprietorship/ Partnership","Sole Proprietorship","Limited Liability Partnership","Limited Partnership","Unlimited Partnership","Local Company","Juristic Ordinary Partnership","Foreign Juristic Person","Joint Venture","Chamber of Commerce","Private Limited by Guarantee (Section 60 Exemption)","Assurance Company","European Economic Interest Grouping","Royal Charter Body","United Kingdom Societas","United Kingdom Economic Interest Grouping","Charitable Incorporated Organisation","Educational Corporation","Government Body","General Partnership Company","Limited Partnership Company","Special Registered Corporation","One Person Company","Section 8 Company","Nidhi Company","Producer Company","IFSC Company","Partnership","Entity Registered Under Myanmar Companies Act 1914","Economic Interest Grouping","Civil Company","Other","N/A"]}}}}
```

## The registrationDetail object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"registrationDetail":{"type":"string","description":"Legal classification or entity type identifier. \nProvides details about a company based on its incorporation structure (e.g., Limited by Shares) or its regulatory category (e.g., Private vs. Public) according to the relevant national companies legislation.\n","enum":["Corporation","Company Limited by Shares","Registered Non-Hong Kong Company","Company Limited by Guarantee","Limited Company","Limited Liability Company","Unlimited Company","Registered Society/Organization","Open-ended Fund Company","Open-ended Investment Company","Limited Partnership Fund","Public Company","Private Company","Foreign Company","Foreign Company Branch","Registered Overseas Entity","Registered Australian Corporation under non-Corporations Law","Company Limited by Both Shares and Guarantees","No Liability Company","Sole Proprietorship/ Partnership","Sole Proprietorship","Limited Liability Partnership","Limited Partnership","Unlimited Partnership","Local Company","Juristic Ordinary Partnership","Foreign Juristic Person","Joint Venture","Chamber of Commerce","Private Limited by Guarantee (Section 60 Exemption)","Assurance Company","European Economic Interest Grouping","Royal Charter Body","United Kingdom Societas","United Kingdom Economic Interest Grouping","Charitable Incorporated Organisation","Educational Corporation","Government Body","General Partnership Company","Limited Partnership Company","Special Registered Corporation","One Person Company","Section 8 Company","Nidhi Company","Producer Company","IFSC Company","Partnership","Entity Registered Under Myanmar Companies Act 1914","Economic Interest Grouping","Civil Company","Other","N/A"]}}}}
```

## The LitigationStats object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationStats":{"type":"object","description":"Aggregated counts and amounts for a litigation category (or all categories,\nwhen used as the `overall` block). Counts are case counts; amounts are in CNY.\n","required":["total"],"properties":{"total":{"type":"integer","description":"Total cases."},"open":{"type":"integer","description":"Open (unresolved) cases."},"closed":{"type":"integer","description":"Closed cases."},"asPlaintiff":{"type":"integer","description":"Cases where the subject was the plaintiff."},"asDefendant":{"type":"integer","description":"Cases where the subject was the defendant."},"asThirdParty":{"type":"integer","description":"Cases where the subject was a third party."},"totalAmount":{"type":"number","description":"Total monetary amount involved (CNY)."},"openAmount":{"type":"number","description":"Amount tied to open cases (CNY)."},"closedAmount":{"type":"number","description":"Amount tied to closed cases (CNY)."},"causeDistribution":{"type":"string","description":"Distribution of case causes, formatted by upstream as `Cause(count), Cause(count)`."},"locationDistribution":{"type":"string","description":"Distribution by case location."},"yearDistribution":{"type":"string","description":"Distribution by filing year."},"closingMethodDistribution":{"type":"string","description":"Distribution by closing method (e.g. judgment, mediation)."}}}}}}
```

## The LitigationParty object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationParty":{"type":"object","required":["name","role","type"],"properties":{"name":{"type":"string"},"role":{"type":"string","description":"Litigation status (e.g. Plaintiff, Defendant, Person Subject to Application, Third Party)."},"type":{"type":"string","description":"Party type (e.g. Natural Person, Enterprise Organization)."}}}}}}
```

## The LitigationCase object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationCase":{"type":"object","description":"A single litigation record. Always includes the structural fields (case number,\ncourt, stage, parties). Optional fields are present only when the upstream service\nreturns them — criminal-specific fields (`charges`, `crimeAmount`) are absent for\nnon-criminal cases.\n","required":["caseType","caseNumber","court","courtLevel","stage","procedure","location","cause","partyRole","parties"],"properties":{"caseType":{"type":"string","description":"Case type label (e.g. `Civil First Instance`, `Criminal First Instance`, `Property Preservation Execution`)."},"caseNumber":{"type":"string"},"court":{"type":"string"},"courtLevel":{"type":"string","description":"Court level (Basic Court / Intermediate / High / Supreme)."},"stage":{"type":"string","description":"Case progress stage as returned by upstream (e.g. `Open`, `Closed`)."},"procedure":{"type":"string","description":"Trial procedure (First Instance, Second Instance, Retrial, Execution)."},"location":{"type":"string"},"cause":{"type":"string"},"partyRole":{"type":"string","description":"Subject's role in this case."},"parties":{"type":"array","items":{"$ref":"#/components/schemas/LitigationParty"}},"filingDate":{"type":"string","format":"date"},"closingDate":{"type":"string","format":"date"},"causeDetail":{"type":"string","description":"Full cause taxonomy path (comma-delimited from broad to specific)."},"closingMethod":{"type":"string","description":"How the case was closed (Judgment, Mediation, Withdrawal, etc.)."},"amount":{"type":"number","description":"Closing subject amount (CNY)."},"victoryEstimate":{"type":"string","description":"Upstream estimate of the subject's outcome (Won / Lost / Partial / Unknown)."},"charges":{"type":"string","description":"Criminal charges (criminal cases only)."},"chargesDetail":{"type":"string","description":"Full charge taxonomy path (criminal cases only)."},"crimeAmount":{"type":"number","description":"Crime amount (criminal cases only, CNY)."}}},"LitigationParty":{"type":"object","required":["name","role","type"],"properties":{"name":{"type":"string"},"role":{"type":"string","description":"Litigation status (e.g. Plaintiff, Defendant, Person Subject to Application, Third Party)."},"type":{"type":"string","description":"Party type (e.g. Natural Person, Enterprise Organization)."}}}}}}
```

## The LitigationCategory object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationCategory":{"type":"object","required":["cases","stats"],"properties":{"cases":{"type":"array","items":{"$ref":"#/components/schemas/LitigationCase"}},"stats":{"$ref":"#/components/schemas/LitigationStats"}}},"LitigationCase":{"type":"object","description":"A single litigation record. Always includes the structural fields (case number,\ncourt, stage, parties). Optional fields are present only when the upstream service\nreturns them — criminal-specific fields (`charges`, `crimeAmount`) are absent for\nnon-criminal cases.\n","required":["caseType","caseNumber","court","courtLevel","stage","procedure","location","cause","partyRole","parties"],"properties":{"caseType":{"type":"string","description":"Case type label (e.g. `Civil First Instance`, `Criminal First Instance`, `Property Preservation Execution`)."},"caseNumber":{"type":"string"},"court":{"type":"string"},"courtLevel":{"type":"string","description":"Court level (Basic Court / Intermediate / High / Supreme)."},"stage":{"type":"string","description":"Case progress stage as returned by upstream (e.g. `Open`, `Closed`)."},"procedure":{"type":"string","description":"Trial procedure (First Instance, Second Instance, Retrial, Execution)."},"location":{"type":"string"},"cause":{"type":"string"},"partyRole":{"type":"string","description":"Subject's role in this case."},"parties":{"type":"array","items":{"$ref":"#/components/schemas/LitigationParty"}},"filingDate":{"type":"string","format":"date"},"closingDate":{"type":"string","format":"date"},"causeDetail":{"type":"string","description":"Full cause taxonomy path (comma-delimited from broad to specific)."},"closingMethod":{"type":"string","description":"How the case was closed (Judgment, Mediation, Withdrawal, etc.)."},"amount":{"type":"number","description":"Closing subject amount (CNY)."},"victoryEstimate":{"type":"string","description":"Upstream estimate of the subject's outcome (Won / Lost / Partial / Unknown)."},"charges":{"type":"string","description":"Criminal charges (criminal cases only)."},"chargesDetail":{"type":"string","description":"Full charge taxonomy path (criminal cases only)."},"crimeAmount":{"type":"number","description":"Crime amount (criminal cases only, CNY)."}}},"LitigationParty":{"type":"object","required":["name","role","type"],"properties":{"name":{"type":"string"},"role":{"type":"string","description":"Litigation status (e.g. Plaintiff, Defendant, Person Subject to Application, Third Party)."},"type":{"type":"string","description":"Party type (e.g. Natural Person, Enterprise Organization)."}}},"LitigationStats":{"type":"object","description":"Aggregated counts and amounts for a litigation category (or all categories,\nwhen used as the `overall` block). Counts are case counts; amounts are in CNY.\n","required":["total"],"properties":{"total":{"type":"integer","description":"Total cases."},"open":{"type":"integer","description":"Open (unresolved) cases."},"closed":{"type":"integer","description":"Closed cases."},"asPlaintiff":{"type":"integer","description":"Cases where the subject was the plaintiff."},"asDefendant":{"type":"integer","description":"Cases where the subject was the defendant."},"asThirdParty":{"type":"integer","description":"Cases where the subject was a third party."},"totalAmount":{"type":"number","description":"Total monetary amount involved (CNY)."},"openAmount":{"type":"number","description":"Amount tied to open cases (CNY)."},"closedAmount":{"type":"number","description":"Amount tied to closed cases (CNY)."},"causeDistribution":{"type":"string","description":"Distribution of case causes, formatted by upstream as `Cause(count), Cause(count)`."},"locationDistribution":{"type":"string","description":"Distribution by case location."},"yearDistribution":{"type":"string","description":"Distribution by filing year."},"closingMethodDistribution":{"type":"string","description":"Distribution by closing method (e.g. judgment, mediation)."}}}}}}
```

## The LitigationJudgment object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationJudgment":{"type":"object","description":"A public court judgment record matching the search term.","required":["title","caseRef","citation","court","date","parties","judge","judgmentUrl"],"properties":{"title":{"type":"string"},"caseRef":{"type":"string","description":"Source case reference as it appears in the court record."},"citation":{"type":"string","description":"Citation as published by the court. Format varies by jurisdiction\n(e.g. neutral citation in HK/UK/AU; reporter citations elsewhere).\n"},"court":{"type":"string"},"date":{"type":"string","description":"Publication date (ISO 8601)."},"parties":{"type":"string","description":"Full parties description as recorded by the court (bilingual)."},"judge":{"type":"string","description":"Coram (judge / panel) string."},"judgmentUrl":{"type":"string","description":"Public URL to the full judgment."}}}}}}
```

## The LitigationWritParty object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationWritParty":{"type":"object","required":["side","nameRaw"],"properties":{"side":{"type":"string","enum":["plaintiff","defendant","appellant","respondent","applicant","claimant","petitioner","party"]},"nameRaw":{"type":"string","description":"Verbatim party name from the source filing."},"nameEn":{"type":"string","nullable":true},"nameLocal":{"type":"string","nullable":true,"description":"Local-language name as it appears in the source filing\n(e.g. Chinese for `HK`). Script depends on `countryCode`.\n"}}}}}}
```

## The LitigationWrit object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationWrit":{"type":"object","description":"A submitted Writ of Summons. The `caseType` discriminator tells you\nwhich optional fields are populated on this row:\n- `civil_action`: `representation`, `claimNature`, `claimAmount`, `claimCurrency`, `claimAmountRaw`, `filingResponses`\n- `personal_injuries`: `representation`, `claimNature`, `claimAmount`, `claimCurrency`, `claimAmountRaw`, `filingResponses`\n- `civil_appeal`: `lowerCourtCaseNo`, `lowerCourtJudge`, `appellantRepresentation`, `respondentRepresentation`\n- `employees_compensation`: `representation`, `claimNature`\n- `ip`: `representation`, `subjectMatter`, `filingResponses`\n- `other`: only the base fields (`caseNo`, `primaryDate`, `parties`, `remarks`)\n\nThis shape is currently modelled on Hong Kong court records and may be extended\n(new `caseType` values, new optional fields) if the service expands to other regions.\nCallers should treat unrecognised `caseType` values as `other`.\n","required":["caseType","caseNo","primaryDate","parties"],"properties":{"caseType":{"type":"string","enum":["civil_action","personal_injuries","civil_appeal","employees_compensation","ip","other"],"description":"Discriminator for variant-specific fields. See schema description."},"caseNo":{"type":"string"},"primaryDate":{"type":"string","description":"Primary date for the writ (ISO 8601)."},"parties":{"type":"array","items":{"$ref":"#/components/schemas/LitigationWritParty"}},"remarks":{"type":"string","nullable":true},"representation":{"type":"string","nullable":true,"description":"Free-text blob describing legal representation for both sides\n(e.g. \"PLAINTIFF(s) In Person; DEFENDANT(s) Smith & Co\"). Not\nparsed into per-side entries — wording is inconsistent in the\nsource filings.\n"},"claimNature":{"type":"string","nullable":true},"claimAmount":{"type":"number","nullable":true,"description":"Best-effort numeric claim amount derived in code from the Claim\nAmount cell. Null when the cell has no parseable figure (e.g.\n\"Unspecified\") even if claimAmountRaw is set; for cells stacking\nmultiple figures it holds only the last one — prefer claimAmountRaw\nwhen that is present.\n"},"claimCurrency":{"type":"string","nullable":true,"description":"Currency code derived alongside claimAmount; reflects a single\nfigure only.\n"},"claimAmountRaw":{"type":"string","nullable":true,"description":"Verbatim Claim Amount cell text. Some cells stack more than one\ndollar figure (e.g. partial + total on a debt claim); claimAmount\nonly ever holds the last one, so use this field to recover the\nfull breakdown when present. Populated only for rows parsed after\nthis field was introduced, so many historical rows have it null\neven when claimAmount is set — fall back to claimAmount /\nclaimCurrency there.\n"},"filingResponses":{"type":"array","nullable":true,"items":{"type":"object","properties":{"partyName":{"type":"string","nullable":true},"filingDate":{"type":"string","nullable":true},"intentionToContest":{"type":"string","nullable":true}}}},"lowerCourtCaseNo":{"type":"string","nullable":true},"lowerCourtJudge":{"type":"string","nullable":true},"appellantRepresentation":{"type":"string","nullable":true},"respondentRepresentation":{"type":"string","nullable":true},"subjectMatter":{"type":"string","nullable":true}}},"LitigationWritParty":{"type":"object","required":["side","nameRaw"],"properties":{"side":{"type":"string","enum":["plaintiff","defendant","appellant","respondent","applicant","claimant","petitioner","party"]},"nameRaw":{"type":"string","description":"Verbatim party name from the source filing."},"nameEn":{"type":"string","nullable":true},"nameLocal":{"type":"string","nullable":true,"description":"Local-language name as it appears in the source filing\n(e.g. Chinese for `HK`). Script depends on `countryCode`.\n"}}}}}}
```

## The LitigationHearing object

```json
{"openapi":"3.1.0","info":{"title":"Fill Easy Services","version":"1.0.0"},"components":{"schemas":{"LitigationHearing":{"type":"object","description":"A scheduled court hearing. `courtCode` values are drawn from the Hong Kong\ncourt system today; expect this set to expand or diverge per `countryCode`\nas other jurisdictions come online.\n","required":["hearingDate","courtCode"],"properties":{"hearingDate":{"type":"string","description":"Scheduled hearing date (ISO 8601)."},"courtCode":{"type":"string"},"court":{"type":"string","nullable":true,"description":"Specific room / judge label within the court code."},"time":{"type":"string","nullable":true},"caseNumber":{"type":"string","nullable":true,"description":"Case identifier as it appeared in the cause list (whitespace not canonical)."},"parties":{"type":"string","nullable":true,"description":"Free-text parties description."},"nature":{"type":"string","nullable":true,"description":"Hearing type (e.g. Trial, Application, Mention)."}}}}}}
```


# CorpVerify Country Coverage

{% hint style="info" %}
**100** total countries | **10** automated retrieval | **19** searchable
{% endhint %}

### Jurisdiction Availability & Service Levels

Response times depend on the retrieval method:

* **Automated Markets**: < 5 minutes between request and poll.
* **Manual Markets**: Up to 2 days between request and poll.

Requests for unlisted jurisdictions will return an error.

{% tabs %}
{% tab title="Asia (22)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country     | Code | Status | Reg | SH | Fin | Search   | Docs                                                                    |
| ----------- | ---- | ------ | --- | -- | --- | -------- | ----------------------------------------------------------------------- |
| Armenia     | `AM` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#armenia-am-1-document-available-for-retrieval)         |
| Cambodia    | `KH` | Manual | ✅   | ❌  | ❌   | N, ID    | [View 1 sample](#cambodia-kh-1-document-available-for-retrieval)        |
| China       | `CN` | ⚡ Auto | ✅   | ✅  | ✅   | N, ID    | [View 2 samples](#china-cn-2-documents-available-for-retrieval)         |
| Georgia     | `GE` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#georgia-ge-1-document-available-for-retrieval)         |
| Hong Kong   | `HK` | ⚡ Auto | ✅   | ✅  | ✅   | N, ID, D | [View 156 samples](#hong-kong-hk-156-documents-available-for-retrieval) |
| India       | `IN` | ⚡ Auto | ✅   | ✅  | ❌   | N, ID    | [View 1 sample](#india-in-1-document-available-for-retrieval)           |
| Indonesia   | `ID` | ⚡ Auto | ✅   | ✅  | ❌   | N        | [View 2 samples](#indonesia-id-2-documents-available-for-retrieval)     |
| Japan       | `JP` | Manual | ✅   | ✅  | ✅   | N, ID    | [View 2 samples](#japan-jp-2-documents-available-for-retrieval)         |
| Kazakhstan  | `KZ` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#kazakhstan-kz-1-document-available-for-retrieval)      |
| Kyrgyzstan  | `KG` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#kyrgyzstan-kg-1-document-available-for-retrieval)      |
| Laos        | `LA` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#laos-la-1-document-available-for-retrieval)            |
| Macau       | `MO` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#macau-mo-1-document-available-for-retrieval)           |
| Malaysia    | `MY` | ⚡ Auto | ✅   | ✅  | ✅   | N, ID, D | [View 18 samples](#malaysia-my-18-documents-available-for-retrieval)    |
| Maldives    | `MV` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#maldives-mv-1-document-available-for-retrieval)        |
| Mongolia    | `MN` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#mongolia-mn-1-document-available-for-retrieval)        |
| Myanmar     | `MM` | Manual | ✅   | ❌  | ❌   | N, ID    | [View 1 sample](#myanmar-mm-1-document-available-for-retrieval)         |
| Philippines | `PH` | ⚡ Auto | ✅   | ✅  | ✅   | N, ID, D | [View 2 samples](#philippines-ph-2-documents-available-for-retrieval)   |
| Singapore   | `SG` | Manual | ✅   | ✅  | ❌   | N, ID    | [View 11 samples](#singapore-sg-11-documents-available-for-retrieval)   |
| South Korea | `KR` | Manual | ✅   | ✅  | ✅   | N, ID    | [View 3 samples](#south-korea-kr-3-documents-available-for-retrieval)   |
| Taiwan      | `TW` | Manual | ✅   | ✅  | ✅   | —        | [View 1 sample](#taiwan-tw-1-document-available-for-retrieval)          |
| Thailand    | `TH` | Manual | ✅   | ✅  | ✅   | N, ID    | [View 3 samples](#thailand-th-3-documents-available-for-retrieval)      |
| Vietnam     | `VN` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#vietnam-vn-2-documents-available-for-retrieval)       |

***

### Document Types & Samples

<details>

<summary><strong>Armenia</strong> (<code>AM</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **State Registration Extract**

Source: State Register of Legal Entities

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Director Name` · `Shareholder Name` · `Ownership Ratio` · `Filing History` · `Insolvency Information`

</details>

<details>

<summary><strong>Cambodia</strong> (<code>KH</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KH/Company_Register_Extract.pdf)

Source: Ministry of Commerce

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Filing History` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>China</strong> (<code>CN</code>) — 2 documents available for retrieval</summary>

**Company Report With Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CN/Company_Report_With_Financial_Statements.pdf)

Source: Third Party

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Paid-Up Capital` · `Business Activities` · `Shareholder Name` · `Subscribed Capital` · `Ownership Ratio` · `Director Name` · `Director Position` · `Filing History` · `Branches and Subsidiaries` · `Insolvency Information` · `Financial Statement`

<mark style="color:blue;">default</mark> **Company Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CN/Company_Report.pdf)

Source: Third Party

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Paid-Up Capital` · `Business Activities` · `Shareholder Name` · `Subscribed Capital` · `Ownership Ratio` · `Director Name` · `Director Position` · `Filing History` · `Branches and Subsidiaries` · `Mortgages and Charges`

</details>

<details>

<summary><strong>Georgia</strong> (<code>GE</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GE/Company_Register_Extract.pdf)

Source: National Agency of Public Registry (NAPR)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Shareholder Name` · `Ownership Ratio` · `Director Name` · `Director Position` · `Insolvency Information` · `Mortgages and Charges`

</details>

<details>

<summary><strong>Hong Kong</strong> (<code>HK</code>) — 156 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Particulars** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Company_Particulars.pdf)

Source: Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Articles of Association**

Source: Companies Registry

***

**Approved Amalgamation Proposal** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/Approved_Amalgamation_Proposal.pdf)

Source: Companies Registry

***

**Certificate on Solvency Statement by Directors of Amalgamating Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/Certificate_on_Solvency_Statement_by_Directors_of_Amalgamating_Company.pdf)

Source: Companies Registry

***

**Certificate of Approval of Amalgamation by Directors of Amalgamating Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/NAMA3.pdf)

Source: Companies Registry

***

**Notice of Appointment of Directors of Amalgamated Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/NAMA4.pdf)

Source: Companies Registry

***

**Certificate on Claims of Creditors by Directors of Amalgamated Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/NAMA5.pdf)

Source: Companies Registry

***

**Notice of Application to Court to Intervene in Amalgamation Proposal** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Amalgamation/NAMA6.pdf)

Source: Companies Registry

***

**Annual Return by Certificate of No Change**

Source: Companies Registry

***

**Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Annual_Return.pdf)

Source: Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Business Activities` · `Registered Office Address` · `Share Information` · `Paid-Up Capital` · `Shareholder Name` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Company Secretary` · `Mortgages and Charges`

***

**Statement of Revision of Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/NAC3.pdf)

Source: Companies Registry

***

**Notice of Alteration of Accounting Reference Date** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/NAC4.pdf)

Source: Companies Registry

***

**Notice of Alteration of Company's Articles** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Articles_of_Members/NAA1.pdf)

Source: Companies Registry

***

**Notice of Alteration of Company's Objects** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Articles_of_Members/NAA2.pdf)

Source: Companies Registry

***

**Notice of Alteration of Certain Articles by Existing Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Articles_of_Members/NAA3.pdf)

Source: Companies Registry

***

**Notice of Change of Company Status** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Articles_of_Members/NAA4.pdf)

Source: Companies Registry

***

**Notice of Increase in Number of Members of Company Limited by Guarantee** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Articles_of_Members/NMEM1.pdf)

Source: Companies Registry

***

**Notice of Removal of Auditor** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Auditors/NA1.pdf)

Source: Companies Registry

***

**Notification of Resignation of Auditor** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Auditors/NA2.pdf)

Source: Companies Registry

***

**Notice of Change of Company Name** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Change_of_Company_Name/NNC2.pdf)

Source: Companies Registry

***

**Notice of Court Order Restraining Company from Use of Name** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Change_of_Company_Name/NNC4.pdf)

Source: Companies Registry

***

**Application for Deregistration of Private Company or Company Limited by Guarantee** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Deregistration/NDR1.pdf)

Source: Companies Registry

***

**Notification of Changes of Secretary and Directors**

Source: Companies Registry

***

**Return of First Directors and Secretary**

Source: Companies Registry

***

**Notice of Resignation of Director or Secretary**

Source: Companies Registry

***

**Notice of Change of Directors or Secretary or in their Particulars**

Source: Companies Registry

***

**Notice of Change of Company Secretary and Director (Appointment/Cessation)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND2A.pdf)

Source: Companies Registry

***

**Notice of Change in Particulars of Company Secretary and Director** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND2B.pdf)

Source: Companies Registry

***

**Notice of Resignation of Company Secretary and Director** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND4.pdf)

Source: Companies Registry

***

**Notice of Change of Reserve Director (Nomination/Cessation)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND5.pdf)

Source: Companies Registry

***

**Notice of Change in Particulars of Reserve Director** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND7.pdf)

Source: Companies Registry

***

**Notice of Resignation of Reserve Director** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Directors_and_Company_Secretary/ND8.pdf)

Source: Companies Registry

***

**Incorporation Form (Company Limited by Shares)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Incorporation_of_Local_Companies/NNC1.pdf)

Source: Companies Registry

***

**Incorporation Form (Company Not Limited by Shares)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Incorporation_of_Local_Companies/NNC1G.pdf)

Source: Companies Registry

***

**Consent to Act as First Director** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Incorporation_of_Local_Companies/NNC3.pdf)

Source: Companies Registry

***

**Business Registration (Incorporation)**

Source: Companies Registry

***

**Notice of Appointment of Inspector** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Inspectors/NIN1.pdf)

Source: Companies Registry

***

**Notice of Delivery of Final Report by Inspector** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Inspectors/NIN2.pdf)

Source: Companies Registry

***

**Notice of Delivery of Interim Report by Inspector** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Inspectors/NIN3.pdf)

Source: Companies Registry

***

**Certificate of Registration of Charge** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/Certificate_of_Registration_of_Charge.pdf)

Source: Companies Registry

***

**Memorandum of Satisfaction**

Source: Companies Registry

***

**Particulars of a Mortgage or Charge Created by a Local Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/FIV.pdf)

Source: Companies Registry

***

**Statement of Particulars of Charge** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM1.pdf)

Source: Companies Registry

***

**Notification of Payment/Satisfaction of Debt, Release from Charge, etc.** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM2.pdf)

Source: Companies Registry

***

**Notice of Mortgagee Entering into Possession of Property** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM3.pdf)

Source: Companies Registry

***

**Notice of Mortgagee Going out of Possession of Property** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM4.pdf)

Source: Companies Registry

***

**Notice of Appointment of Receiver or Manager** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM5.pdf)

Source: Companies Registry

***

**Notice of Cessation of Appointment of Receiver or Manager** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM6.pdf)

Source: Companies Registry

***

**Notice of Change in Particulars of Receiver, Manager or Mortgagee in Possession of Property** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM7.pdf)

Source: Companies Registry

***

**Statement of Particulars of Charge (For Debenture Forming Part of a Series)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM8.pdf)

Source: Companies Registry

***

**Statement of Particulars of Issue of Debentures of a Series** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM9.pdf)

Source: Companies Registry

***

**Statement of Particulars of Charge (For Re-domiciled Company – Charges before Re-domiciliation Date)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Mortgage%26Charges/NM10.pdf)

Source: Companies Registry

***

**Memorandum & Articles of Association**

Source: Companies Registry

***

**Statutory Declaration**

Source: Companies Registry

***

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Re-domiciliation/Certificate_of_Incorporation.pdf)

Source: Companies Registry

***

**Re-domiciliation Form** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Re-domiciliation/NNC6.pdf)

Source: Companies Registry

***

**Consent to be a Director (Re-domiciled Company)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Re-domiciliation/NNC3RD.pdf)

Source: Companies Registry

***

**Business Registration (Re-domiciliation)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Re-domiciliation/IRBR5.pdf)

Source: Companies Registry

***

**Application for Registration as Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN1.pdf)

Source: Companies Registry

***

**Notification of Termination of Authorization of Authorized Representative of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN2.pdf)

Source: Companies Registry

***

**Annual Return of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN3.pdf)

Source: Companies Registry

***

**Return of Change in the Charter, Statutes or Memorandum etc. of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN5.pdf)

Source: Companies Registry

***

**Return of Change of Company Secretary and Director of Registered Non-Hong Kong Company (Appointment/Cessation)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN6.pdf)

Source: Companies Registry

***

**Return of Change in Particulars of Company Secretary and Director of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN7.pdf)

Source: Companies Registry

***

**Return of Change of Authorized Representative of Registered Non-Hong Kong Company (Appointment/Cessation)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN8.pdf)

Source: Companies Registry

***

**Return of Change in Particulars of Authorized Representative of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN8C.pdf)

Source: Companies Registry

***

**Return of Change of Address of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN9.pdf)

Source: Companies Registry

***

**Return of Alteration of Corporate Name of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN10.pdf)

Source: Companies Registry

***

**Notice of Commencement of Liquidation and Appointment/Cessation and Change in Particulars of Liquidator/Provisional Liquidator of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN11.pdf)

Source: Companies Registry

***

**Return of Approved Name for Carrying on Business in Hong Kong by Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN12.pdf)

Source: Companies Registry

***

**Notice of Cessation of Place of Business in Hong Kong of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN13.pdf)

Source: Companies Registry

***

**Notice of Dissolution of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN14.pdf)

Source: Companies Registry

***

**Statement of Revision of Accounts** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN15.pdf)

Source: Companies Registry

***

**Return of Change of Place of Incorporation of Registered Non-Hong Kong Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/NN16.pdf)

Source: Companies Registry

***

**Business Registration (Non-Hong Kong Company)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Non_Hong_Kong_Companies/IRBR2.pdf)

Source: Companies Registry

***

**Notice of Registered Office and any Change Thereof**

Source: Companies Registry

***

**Notice of Change of Address of Registered Office** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Offices_and_Location_of_Registeres/NR1.pdf)

Source: Companies Registry

***

**Notice of Location of Registers and Company Records** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Offices_and_Location_of_Registeres/NR2.pdf)

Source: Companies Registry

***

**Notice Relating to Branch Register of Debenture Holders** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Offices_and_Location_of_Registeres/NR3.pdf)

Source: Companies Registry

***

**Notice Relating to Branch Register of Members** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registered_Offices_and_Location_of_Registeres/NR4.pdf)

Source: Companies Registry

***

**Application for Registration of Eligible Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Registration_of_Eligible_Companies/NNC5.pdf)

Source: Companies Registry

***

**Application for Re-registration as Company Limited by Shares** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Re-registration/NU1.pdf)

Source: Companies Registry

***

**Return of Allotment** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC1.pdf)

Source: Companies Registry

***

**Return of Share Redemption or Buy-back** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC2.pdf)

Source: Companies Registry

***

**Notice of Application to Court for Cancellation of Special Resolution for Payment out of Capital** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC3.pdf)

Source: Companies Registry

***

**Notice of Permitted Share Commission** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC6.pdf)

Source: Companies Registry

***

**Notice of Application to Court for Restraining the Giving of Financial Assistance for Acquisition of Shares** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC9.pdf)

Source: Companies Registry

***

**Notice of Alteration of Share Capital** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC11.pdf)

Source: Companies Registry

***

**Notice of Redenomination of Share Capital** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC13.pdf)

Source: Companies Registry

***

**Notice of Reconversion of Stock into Shares** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC14.pdf)

Source: Companies Registry

***

**Notice of Variation of Rights Attached to Shares** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC15.pdf)

Source: Companies Registry

***

**Notice of Variation of Rights of a Class of Members (Company Without a Share Capital)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC16.pdf)

Source: Companies Registry

***

**Solvency Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC17.pdf)

Source: Companies Registry

***

**Notice of Application to Court for Cancellation of Special Resolution for Reduction of Share Capital** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC18.pdf)

Source: Companies Registry

***

**Return of Reduction of Share Capital (by Special Resolution Supported by Solvency Statement)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC19.pdf)

Source: Companies Registry

***

**Return of Reduction of Share Capital (Confirmed by Court)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC20.pdf)

Source: Companies Registry

***

**Return of Particulars of Members of Re-domiciled Company as at Re-domiciliation Date** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC21.pdf)

Source: Companies Registry

***

**Return of Sale or Transfer of Treasury Shares (For Listed Company Only)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC22.pdf)

Source: Companies Registry

***

**Return of Cancellation of Treasury Shares (For Listed Company Only)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NSC23.pdf)

Source: Companies Registry

***

**Return of Allotment of Debentures or Debenture Stock** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Capital/NDB1.pdf)

Source: Companies Registry

***

**Notice to Minority Shareholders – Takeover (Right of Offeror to Buy out Minority Shareholders)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NRE1.pdf)

Source: Companies Registry

***

**Notice to Minority Shareholders – Takeover (Right of Minority Shareholders to be Bought out by Offeror)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NRE2.pdf)

Source: Companies Registry

***

**Notice to Minority Shareholders – General Offer for Share Buy-back (Right of Repurchasing Company to Buy out Minority Shareholders)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NRE3.pdf)

Source: Companies Registry

***

**Notice to Minority Shareholders – General Offer for Share Buy-back (Right of Minority Shareholders to be Bought out by Repurchasing Company)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NRE4.pdf)

Source: Companies Registry

***

**Application for New Share Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NS1.pdf)

Source: Companies Registry

***

**Notice of Intention to Issue New Share Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NS3.pdf)

Source: Companies Registry

***

**Notice of Cancellation of Original Share Certificate and Issue of New Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Share_Acquisition_or_Buy-back/NS4.pdf)

Source: Companies Registry

***

**Notice to Company of Appointment of Receiver or Manager** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Receivership/NRC1.pdf)

Source: Companies Registry

***

**Statement of Affairs** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Receivership/NRC2.pdf)

Source: Companies Registry

***

**Receiver or Manager's Abstract of Receipts and Payments** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Receivership/NRC3.pdf)

Source: Companies Registry

***

**Certificate of Solvency** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW1.pdf)

Source: Companies Registry

***

**Statement of Voluntary Winding Up under Special Procedure in Case of Inability to Continue Business** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW2.pdf)

Source: Companies Registry

***

**Notice of Appointment of Liquidator or Provisional Liquidator** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW3.pdf)

Source: Companies Registry

***

**Notice of Change in Particulars of Liquidator or Provisional Liquidator** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW4.pdf)

Source: Companies Registry

***

**Notice of Cessation to Act as Liquidator or Provisional Liquidator** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW5.pdf)

Source: Companies Registry

***

**Certificate of Release of Liquidator** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Winding_Up/NW6.pdf)

Source: Companies Registry

***

**Open-ended Fund Company - Incorporation Form**

Source: Companies Registry

***

**Business Registration (Open-ended Fund Company)**

Source: Companies Registry

***

**Open-ended Fund Company - Re-domiciliation Form**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Removal of Auditor**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Resignation of Auditor**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change of Company Name**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Appointment of Director and Process Agent**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Cessation of Appointment of Director and Process Agent**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change in Particulars of Director**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Resignation of Director**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change in Particulars of Process Agent**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Alteration of Instrument of Incorporation**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change of Address of Registered Office**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Location of Registers and Records**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Appointment of Receiver or Manager or Mortgagee**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Cessation of Appointment of Receiver or Manager**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change in Particulars of Receiver, Manager or Mortgagee**

Source: Companies Registry

***

**Open-ended Fund Company - Statement of Affairs**

Source: Companies Registry

***

**Open-ended Fund Company - Receiver or Manager's Abstract of Receipts and Payments**

Source: Companies Registry

***

**Notice to Open-ended Fund Company of Appointment of Receiver or Manager**

Source: Companies Registry

***

**Open-ended Fund Company - Certificate of Solvency**

Source: Companies Registry

***

**Open-ended Fund Company - Statement of Voluntary Winding Up under Special Procedure**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Appointment of Liquidator or Provisional Liquidator**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Change in Particulars of Liquidator**

Source: Companies Registry

***

**Open-ended Fund Company - Notice of Cessation to Act as Liquidator or Provisional Liquidator**

Source: Companies Registry

***

**Open-ended Fund Company - Certificate of Release of Liquidator**

Source: Companies Registry

***

**Application for Registration of Limited Partnership Fund**

Source: Companies Registry

***

**Application for Registration of a Specified Fund as a Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Change of Name of Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Change in Address, Location of Records and Investment Scope of Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Change in Particulars of General Partner, Authorized Representative, Investment Manager and Responsible Person of Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Change of General Partner, Authorized Representative, Investment Manager and Responsible Person of Limited Partnership Fund**

Source: Companies Registry

***

**Annual Return of Limited Partnership Fund**

Source: Companies Registry

***

**Notice of Court Order Restraining a Limited Partnership Fund from Use of Name**

Source: Companies Registry

***

**Application for Deregistration of Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Dissolution of Limited Partnership Fund**

Source: Companies Registry

***

**Notification of Resignation of Authorized Representative of Limited Partnership Fund**

Source: Companies Registry

***

**Application for Registration of a Non-Hong Kong Fund as a Limited Partnership Fund**

Source: Companies Registry

***

**Business Registration Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Business_Registration_Certificate.pdf)

Source: Inland Revenue Department

***

**Litigation Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HK/Litigation_Search.pdf)

Source: Hong Kong Court Records

Contents: `Court Judgments` · `Writs of Summons` · `Court Hearings`

</details>

<details>

<summary><strong>India</strong> (<code>IN</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Master Data** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IN/Company_Master_Data.pdf)

Source: Ministry of Corporate Affairs

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Jurisdiction` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Company Secretary` · `Registered Agent` · `Registered Agent Contact` · `Filing History` · `Mortgages and Charges`

</details>

<details>

<summary><strong>Indonesia</strong> (<code>ID</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/ID/Company_Profile.pdf)

Source: Ministry of Law and Human Rights

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Company Status` · `Registered Office Address` · `Jurisdiction` · `Notary Name` · `Notary Deed Number` · `Notary Deed Date` · `Business Activities` · `Authorized Capital` · `Subscribed Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Volume` · `Director Name` · `Director Position` · `Commissioner Name` · `Commissioner Position`

**Sole Proprietorship Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/ID/Sole_Proprietorship_Profile.pdf)

Source: Ministry of Law and Human Rights (Sole Proprietorship)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Business Activities` · `Business Capital` · `Owner Name` · `Owner Position` · `Beneficial Owner Name` · `Beneficial Owner Criteria`

</details>

<details>

<summary><strong>Japan</strong> (<code>JP</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Certificate of Registered Matters** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JP/Certificate_of_Registered_Matters.pdf)

Source: Registration Information Service

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position` · `Share Information` · `Branches and Subsidiaries`

**Financial Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JP/Financial_Statement.pdf)

Source: EDINET

Contents: `Company Name` · `Registered Office Address` · `Director Name` · `Director Position` · `Financial Statement`

</details>

<details>

<summary><strong>Kazakhstan</strong> (<code>KZ</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KZ/Company_Report.pdf)

Source: Bureau of National Statistics

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Shareholder Name`

</details>

<details>

<summary><strong>Kyrgyzstan</strong> (<code>KG</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KG/Company_Report.pdf)

Source: Ministry of Justice

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name` · `Shareholder Name`

</details>

<details>

<summary><strong>Laos</strong> (<code>LA</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/LA/Company_Register_Extract.pdf)

Source: National Enterprise Database (MOIC)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Status` · `Registered Office Address` · `Director Name`

</details>

<details>

<summary><strong>Macau</strong> (<code>MO</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Registry Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MO/Commercial_Registry_Certificate.pdf)

Source: Commercial and Movable Property Registry Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Volume` · `Filing History`

</details>

<details>

<summary><strong>Malaysia</strong> (<code>MY</code>) — 18 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Company_Profile.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Share Information` · `Shareholder Name` · `Ownership Volume` · `Director Name` · `Director Position` · `Company Secretary` · `Financial Statement`

***

**Particulars of Directors/Officers** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particulars_of_Directors_Officers.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Director Position` · `Company Secretary`

***

**Particular of Shareholders** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particular_of_Shareholders.pdf)

Source: Companies Commission of Malaysia

Contents: `Shareholder Name` · `Ownership Volume`

***

**Particulars of Registered Address** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particulars_of_Registered_Address.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Company Status` · `Registered Office Address` · `Business Activities`

***

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Certificate_of_Incorporation.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type`

***

**Shareholder Listing and Analysis** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Shareholder_Listing_And_Analysis.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume`

***

**Attestation of Company Good Standing (ACGS)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Attestation_of_Company_Good_Standing.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status`

***

**Company Charges** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Company_Charges.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Mortgages and Charges`

***

**Certificate of Foreign Company** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Certificate_of_Foreign_Company.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Jurisdiction`

***

**Certificate Change of Company Name** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Certificate_Change_of_Company_Name.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type`

***

**Certificate of Conversion** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Certificate_of_Conversion.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type`

***

**Particulars of Share Capital** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particulars_of_Share_Capital.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Share Information`

***

**Particulars of Company Secretary** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particulars_of_Company_Secretary.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Company Secretary`

***

**Particulars of Change of Company Name** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Particulars_of_Change_of_Company_Name.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type`

***

**Financial Comparison 2 Years** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Financial_Comparison_2_Years.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Financial Statement`

***

**Financial Comparison 3 Years** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Financial_Comparison_3_Years.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Financial Statement`

***

**Financial Comparison 5 Years** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Financial_Comparison_5_Years.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Financial Statement`

***

**Financial Comparison 10 Years** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MY/Financial_Comparison_10_Years.pdf)

Source: Companies Commission of Malaysia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Financial Statement`

</details>

<details>

<summary><strong>Maldives</strong> (<code>MV</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Search Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MV/Company_Search_Extract.pdf)

Source: Ministry of Economic Development & Trade — Business Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name`

</details>

<details>

<summary><strong>Mongolia</strong> (<code>MN</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **State registration information of legal entities** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MN/State_registration_information_of_legal_entities.pdf)

Source: General Authority for State Registration

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Business Activities` · `Director Name` · `Director Position` · `Director Nationality` · `Shareholder Name` · `Beneficial Owner Name`

</details>

<details>

<summary><strong>Myanmar</strong> (<code>MM</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Profile**

Source: Directorate of Investment and Company Administration

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Business Activities`

</details>

<details>

<summary><strong>Philippines</strong> (<code>PH</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **General Information Sheet** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/PH/General_Information_Sheet.pdf)

Source: Securities and Exchange Commission

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Paid-Up Capital` · `Subscribed Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Company Secretary` · `Branches and Subsidiaries`

**Audited Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/PH/Annual_Financial_Statement.pdf)

Source: Securities and Exchange Commission

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Director Name` · `Director Position` · `Commissioner Name` · `Financial Statement`

</details>

<details>

<summary><strong>Singapore</strong> (<code>SG</code>) — 11 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Business Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SG/Business_Profile.pdf)

Source: Accounting and Corporate Regulatory Authority

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Registered Agent` · `Registered Agent Contact`

***

**Certificate of Good Standing**

Source: Accounting and Corporate Regulatory Authority

***

**Certificate Confirming Incorporation of Company**

Source: Accounting and Corporate Regulatory Authority

***

**People Profile**

Source: Accounting and Corporate Regulatory Authority

***

**Constitution**

Source: Accounting and Corporate Regulatory Authority

***

**Annual Returns**

Source: Accounting and Corporate Regulatory Authority

***

**Financial Statements**

Source: Accounting and Corporate Regulatory Authority

***

**Register of Members**

Source: Accounting and Corporate Regulatory Authority

***

**Register of Directors**

Source: Accounting and Corporate Regulatory Authority

***

**Register of Secretaries**

Source: Accounting and Corporate Regulatory Authority

***

**Register of Business/Company Documents**

Source: Accounting and Corporate Regulatory Authority

</details>

<details>

<summary><strong>South Korea</strong> (<code>KR</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Audit Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KR/Audit_Report.pdf)

Source: Financial Supervisory Service

Contents: `Company Name` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Director Name` · `Shareholder Name` · `Ownership Ratio` · `Financial Statement`

***

**Business Registration Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KR/Business_Registration_Certificate.pdf)

Source: Financial Supervisory Service

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name`

***

**Corporate Registry Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KR/Corporate_Registry_Extract.pdf)

Source: Korean Supreme Court Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Director Name` · `Director Position` · `Company Status`

</details>

<details>

<summary><strong>Taiwan</strong> (<code>TW</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Credit Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/TW/Company_Credit_Report.pdf)

Source: Ministry of Economic Affairs

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Paid-Up Capital` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Branches and Subsidiaries` · `Mortgages and Charges` · `Financial Statement`

</details>

<details>

<summary><strong>Thailand</strong> (<code>TH</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Juristic Person Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/TH/Juristic_Person_Profile.pdf)

Source: Department of Business Development

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Authorized Capital` · `Paid-Up Capital` · `Business Activities` · `Director Name` · `Director Position` · `Financial Statement`

***

**Financial Statement Package**

Source: Department of Business Development

***

**Shareholder List Package** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/TH/Shareholder_List_Package.pdf)

Source: Department of Business Development

Contents: `Company Name` · `Unique Identifier` · `Share Information` · `Authorized Capital` · `Shareholder Name` · `Director Nationality` · `Ownership Volume` · `Ownership Ratio`

</details>

<details>

<summary><strong>Vietnam</strong> (<code>VN</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Business Registration Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VN/Business_Registration_Certificate.pdf)

Source: Department of Planning and Investment

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Date of Incorporation` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Branches and Subsidiaries`

**Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VN/Financial_Statements.pdf)

Source: Department of Planning and Investment

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Director Name` · `Director Position` · `Financial Statement`

</details>
{% endtab %}

{% tab title="Europe (44)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country                | Code | Status | Reg | SH | Fin | Search   | Docs                                                                             |
| ---------------------- | ---- | ------ | --- | -- | --- | -------- | -------------------------------------------------------------------------------- |
| Austria                | `AT` | Manual | ✅   | ✅  | ✅   | —        | [View 3 samples](#austria-at-3-documents-available-for-retrieval)                |
| Belgium                | `BE` | Manual | ✅   | ❌  | ✅   | —        | [View 2 samples](#belgium-be-2-documents-available-for-retrieval)                |
| Bosnia and Herzegovina | `BA` | Manual | ✅   | ✅  | ❌   | —        | [View 3 samples](#bosnia-and-herzegovina-ba-3-documents-available-for-retrieval) |
| Bulgaria               | `BG` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#bulgaria-bg-1-document-available-for-retrieval)                 |
| Canary Islands         | `IC` | Manual | ✅   | ❌  | ✅   | —        | [View 2 samples](#canary-islands-ic-2-documents-available-for-retrieval)         |
| Croatia                | `HR` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#croatia-hr-2-documents-available-for-retrieval)                |
| Cyprus                 | `CY` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#cyprus-cy-1-document-available-for-retrieval)                   |
| Czech Republic         | `CZ` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#czech-republic-cz-2-documents-available-for-retrieval)         |
| Denmark                | `DK` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#denmark-dk-2-documents-available-for-retrieval)                |
| Estonia                | `EE` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#estonia-ee-2-documents-available-for-retrieval)                |
| Faroe Islands          | `FO` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#faroe-islands-fo-1-document-available-for-retrieval)            |
| Finland                | `FI` | Manual | ✅   | ❌  | ✅   | —        | [View 2 samples](#finland-fi-2-documents-available-for-retrieval)                |
| France                 | `FR` | Manual | ✅   | ✅  | ✅   | N, ID    | [View 6 samples](#france-fr-6-documents-available-for-retrieval)                 |
| Germany                | `DE` | Manual | ✅   | ✅  | ✅   | N, ID    | [View 2 samples](#germany-de-2-documents-available-for-retrieval)                |
| Greece                 | `GR` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#greece-gr-1-document-available-for-retrieval)                   |
| Guernsey               | `GG` | Manual | ✅   | ❌  | ❌   | —        | [View 2 samples](#guernsey-gg-2-documents-available-for-retrieval)               |
| Hungary                | `HU` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#hungary-hu-1-document-available-for-retrieval)                  |
| Iceland                | `IS` | Manual | ✅   | ✅  | ✅   | —        | [View 4 samples](#iceland-is-4-documents-available-for-retrieval)                |
| Ireland                | `IE` | Manual | ✅   | ✅  | ✅   | —        | [View 3 samples](#ireland-ie-3-documents-available-for-retrieval)                |
| Isle of Man            | `IM` | Manual | ✅   | ✅  | ❌   | —        | [View 6 samples](#isle-of-man-im-6-documents-available-for-retrieval)            |
| Italy                  | `IT` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#italy-it-1-document-available-for-retrieval)                    |
| Jersey                 | `JE` | Manual | ✅   | ✅  | ❌   | —        | [View 3 samples](#jersey-je-3-documents-available-for-retrieval)                 |
| Latvia                 | `LV` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#latvia-lv-1-document-available-for-retrieval)                   |
| Liechtenstein          | `LI` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#liechtenstein-li-1-document-available-for-retrieval)            |
| Lithuania              | `LT` | Manual | ✅   | ✅  | ✅   | —        | [View 1 sample](#lithuania-lt-1-document-available-for-retrieval)                |
| Luxembourg             | `LU` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#luxembourg-lu-1-document-available-for-retrieval)               |
| Malta                  | `MT` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#malta-mt-1-document-available-for-retrieval)                    |
| Moldova                | `MD` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#moldova-md-1-document-available-for-retrieval)                  |
| Monaco                 | `MC` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#monaco-mc-1-document-available-for-retrieval)                   |
| Netherlands            | `NL` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#netherlands-nl-1-document-available-for-retrieval)              |
| North Macedonia        | `MK` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#north-macedonia-mk-1-document-available-for-retrieval)          |
| Norway                 | `NO` | Manual | ✅   | ❌  | ✅   | —        | [View 2 samples](#norway-no-2-documents-available-for-retrieval)                 |
| Poland                 | `PL` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#poland-pl-1-document-available-for-retrieval)                   |
| Portugal               | `PT` | Manual | ✅   | ✅  | ✅   | —        | [View 1 sample](#portugal-pt-1-document-available-for-retrieval)                 |
| Romania                | `RO` | Manual | ✅   | ✅  | ✅   | —        | [View 2 samples](#romania-ro-2-documents-available-for-retrieval)                |
| Russia                 | `RU` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#russia-ru-1-document-available-for-retrieval)                   |
| Serbia                 | `RS` | Manual | ✅   | ✅  | ✅   | —        | [View 1 sample](#serbia-rs-1-document-available-for-retrieval)                   |
| Slovakia               | `SK` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#slovakia-sk-1-document-available-for-retrieval)                 |
| Slovenia               | `SI` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#slovenia-si-1-document-available-for-retrieval)                 |
| Spain                  | `ES` | Manual | ✅   | ❌  | ✅   | —        | [View 2 samples](#spain-es-2-documents-available-for-retrieval)                  |
| Sweden                 | `SE` | Manual | ✅   | ✅  | ✅   | —        | [View 6 samples](#sweden-se-6-documents-available-for-retrieval)                 |
| Switzerland            | `CH` | Manual | ✅   | ❌  | ❌   | —        | [View 1 sample](#switzerland-ch-1-document-available-for-retrieval)              |
| Turkey                 | `TR` | Manual | ✅   | ✅  | ❌   | —        | [View 1 sample](#turkey-tr-1-document-available-for-retrieval)                   |
| United Kingdom         | `GB` | ⚡ Auto | ✅   | ❌  | ✅   | N, ID, D | [View 26 samples](#united-kingdom-gb-26-documents-available-for-retrieval)       |

***

### Document Types & Samples

<details>

<summary><strong>Austria</strong> (<code>AT</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AT/Company_Register_Extract.pdf)

Source: Austrian Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Jurisdiction` · `Authorized Capital` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Volume` · `Financial Statement` · `Filing History`

***

**Annual Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AT/Financial_Statements.pdf)

Source: Austrian Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Financial Statement`

***

**Company Filing** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AT/Company_Filing.pdf)

Source: Austrian Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Shareholder Name` · `Ownership Volume` · `Director Name`

</details>

<details>

<summary><strong>Belgium</strong> (<code>BE</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Public Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BE/Public_Search.pdf)

Source: Crossroads Bank for Enterprises

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Director Name` · `Shareholder Name` · `Business Activities` · `Branches and Subsidiaries`

**Annual Account** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BE/Annual_Account.pdf)

Source: Crossroads Bank for Enterprises

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Director Name` · `Financial Statement`

</details>

<details>

<summary><strong>Bosnia and Herzegovina</strong> (<code>BA</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BA/Company_Register_Extract.pdf)

Source: Registers of Business Entities

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status`

***

**Capital Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BA/Capital_Information.pdf)

Source: Registers of Business Entities

Contents: `Company Name` · `Unique Identifier` · `Authorized Capital` · `Shareholder Name` · `Ownership Volume`

***

**Founders Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BA/Founders_Information.pdf)

Source: Registers of Business Entities

Contents: `Company Name` · `Unique Identifier` · `Shareholder Name` · `Ownership Volume`

</details>

<details>

<summary><strong>Bulgaria</strong> (<code>BG</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **State of play search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BG/State_of_play_search.pdf)

Source: Bulgarian Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Director Name` · `Business Activities` · `Insolvency Information`

</details>

<details>

<summary><strong>Canary Islands</strong> (<code>IC</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Information Note** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IC/Commercial_Information_Note.pdf)

Source: Registro Mercantil Central

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Director Name` · `Filing History` · `Insolvency Information` · `Branches and Subsidiaries`

**Account Deposit** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IC/Account_Deposit.pdf)

Source: Registro Mercantil Central

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name` · `Director Position` · `Financial Statement`

</details>

<details>

<summary><strong>Croatia</strong> (<code>HR</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Subject Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HR/Subject_Search.pdf)

Source: Croatian Court Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Company Status` · `Business Activities` · `Shareholder Name` · `Director Name` · `Director Position` · `Filing History`

**Financial Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HR/Financial_Report.pdf)

Source: Croatian Court Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Financial Statement`

</details>

<details>

<summary><strong>Cyprus</strong> (<code>CY</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CY/Organization_Details.pdf)

Source: Department of Registrar of Companies and Intellectual Property

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Jurisdiction` · `Authorized Capital` · `Director Name` · `Director Position` · `Company Secretary` · `Shareholder Name` · `Registered Agent` · `Registered Agent Contact`

</details>

<details>

<summary><strong>Czech Republic</strong> (<code>CZ</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Register** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CZ/Commercial_Register.pdf)

Source: Czech Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Shareholder Name` · `Subscribed Capital` · `Ownership Ratio` · `Director Name`

**Financial Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CZ/Financial_Statement.pdf)

Source: Czech Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name` · `Shareholder Name` · `Financial Statement`

</details>

<details>

<summary><strong>Denmark</strong> (<code>DK</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Public Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/DK/Public_Search.pdf)

Source: Central Business Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Shareholder Name` · `Ownership Ratio` · `Director Name` · `Filing History`

**Financial Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/DK/Financial_Report.pdf)

Source: Central Business Register

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Director Name` · `Financial Statement`

</details>

<details>

<summary><strong>Estonia</strong> (<code>EE</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Search for a legal person** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/EE/Search_for_a_legal_person.pdf)

Source: Centre of Registers and Information Systems

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Shareholder Name` · `Subscribed Capital` · `Ownership Ratio` · `Beneficial Owner Name` · `Director Name` · `Director Position` · `Filing History`

**Annual Reports** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/EE/Annual_Reports.pdf)

Source: Centre of Registers and Information Systems

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Business Activities` · `Director Name` · `Financial Statement`

</details>

<details>

<summary><strong>Faroe Islands</strong> (<code>FO</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FO/Company_Register_Extract.pdf)

Source: Skráseting Føroya (Faroese Business Register)

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position` · `Filing History`

</details>

<details>

<summary><strong>Finland</strong> (<code>FI</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Trade Register Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FI/Trade_Register_Information.pdf)

Source: Finnish Patent and Registration Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position` · `Filing History`

**Financial Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FI/Financial_Statement.pdf)

Source: Finnish Patent and Registration Office

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Financial Statement`

</details>

<details>

<summary><strong>France</strong> (<code>FR</code>) — 6 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Extract from the KBIS register** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Extract_from_the_KBIS_register.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position`

***

**Change History** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Change_History.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Business Activities` · `Filing History`

***

**Debt Status** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Debt_Status.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Insolvency Information`

***

**Deeds and Statutes** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Deeds_and_Statutes.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name`

***

**Annual Accounts** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Annual_Accounts.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Director Name` · `Commissioner Name` · `Financial Statement`

***

**Legal Situation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/FR/Legal_Situation.pdf)

Source: Infogreffe

Contents: `Company Name` · `Unique Identifier` · `Company Status` · `Insolvency Information`

</details>

<details>

<summary><strong>Germany</strong> (<code>DE</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Register Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/DE/Register_Information.pdf)

Source: German Company Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Business Activities` · `Authorized Capital` · `Director Name` · `Branches and Subsidiaries` · `Insolvency Information`

**Annual Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/DE/Annual_financial_statements.tiff)

Source: German Company Register

Contents: `Financial Statement`

</details>

<details>

<summary><strong>Greece</strong> (<code>GR</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Data Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GR/Data_Search.pdf)

Source: General Commercial Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Shareholder Name` · `Ownership Ratio` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Guernsey</strong> (<code>GG</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GG/Company_Register_Extract.pdf)

Source: Guernsey Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Director Position` · `Filing History`

**Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GG/Annual_Return.pdf)

Source: Guernsey Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Registered Office Address` · `Business Activities` · `Director Name`

</details>

<details>

<summary><strong>Hungary</strong> (<code>HU</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/HU/Company_Extract.pdf)

Source: Hungarian Company Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Iceland</strong> (<code>IS</code>) — 4 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Register Overview** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IS/Register_Overview.pdf)

Source: Iceland Revenue and Customs

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position`

***

**Annual Accounts Register** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IS/Annual_Accounts_Register.pdf)

Source: Iceland Revenue and Customs

***

**Foundation Data** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IS/Foundation_Data.pdf)

Source: Iceland Revenue and Customs

Contents: `Company Name` · `Date of Incorporation` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Share Information` · `Shareholder Name` · `Ownership Volume` · `Director Name` · `Director Position`

***

**Articles of Association** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IS/Articles_of_Association.pdf)

Source: Iceland Revenue and Customs

Contents: `Company Name` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Share Information` · `Director Position`

</details>

<details>

<summary><strong>Ireland</strong> (<code>IE</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Printout** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IE/Company_Printout.pdf)

Source: Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Director Name` · `Director Position` · `Company Secretary` · `Mortgages and Charges` · `Filing History`

***

**Annual Return General** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IE/Annual_Return_General.pdf)

Source: Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Director Name` · `Director Nationality` · `Company Secretary` · `Shareholder Name` · `Ownership Volume` · `Share Information` · `Authorized Capital`

***

**Financial Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IE/Financial_Statement.pdf)

Source: Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Director Name` · `Director Position` · `Company Secretary` · `Business Activities` · `Shareholder Name` · `Share Information` · `Authorized Capital` · `Financial Statement`

</details>

<details>

<summary><strong>Isle of Man</strong> (<code>IM</code>) — 6 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Company_Register_Extract.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Insolvency Information` · `Mortgages and Charges` · `Registered Agent` · `Registered Agent Contact`

***

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Certificate_of_Incorporation.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation`

***

**Memorandum of Association** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Memorandum_of_Association.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Company Type` · `Registered Office Address` · `Registered Agent` · `Registered Agent Contact` · `Shareholder Name` · `Share Information`

***

**Articles of Association** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Articles_of_Association.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Company Type` · `Share Information` · `Director Position` · `Registered Agent`

***

**Notice of Change in Register of Directors** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Directors.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Register of Directors** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IM/Register_of_Directors.pdf)

Source: Isle of Man Companies Registry

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Italy</strong> (<code>IT</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Registration Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IT/Company_Registration_Report.pdf)

Source: Italian Business Register

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Business Activities` · `Authorized Capital` · `Subscribed Capital` · `Paid-Up Capital` · `Director Name` · `Director Position` · `Director Nationality` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume`

</details>

<details>

<summary><strong>Jersey</strong> (<code>JE</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JE/Company_Register_Extract.pdf)

Source: Jersey Financial Services Commission Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position` · `Director Nationality` · `Shareholder Name` · `Ownership Volume` · `Filing History`

***

**Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JE/Annual_Return.pdf)

Source: Jersey Financial Services Commission Registry

Contents: `Company Name` · `Unique Identifier` · `Authorized Capital` · `Share Information` · `Paid-Up Capital` · `Shareholder Name` · `Ownership Volume`

***

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JE/Certificate_of_Incorporation.pdf)

Source: Jersey Financial Services Commission Registry

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type`

</details>

<details>

<summary><strong>Latvia</strong> (<code>LV</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/LV/Company_Register_Extract.pdf)

Source: Register of Enterprises of the Republic of Latvia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Authorized Capital` · `Filing History`

</details>

<details>

<summary><strong>Liechtenstein</strong> (<code>LI</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/LI/Register_Extract.pdf)

Source: Liechtenstein Commercial Register

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Director Name` · `Director Position` · `Director Nationality` · `Filing History`

</details>

<details>

<summary><strong>Lithuania</strong> (<code>LT</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report**

Source: Register of Legal Entities

</details>

<details>

<summary><strong>Luxembourg</strong> (<code>LU</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Trade and Company Register** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/LU/Trade_and_Company_Register.pdf)

Source: Luxembourg Business Registers

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Shareholder Name` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Malta</strong> (<code>MT</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MT/Company_Register_Extract.pdf)

Source: Malta Business Registry (MBR)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Director Nationality` · `Company Secretary` · `Commissioner Name` · `Filing History`

</details>

<details>

<summary><strong>Moldova</strong> (<code>MD</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MD/Company_Register_Extract.pdf)

Source: Public Services Agency — State Register of Legal Entities

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Shareholder Name`

</details>

<details>

<summary><strong>Monaco</strong> (<code>MC</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **RCI Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MC/RCI_Information.pdf)

Source: Monaco Trade and Industry Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Authorized Capital` · `Director Name` · `Director Position` · `Director Nationality` · `Branches and Subsidiaries`

</details>

<details>

<summary><strong>Netherlands</strong> (<code>NL</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Trade Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NL/Trade_Register_Extract.pdf)

Source: Chamber of Commerce

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Paid-Up Capital` · `Director Name` · `Director Position` · `Shareholder Name` · `Branches and Subsidiaries` · `Filing History`

</details>

<details>

<summary><strong>North Macedonia</strong> (<code>MK</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MK/Company_Register_Extract.pdf)

Source: Central Registry of the Republic of North Macedonia

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities`

</details>

<details>

<summary><strong>Norway</strong> (<code>NO</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Information on organisations** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NO/Information_on_organisations.pdf)

Source: Brønnøysund Register Centre

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Director Name` · `Director Position` · `Filing History` · `Mortgages and Charges`

**Annual Accounts** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NO/Annual_Accounts.pdf)

Source: Brønnøysund Register Centre

Contents: `Company Name` · `Unique Identifier` · `Financial Statement`

</details>

<details>

<summary><strong>Poland</strong> (<code>PL</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **KRS Search Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/PL/KRS_Search_Report.pdf)

Source: National Court Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Volume` · `Filing History` · `Insolvency Information`

</details>

<details>

<summary><strong>Portugal</strong> (<code>PT</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report**

Source: Portal da Empresa

Contents: `Company Name` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Director Name` · `Shareholder Name` · `Share Information` · `Branches and Subsidiaries` · `Insolvency Information` · `Filing History`

</details>

<details>

<summary><strong>Romania</strong> (<code>RO</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/RO/Company_Register_Extract.pdf)

Source: National Trade Register Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Director Name` · `Shareholder Name` · `Ownership Ratio` · `Branches and Subsidiaries` · `Insolvency Information` · `Filing History` · `Financial Statement`

**Company Register Extract - Historical** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/RO/Company_Register_Extract_Historical.pdf)

Source: National Trade Register Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Business Activities` · `Director Name` · `Shareholder Name` · `Ownership Ratio` · `Branches and Subsidiaries` · `Insolvency Information` · `Filing History` · `Financial Statement`

</details>

<details>

<summary><strong>Russia</strong> (<code>RU</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/RU/Company_Extract.pdf)

Source: Federal Tax Service

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Authorized Capital` · `Director Name` · `Director Position` · `Shareholder Name` · `Insolvency Information` · `Branches and Subsidiaries` · `Filing History`

</details>

<details>

<summary><strong>Serbia</strong> (<code>RS</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/RS/Company_Register_Extract.pdf)

Source: Business Registers Agency

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Registered Office Address` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name` · `Authorized Capital` · `Share Information` · `Ownership Ratio`

</details>

<details>

<summary><strong>Slovakia</strong> (<code>SK</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SK/Company_Register_Extract.pdf)

Source: Business Register of the Slovak Republic

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Volume` · `Filing History`

</details>

<details>

<summary><strong>Slovenia</strong> (<code>SI</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SI/Company_Register_Extract.pdf)

Source: Slovenian Business Register (SBR) — AJPES

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name`

</details>

<details>

<summary><strong>Spain</strong> (<code>ES</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Information Note** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/ES/Commercial_Information_Note.pdf)

Source: Registro Mercantil Central

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Filing History`

**Account Deposit** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/ES/Account_Deposit.pdf)

Source: Registro Mercantil Central

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Business Activities` · `Director Name` · `Financial Statement`

</details>

<details>

<summary><strong>Sweden</strong> (<code>SE</code>) — 6 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report**

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Director Name` · `Insolvency Information`

***

**Certificate of Registration** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SE/Certificate_of_Registration.pdf)

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position` · `Filing History`

***

**Articles of Association** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SE/Articles_of_Association.pdf)

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Share Information`

***

**Beneficial Ownership Register** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SE/Beneficial_Ownership_Register.pdf)

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Beneficial Owner Name` · `Beneficial Owner Criteria` · `Director Nationality`

***

**Current Assignments** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SE/Current_Assignments.pdf)

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Unique Identifier`

***

**Latest Registered Minutes** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SE/Latest_Registered_Minutes.pdf)

Source: Swedish Companies Registration Office

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Filing History`

</details>

<details>

<summary><strong>Switzerland</strong> (<code>CH</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Cantonal Excerpt** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CH/Cantonal_Excerpt.pdf)

Source: Central Business Name Index

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Filing History`

</details>

<details>

<summary><strong>Turkey</strong> (<code>TR</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/TR/Company_Register_Extract.pdf)

Source: Union of Chambers and Commodity Exchanges of Turkey

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Company Status` · `Filing History`

</details>

<details>

<summary><strong>United Kingdom</strong> (<code>GB</code>) — 26 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Information Snapshot** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/Company_Information_Snapshot.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Company Status` · `Date of Incorporation` · `Company Type` · `Jurisdiction` · `Registered Office Address` · `Business Activities` · `Director Name` · `Director Nationality` · `Company Secretary` · `Filing History`

***

**CS01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CS01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

***

**AA**

Source: Companies House

Contents: `Company Name` · `Financial Statement`

***

**AA01**

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

***

**AA02**

Source: Companies House

Contents: `Company Name` · `Financial Statement`

***

**AR01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/AR01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name` · `Director Nationality` · `Company Secretary`

***

**AP01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/AP01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Director Nationality`

***

**AP03** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/AP03.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Company Secretary`

***

**TM01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/TM01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Director Name`

***

**TM02** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/TM02.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Company Secretary`

***

**CH01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CH01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Director Nationality`

***

**CH03** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CH03.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Company Secretary`

***

**AD01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/AD01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address`

***

**SH01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/SH01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Share Information`

***

**SH03** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/SH03.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Share Information`

***

**MR01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/MR01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Mortgages and Charges`

***

**MR04** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/MR04.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Mortgages and Charges`

***

**MG01** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/MG01.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Mortgages and Charges`

***

**MG02** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/MG02.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Mortgages and Charges`

***

**NEWINC** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/NEWINC.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Director Name`

***

**MA** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/MA.pdf)

Source: Companies House

Contents: `Company Name`

***

**CC04** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CC04.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier` · `Business Activities`

***

**CERTNM** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CERTNM.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

***

**CERT5** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/CERT5.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

***

**RESOLUTIONS** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/GB/RESOLUTIONS.pdf)

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

***

**PSC01**

Source: Companies House

Contents: `Company Name` · `Unique Identifier`

</details>
{% endtab %}

{% tab title="Americas (13)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country                          | Code | Status | Reg | SH | Fin | Search | Docs                                                                                    |
| -------------------------------- | ---- | ------ | --- | -- | --- | ------ | --------------------------------------------------------------------------------------- |
| Argentina                        | `AR` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#argentina-ar-1-document-available-for-retrieval)                       |
| Bahamas                          | `BS` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#bahamas-bs-1-document-available-for-retrieval)                         |
| Bermuda                          | `BM` | ⚡ Auto | ✅   | ✅  | ❌   | N, ID  | [View 1 sample](#bermuda-bm-1-document-available-for-retrieval)                         |
| Bonaire, Sint Eustatius and Saba | `BQ` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#bonaire-sint-eustatius-and-saba-bq-1-document-available-for-retrieval) |
| Brazil                           | `BR` | Manual | ✅   | ✅  | ❌   | —      | [View 2 samples](#brazil-br-2-documents-available-for-retrieval)                        |
| Canada                           | `CA` | Manual | ✅   | ❌  | ✅   | —      | [View 2 samples](#canada-ca-2-documents-available-for-retrieval)                        |
| Cayman Islands                   | `KY` | ⚡ Auto | ✅   | ✅  | ❌   | N      | [View 3 samples](#cayman-islands-ky-3-documents-available-for-retrieval)                |
| Chile                            | `CL` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#chile-cl-1-document-available-for-retrieval)                           |
| Curaçao                          | `CW` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#cura-ao-cw-1-document-available-for-retrieval)                         |
| Jamaica                          | `JM` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#jamaica-jm-1-document-available-for-retrieval)                         |
| United States of America         | `US` | Manual | ✅   | ❌  | ❌   | N, ID  | [View 51 samples](#united-states-of-america-us-51-documents-available-for-retrieval)    |
| Virgin Islands (British)         | `VG` | Manual | ✅   | ❌  | ❌   | —      | [View 3 samples](#virgin-islands-british--vg-3-documents-available-for-retrieval)       |
| Virgin Islands (U.S.)            | `VI` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#virgin-islands-u-s--vi-1-document-available-for-retrieval)             |

***

### Document Types & Samples

<details>

<summary><strong>Argentina</strong> (<code>AR</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Official Gazette Notice** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AR/Official_Gazette_Notice.pdf)

Source: Official Gazette of the Argentine Republic

Contents: `Company Name` · `Company Type` · `Date of Incorporation` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Subscribed Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Director Name` · `Director Position` · `Notary Deed Number` · `Notary Deed Date`

</details>

<details>

<summary><strong>Bahamas</strong> (<code>BS</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BS/Company_Profile.pdf)

Source: Registrar General's Department

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Authorized Capital` · `Shareholder Name` · `Business Activities`

</details>

<details>

<summary><strong>Bermuda</strong> (<code>BM</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BM/Company_Report.pdf)

Source: Registrar of Companies

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Paid-Up Capital` · `Director Name` · `Business Activities` · `Registered Agent`

</details>

<details>

<summary><strong>Bonaire, Sint Eustatius and Saba</strong> (<code>BQ</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BQ/Commercial_Register_Extract.pdf)

Source: BES Islands Chamber of Commerce (KvK)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Branches and Subsidiaries` · `Owner Name` · `Owner Position`

</details>

<details>

<summary><strong>Brazil</strong> (<code>BR</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **CNPJ Registration Certificate** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BR/CNPJ_Registration_Certificate.pdf)

Source: Federal Revenue Service of Brazil

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Business Activities`

**Shareholders and Administrators Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BR/Shareholders_and_Administrators_Report.pdf)

Source: Federal Revenue Service of Brazil

Contents: `Company Name` · `Unique Identifier` · `Authorized Capital` · `Shareholder Name` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Canada</strong> (<code>CA</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Profile Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CA/Profile_Report.pdf)

Source: Corporations Canada

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Jurisdiction` · `Director Name` · `Director Position` · `Filing History`

**Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CA/Annual_Return.pdf)

Source: Corporations Canada

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation`

</details>

<details>

<summary><strong>Cayman Islands</strong> (<code>KY</code>) — 3 documents available for retrieval</summary>

**Company Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KY/Company_Search.pdf)

Source: Cayman Islands General Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Status Date`

***

<mark style="color:blue;">default</mark> **Detailed Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KY/Detailed_Search.pdf)

Source: Cayman Islands General Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Status Date` · `Business Activities` · `Authorized Capital` · `Shareholder Name`

***

**Director Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KY/Director_Search.pdf)

Source: Cayman Islands General Registry

Contents: `Company Name` · `Director Name`

</details>

<details>

<summary><strong>Chile</strong> (<code>CL</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Official Gazette Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CL/Company_Register_Extract.pdf)

Source: Official Gazette of the Republic of Chile

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Business Activities` · `Authorized Capital` · `Share Information` · `Shareholder Name`

</details>

<details>

<summary><strong>Curaçao</strong> (<code>CW</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Commercial Register Excerpt** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CW/Commercial_Register_Excerpt.pdf)

Source: Curaçao Chamber of Commerce & Industry (KvK)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Authorized Capital` · `Share Information` · `Business Activities` · `Director Name` · `Director Position` · `Director Nationality`

</details>

<details>

<summary><strong>Jamaica</strong> (<code>JM</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/JM/Company_Register_Extract.pdf)

Source: Companies Office of Jamaica (COJ)

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Company Type` · `Business Activities` · `Company Status` · `Date of Incorporation` · `Director Name` · `Company Secretary`

</details>

<details>

<summary><strong>United States of America</strong> (<code>US</code>) — 51 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Delaware - Entity Details** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Entity_Details.pdf)

Source: State of Delaware Division of Corporations

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Jurisdiction` · `Share Information` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Alabama - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Alabama/Company_Register_Extract.pdf)

Source: Alabama Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Alaska - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Alaska/Company_Register_Extract.pdf)

Source: Alaska Department of Commerce, Community, and Economic Development

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Shareholder Name` · `Ownership Ratio` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Arizona - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Arizona/Company_Register_Extract.pdf)

Source: Arizona Corporation Commission

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Shareholder Name` · `Director Position` · `Filing History`

***

**California - Statement of Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/California/Statement_of_Information.pdf)

Source: California Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Jurisdiction` · `Business Activities` · `Shareholder Name` · `Director Position` · `Registered Agent`

***

**Colorado - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Colorado/Company_Register_Extract.pdf)

Source: Colorado Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact`

***

**Colorado - Certificate of Good Standing** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Colorado/Certificate_of_Good_Standing.pdf)

Source: Colorado Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Status` · `Jurisdiction`

***

**Connecticut - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Connecticut/Company_Register_Extract.pdf)

Source: Connecticut Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Connecticut - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Connecticut/Annual_Return.pdf)

Source: Connecticut Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Business Activities` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Florida - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Florida/Company_Register_Extract.pdf)

Source: Florida Department of State, Division of Corporations

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Florida - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Florida/Annual_Return.pdf)

Source: Florida Department of State, Division of Corporations

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Georgia - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Georgia/Company_Register_Extract.pdf)

Source: Georgia Secretary of State, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Idaho - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Idaho/Company_Register_Extract.pdf)

Source: Idaho Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact`

***

**Idaho - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Idaho/Annual_Return.pdf)

Source: Idaho Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Company Status` · `Jurisdiction` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Illinois - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Illinois/Company_Register_Extract.pdf)

Source: Illinois Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Indiana - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Indiana/Company_Register_Extract.pdf)

Source: Indiana Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Shareholder Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Iowa - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Iowa/Company_Register_Extract.pdf)

Source: Iowa Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Status Date` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Louisiana - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Louisiana/Company_Register_Extract.pdf)

Source: Louisiana Secretary of State, Commercial Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Maine - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Maine/Company_Register_Extract.pdf)

Source: Maine Department of the Secretary of State, Bureau of Corporations

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact`

***

**Maryland - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Maryland/Company_Register_Extract.pdf)

Source: Maryland State Department of Assessments and Taxation

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Share Information` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Massachusetts - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Massachusetts/Company_Register_Extract.pdf)

Source: Massachusetts Secretary of the Commonwealth, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Jurisdiction` · `Director Name` · `Director Position` · `Share Information` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Massachusetts - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Massachusetts/Annual_Return.pdf)

Source: Massachusetts Secretary of the Commonwealth, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Jurisdiction` · `Registered Office Address` · `Registered Agent` · `Registered Agent Contact` · `Director Name` · `Director Position` · `Business Activities` · `Share Information`

***

**Michigan - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Michigan/Company_Register_Extract.pdf)

Source: Michigan Department of Licensing and Regulatory Affairs, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Michigan - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Michigan/Annual_Return.pdf)

Source: Michigan Department of Licensing and Regulatory Affairs, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Registered Agent` · `Registered Agent Contact`

***

**Minnesota - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Minnesota/Company_Register_Extract.pdf)

Source: Minnesota Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Director Name` · `Director Position` · `Registered Agent` · `Filing History`

***

**Mississippi - UCC Financing Statement** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Mississippi/UCC_Financing_Statement.pdf)

Source: Mississippi Secretary of State, Business Services Division

Contents: `Company Name` · `Registered Office Address` · `Unique Identifier` · `Mortgages and Charges` · `Filing History`

***

**Montana - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Montana/Company_Register_Extract.pdf)

Source: Montana Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Nebraska - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Nebraska/Company_Register_Extract.pdf)

Source: Nebraska Secretary of State, Business Services

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Nevada - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Nevada/Company_Register_Extract.pdf)

Source: Nevada Secretary of State, Commercial Recordings Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**New Hampshire - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/New_Hampshire/Company_Register_Extract.pdf)

Source: New Hampshire Department of State, Corporation Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Director Name` · `Director Position` · `Shareholder Name` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**New York - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/New_York/Company_Register_Extract.pdf)

Source: New York Department of State, Division of Corporations

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Jurisdiction` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Share Information` · `Filing History`

***

**North Carolina - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/North_Carolina/Company_Register_Extract.pdf)

Source: North Carolina Secretary of State, Business Registration Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Office Address` · `Registered Agent Contact` · `Filing History`

***

**North Carolina - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/North_Carolina/Annual_Return.pdf)

Source: North Carolina Secretary of State, Business Registration Division

Contents: `Company Name` · `Unique Identifier` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Registered Office Address` · `Business Activities` · `Director Name` · `Director Position`

***

**North Dakota - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/North_Dakota/Company_Register_Extract.pdf)

Source: North Dakota Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Filing History`

***

**Oklahoma - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Oklahoma/Company_Register_Extract.pdf)

Source: Oklahoma Secretary of State, Business Services

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact`

***

**Pennsylvania - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Pennsylvania/Company_Register_Extract.pdf)

Source: Pennsylvania Department of State, Bureau of Corporations and Charitable Organizations

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Filing History`

***

**Puerto Rico - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Puerto_Rico/Company_Register_Extract.pdf)

Source: Puerto Rico Department of State, Corporations Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Director Name` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Rhode Island - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Rhode_Island/Company_Register_Extract.pdf)

Source: Rhode Island Department of State, Business Services Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Share Information` · `Filing History`

***

**Rhode Island - Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Rhode_Island/Annual_Return.pdf)

Source: Rhode Island Department of State, Business Services Division

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Jurisdiction` · `Business Activities` · `Director Name` · `Director Position` · `Share Information`

***

**South Carolina - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/South_Carolina/Company_Register_Extract.pdf)

Source: South Carolina Secretary of State, Business Entities Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**South Dakota - DBA / Fictitious Business Name Registration** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/South_Dakota/Company_Register_Extract.pdf)

Source: South Dakota Secretary of State

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Date of Incorporation` · `Director Name`

***

**Utah - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Utah/Company_Register_Extract.pdf)

Source: Utah Division of Corporations and Commercial Code

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Tennessee - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Tennessee/Company_Register_Extract.pdf)

Source: Tennessee Secretary of State, Division of Business Services

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Vermont - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Vermont/Company_Register_Extract.pdf)

Source: Vermont Secretary of State, Business Services Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Business Activities` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Virginia - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Virginia/Company_Register_Extract.pdf)

Source: Virginia State Corporation Commission, Clerk's Information System

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**West Virginia - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/West_Virginia/Company_Register_Extract.pdf)

Source: West Virginia Secretary of State, Business and Licensing Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History` · `Branches and Subsidiaries`

***

**Washington - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Washington/Company_Register_Extract.pdf)

Source: Washington Secretary of State, Corporations and Charities Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Business Activities` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact`

***

**Washington DC - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Washington_DC/Company_Register_Extract.pdf)

Source: District of Columbia Department of Licensing and Consumer Protection, Corporations Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Director Name` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Wisconsin - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Wisconsin/Company_Register_Extract.pdf)

Source: Wisconsin Department of Financial Institutions, Corporations Bureau

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Wyoming - Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Wyoming/Company_Register_Extract.pdf)

Source: Wyoming Secretary of State, Business Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Date of Incorporation` · `Jurisdiction` · `Share Information` · `Director Name` · `Director Position` · `Registered Agent` · `Registered Agent Contact` · `Filing History`

***

**Wyoming - Certificate of Good Standing** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/US/Wyoming/Certificate_of_Good_Standing.pdf)

Source: Wyoming Secretary of State, Business Division

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Date of Incorporation` · `Company Status`

</details>

<details>

<summary><strong>Virgin Islands (British)</strong> (<code>VG</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Search Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VG/Public_Search.pdf)

Source: BVI Financial Services Commission

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Director Name` · `Registered Agent` · `Registered Agent Contact` · `Mortgages and Charges` · `Filing History` · `Insolvency Information`

***

**Certificate of Good Standing**

Source: BVI Financial Services Commission

***

**List of Directors (stamped)** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VG/List_of_Directors_\(stamped\).pdf)

Source: BVI Financial Services Commission

Contents: `Company Name` · `Unique Identifier` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>Virgin Islands (U.S.)</strong> (<code>VI</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Register Entity Search** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VI/Register_Entity_Search.pdf)

Source: Office of the Lieutenant Governor

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Business Activities`

</details>
{% endtab %}

{% tab title="Oceania (9)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country          | Code | Status | Reg | SH | Fin | Search | Docs                                                                     |
| ---------------- | ---- | ------ | --- | -- | --- | ------ | ------------------------------------------------------------------------ |
| Australia        | `AU` | ⚡ Auto | ✅   | ✅  | ❌   | N, ID  | [View 5 samples](#australia-au-5-documents-available-for-retrieval)      |
| Cook Islands     | `CK` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#cook-islands-ck-1-document-available-for-retrieval)     |
| Marshall Islands | `MH` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#marshall-islands-mh-1-document-available-for-retrieval) |
| New Zealand      | `NZ` | Manual | ✅   | ✅  | ❌   | —      | [View 3 samples](#new-zealand-nz-3-documents-available-for-retrieval)    |
| Niue             | `NU` | Manual | ✅   | ✅  | ❌   | —      | [View 3 samples](#niue-nu-3-documents-available-for-retrieval)           |
| Papua New Guinea | `PG` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#papua-new-guinea-pg-1-document-available-for-retrieval) |
| Samoa            | `WS` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#samoa-ws-1-document-available-for-retrieval)            |
| Solomon Islands  | `SB` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#solomon-islands-sb-1-document-available-for-retrieval)  |
| Vanuatu          | `VU` | Manual | ✅   | ✅  | ❌   | —      | [View 2 samples](#vanuatu-vu-2-documents-available-for-retrieval)        |

***

### Document Types & Samples

<details>

<summary><strong>Australia</strong> (<code>AU</code>) — 5 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Current Company Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AU/Current_Company_Information_Extract.pdf)

Source: Australian Securities and Investments Commission

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Jurisdiction` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Filing History`

***

**Current and Historical Company Extract**

Source: Australian Securities and Investments Commission

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Jurisdiction` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume` · `Director Name` · `Director Position` · `Filing History`

***

**Certificate of Registration**

Source: Australian Securities and Investments Commission

***

**Form 484**

Source: Australian Securities and Investments Commission

***

**Form 388**

Source: Australian Securities and Investments Commission

</details>

<details>

<summary><strong>Cook Islands</strong> (<code>CK</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Entity Profile** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/CK/Entity_Profile.pdf)

Source: Cook Islands Registry Services

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Filing History`

</details>

<details>

<summary><strong>Marshall Islands</strong> (<code>MH</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Non-Resident Entity Report** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MH/Non_Resident_Entity_Report.pdf)

Source: RMI Corporate Registry (International Registries, Inc.)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Date of Incorporation` · `Registered Agent` · `Registered Agent Contact`

</details>

<details>

<summary><strong>New Zealand</strong> (<code>NZ</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NZ/Company_Extract.pdf)

Source: New Zealand Companies Office

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Director Name` · `Shareholder Name` · `Ownership Volume`

***

**Annual Return Filed** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NZ/Annual_Return_Filed.pdf)

Source: New Zealand Companies Office

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Company Status` · `Director Name` · `Director Position` · `Shareholder Name` · `Ownership Volume` · `Filing History`

***

**Shareholdings** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NZ/Shareholdings.pdf)

Source: New Zealand Companies Office

Contents: `Company Name` · `Unique Identifier` · `Shareholder Name` · `Ownership Ratio` · `Ownership Volume`

</details>

<details>

<summary><strong>Niue</strong> (<code>NU</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NU/Company_Register_Extract.pdf)

Source: Niue Companies Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Director Name` · `Director Position` · `Filing History`

***

**Annual Return** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NU/Annual_Return.pdf)

Source: Niue Companies Office

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Director Name` · `Shareholder Name` · `Ownership Volume` · `Filing History`

***

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NU/Certificate_of_Incorporation.pdf)

Source: Niue Companies Office

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Filing History`

</details>

<details>

<summary><strong>Papua New Guinea</strong> (<code>PG</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/PG/Company_Register_Extract.pdf)

Source: Investment Promotion Authority (IPA)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Filing History`

</details>

<details>

<summary><strong>Samoa</strong> (<code>WS</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/WS/Company_Register_Extract.pdf)

Source: Ministry of Commerce, Industry & Labour — Business Registries

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Status Date` · `Business Activities` · `Director Name` · `Shareholder Name` · `Ownership Volume` · `Filing History`

</details>

<details>

<summary><strong>Solomon Islands</strong> (<code>SB</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SB/Company_Register_Extract.pdf)

Source: Solomon Islands Business Registry — Company Haus

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Status Date` · `Business Activities` · `Director Name` · `Shareholder Name` · `Ownership Volume` · `Share Information`

</details>

<details>

<summary><strong>Vanuatu</strong> (<code>VU</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VU/Company_Register_Extract.pdf)

Source: Vanuatu Financial Services Commission (VFSC)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Status` · `Company Type` · `Registered Office Address` · `Business Activities` · `Director Name` · `Share Information` · `Shareholder Name` · `Ownership Volume`

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/VU/Certificate_of_Incorporation.pdf)

Source: Vanuatu Financial Services Commission (VFSC)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Company Status` · `Status Date`

</details>
{% endtab %}

{% tab title="Middle East (5)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country              | Code | Status | Reg | SH | Fin | Search | Docs                                                                         |
| -------------------- | ---- | ------ | --- | -- | --- | ------ | ---------------------------------------------------------------------------- |
| Bahrain              | `BH` | Manual | ✅   | ✅  | ❌   | —      | [View 2 samples](#bahrain-bh-2-documents-available-for-retrieval)            |
| Israel               | `IL` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#israel-il-1-document-available-for-retrieval)               |
| Qatar                | `QA` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#qatar-qa-1-document-available-for-retrieval)                |
| Saudi Arabia         | `SA` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#saudi-arabia-sa-1-document-available-for-retrieval)         |
| United Arab Emirates | `AE` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#united-arab-emirates-ae-1-document-available-for-retrieval) |

***

### Document Types & Samples

<details>

<summary><strong>Bahrain</strong> (<code>BH</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **CR Public Search**

Source: Sijilat — Commercial Registration Portal

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Date of Incorporation` · `Company Status` · `Registered Office Address` · `Business Activities` · `Shareholder Name` · `Director Nationality` · `Filing History` · `Branches and Subsidiaries`

**Commercial Registration Certificate**

Source: Sijilat — Commercial Registration Portal

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Paid-Up Capital` · `Shareholder Name` · `Ownership Ratio` · `Director Name` · `Business Activities` · `Filing History`

</details>

<details>

<summary><strong>Israel</strong> (<code>IL</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/IL/Company_Extract.pdf)

Source: Israeli Corporations Authority

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Director Name` · `Director Nationality` · `Director Position` · `Mortgages and Charges`

</details>

<details>

<summary><strong>Qatar</strong> (<code>QA</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/QA/Company_Register_Extract.pdf)

Source: Qatar Financial Centre (QFC) — Public Register

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Authorized Capital` · `Paid-Up Capital` · `Shareholder Name` · `Director Name` · `Company Secretary`

</details>

<details>

<summary><strong>Saudi Arabia</strong> (<code>SA</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/SA/Company_Register_Extract.pdf)

Source: Ministry of Commerce — Commercial Registry

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Company Status` · `Status Date` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Paid-Up Capital` · `Share Information` · `Shareholder Name` · `Ownership Volume` · `Director Name` · `Director Position`

</details>

<details>

<summary><strong>United Arab Emirates</strong> (<code>AE</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Business License** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/AE/Business_License.pdf)

Source: National Economic Register (NER)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Date of Incorporation` · `Company Status` · `Status Date` · `Business Activities` · `Registered Office Address` · `Director Name`

</details>
{% endtab %}

{% tab title="Africa (7)" %}
{% hint style="info" %}
**Reg** Registration · **SH** Shareholder · **Fin** Financial · **N** Name · **ID** Company ID · **D** Documents
{% endhint %}

| Country      | Code | Status | Reg | SH | Fin | Search | Docs                                                                 |
| ------------ | ---- | ------ | --- | -- | --- | ------ | -------------------------------------------------------------------- |
| Botswana     | `BW` | Manual | ✅   | ✅  | ❌   | —      | [View 2 samples](#botswana-bw-2-documents-available-for-retrieval)   |
| Kenya        | `KE` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#kenya-ke-1-document-available-for-retrieval)        |
| Mauritius    | `MU` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#mauritius-mu-1-document-available-for-retrieval)    |
| Morocco      | `MA` | Manual | ✅   | ❌  | ✅   | —      | [View 3 samples](#morocco-ma-3-documents-available-for-retrieval)    |
| Nigeria      | `NG` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#nigeria-ng-1-document-available-for-retrieval)      |
| South Africa | `ZA` | Manual | ✅   | ❌  | ❌   | —      | [View 1 sample](#south-africa-za-1-document-available-for-retrieval) |
| Tanzania     | `TZ` | Manual | ✅   | ✅  | ❌   | —      | [View 1 sample](#tanzania-tz-1-document-available-for-retrieval)     |

***

### Document Types & Samples

<details>

<summary><strong>Botswana</strong> (<code>BW</code>) — 2 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Private Company Standard Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BW/Private_Company_Standard_Extract.pdf)

Source: Companies and Intellectual Property Authority (CIPA)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Director Name` · `Company Secretary` · `Shareholder Name` · `Ownership Volume` · `Share Information`

**Certificate of Incorporation** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/BW/Certificate_of_Incorporation.pdf)

Source: Companies and Intellectual Property Authority (CIPA)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation`

</details>

<details>

<summary><strong>Kenya</strong> (<code>KE</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/KE/Company_Register_Extract.pdf)

Source: Business Registration Service (BRS)

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Registered Office Address` · `Authorized Capital` · `Share Information` · `Mortgages and Charges` · `Director Name` · `Director Position` · `Director Nationality` · `Shareholder Name` · `Ownership Volume`

</details>

<details>

<summary><strong>Mauritius</strong> (<code>MU</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MU/Company_Register_Extract.pdf)

Source: Corporate and Business Registration Department (CBRD)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Director Name` · `Director Position` · `Company Secretary`

</details>

<details>

<summary><strong>Morocco</strong> (<code>MA</code>) — 3 documents available for retrieval</summary>

<mark style="color:blue;">default</mark> **Simplified Legal Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MA/Simplified_Legal_Information.pdf)

Source: OMPIC DirectInfo (Central Trade Registry)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Director Name` · `Director Position` · `Filing History`

***

**Detailed Legal Information** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MA/Detailed_Legal_Information.pdf)

Source: OMPIC DirectInfo (Central Trade Registry)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Company Status` · `Registered Office Address` · `Date of Incorporation` · `Business Activities` · `Authorized Capital` · `Director Name` · `Director Position` · `Filing History`

***

**Financial Statements** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/MA/Financial_Statements.pdf)

Source: OMPIC DirectInfo (Central Trade Registry)

Contents: `Company Name` · `Unique Identifier` · `Registered Office Address` · `Authorized Capital` · `Financial Statement`

</details>

<details>

<summary><strong>Nigeria</strong> (<code>NG</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Certified Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/NG/Company_Register_Extract.pdf)

Source: Corporate Affairs Commission

Contents: `Company Name` · `Unique Identifier` · `Date of Incorporation` · `Company Type` · `Registered Office Address` · `Company Status` · `Business Activities` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position` · `Director Nationality` · `Company Secretary` · `Shareholder Name` · `Ownership Volume` · `Ownership Ratio` · `Beneficial Owner Name` · `Beneficial Owner Criteria`

</details>

<details>

<summary><strong>South Africa</strong> (<code>ZA</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/ZA/Company_Register_Extract.pdf)

Source: Companies and Intellectual Property Commission (CIPC)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Business Activities` · `Authorized Capital` · `Share Information` · `Director Name` · `Director Position` · `Filing History`

</details>

<details>

<summary><strong>Tanzania</strong> (<code>TZ</code>) — 1 document available for retrieval</summary>

<mark style="color:blue;">default</mark> **Company Register Extract** · [View Sample](https://corpverify-samples.s3.us-east-1.amazonaws.com/TZ/Company_Register_Extract.pdf)

Source: Business Registrations and Licensing Agency (BRELA)

Contents: `Company Name` · `Unique Identifier` · `Company Type` · `Registered Office Address` · `Date of Incorporation` · `Company Status` · `Business Activities` · `Authorized Capital` · `Share Information` · `Director Name` · `Shareholder Name` · `Ownership Volume`

</details>
{% endtab %}
{% endtabs %}

***

### Try It Out

Explore available regions, search for companies, and purchase documents using our web interface: [search.fill-easy.com](https://search.fill-easy.com)


# KYC Agent

The KYC agent lets you run **China KYC checks by sending an email**. No portal, no API integration: you email the details (or attach a spreadsheet) to a dedicated address, and the agent reads your request, runs the checks through Fill-Easy, and emails the results back into the same thread.

There are two ways to use it:

| Mode            | When to use it      | What you send                     | What you get back                                               |
| --------------- | ------------------- | --------------------------------- | --------------------------------------------------------------- |
| **Free-text**   | One or a few people | Details typed in the email body   | One PDF report per person, emailed as each completes            |
| **Excel batch** | Many people at once | An `.xlsx` spreadsheet attachment | One results spreadsheet, returned when the whole batch finishes |

***

## 1. Where to send

Send your request to the KYC address for your environment:

| Environment    | Send to                         |
| -------------- | ------------------------------- |
| **Production** | `kyc@ses.fill-easy.com`         |
| Staging        | `staging-kyc@ses.fill-easy.com` |
| Dev            | `dev-kyc@ses.fill-easy.com`     |

Replies come back from `kyc@fill-easy.com` (prod). Just **reply in the same thread** to add more emails to the same request — the agent reads the whole thread, oldest message first.

{% hint style="warning" %}
**Email security.** Your message must pass SPF and DMARC checks (these are normal for mail sent from a real corporate mailbox). If it doesn't, the agent still processes the request but adds a security warning to every reply, so downstream readers know the sender couldn't be verified.
{% endhint %}

***

## 2. Authentication

The agent talks to Fill-Easy on your behalf, so your organization must be **onboarded** before you can use it. Once you're onboarded, there's nothing extra to do — just send from your registered work email address and the agent authenticates your request automatically.

If your organization isn't onboarded yet, you'll get a processing reply while support follows up. To get set up, contact your Fill-Easy representative.

***

## 3. Free-text mode — checking one or a few people

Just write the person's details in the email body. Plain text is fine. Example:

```
To: kyc@ses.fill-easy.com
Subject: KYC check — 张三

Please run a bank 3-factor check (KYC8.2.1) for:

姓名: 张三
身份证号: 11010119900307XXXX
手机号: 13800138000
银行卡号: 6214 8679 9935 327
```

You can describe **several people in one email** — put each person's details together and the agent emits one request per person.

### Field rules

The agent only accepts values it can actually read from your email. It will **never guess or derive** a value (for example, it will not invent an ID issue date from the digits inside an ID number). Anything that doesn't match the expected format is dropped and noted back to you.

| Field                       | Format the agent expects                                                             |
| --------------------------- | ------------------------------------------------------------------------------------ |
| **Name** (姓名)               | Chinese characters only. English/Pinyin names are not accepted.                      |
| **ID number** (身份证号)        | 18 characters — 17 digits plus a final digit or `X`.                                 |
| **ID issue date**           | `YYYYMMDD` (8 digits). Must be supplied **together** with the expiry date.           |
| **ID expiry date**          | `YYYYMMDD`, or the literal `长期` for "long-term". Must be paired with the issue date. |
| **Mobile** (手机号)            | 11 digits, starting `13`–`19`.                                                       |
| **Bank card number** (银行卡号) | Digits. Spaces and dashes are fine — they're stripped automatically.                 |
| **Address(es)**             | City + address in Chinese, optionally tagged as common / work / residential.         |

{% hint style="info" %}
Dates in other formats (e.g. `2020-01-15`) are normalized to `YYYYMMDD` automatically. Spaces and dashes in card / mobile / ID numbers are removed for you.
{% endhint %}

### Choosing which checks to run

Mention the product code(s) you want, e.g. **"run KYC8.2.1"** or **"KYC2, KYC11"**. See the [product catalogue](#5-kyc-product-catalogue) below.

{% hint style="success" %}
**Tip — always name the products you want.** If you don't specify any products, the backend runs its full default set of checks, which costs more. Listing the products keeps the run (and the bill) to exactly what you need.
{% endhint %}

***

## 4. Excel batch mode — checking many people

For larger volumes, attach a single `.xlsx` spreadsheet. The agent switches to batch mode automatically when it sees an Excel attachment.

Need a starting point? Download the [KYC template spreadsheet](https://corpverify-samples.s3.us-east-1.amazonaws.com/KYC-Template/KYC_template.xlsx) and add one row per person — a fixed template isn't required (the agent reads your headers), but it's a convenient place to start.

### How to lay out the sheet

* One **person per row**.
* A **header row** describing each column. It does not have to be the first row — the agent locates it for you.
* Columns for the fields you have: name, ID number, ID issue/expiry date, mobile, bank card number, and address columns. The same format rules as free-text mode apply.
* A **"Requested Data Fields" / "所需數據字段" / "KYC Products"** column telling the agent which products to run for each row (e.g. `KYC8.1`, or `KYC8.1, KYC2`).

The agent figures out which column is which from your headers — you don't need a fixed template. Encrypted (password-protected) workbooks are supported; the results come back encrypted the same way.

### What you get back

You'll receive **one acknowledgement email** ("KYC batch received — N rows are being processed"), and then a single **results email** once every check in the batch has completed. The results email attaches **your original spreadsheet** with extra columns appended at the end:

* One **`KYCx Result` column per requested product**, colour-coded by outcome:

  | Cell                          | Meaning                                                    |
  | ----------------------------- | ---------------------------------------------------------- |
  | 🟩 **Match**                  | The check matched.                                         |
  | 🟥 **No Match**               | The check returned a mismatch.                             |
  | ⬜ **Not Found**               | No record found.                                           |
  | ⬜ **Not Run**                 | Product wasn't run for this row.                           |
  | 🟨 **Error** / message        | The row couldn't be dispatched, or an error occurred.      |
  | 🟦 **Completed — see report** | Informational product — open the PDF for detail.           |
  | 🟧 **Pending / Expired**      | Not finished, or the result link expired before retrieval. |
* A final **`KYC Status`** column. For completed rows this cell is a **clickable link to that person's full PDF report** (blue, underlined). Rows that couldn't be processed show the reason here instead.

{% hint style="warning" %}
**Result links are valid for 7 days**, and the underlying report files are deleted after 30 days — download anything you need to keep.
{% endhint %}

***

## 5. KYC product catalogue

Specify products by their code (the `KYC` prefix is optional — `KYC8.1` and `8.1` are the same), e.g. `KYC8.2.1` or `KYC2, KYC11`.

The full list of products — every code, what each one checks, and the inputs it needs — is maintained in the [**KYC China product catalogue**](https://fill-easy.gitbook.io/testing/kyc-china). The agent accepts the same product numbers.

A few agent-specific notes:

* For a **bank check without a level** (just `KYC8`), the agent picks the strongest bank check your data supports — `8.3` if you supplied ID + mobile, `8.2.1` if just ID, otherwise `8.1`.
* Some products (fraud risk, litigation, criminal risk, mobile location / address) are **informational** — they don't return a simple match/no-match; read the PDF report for the detail.
* If you request a mix of supported and unsupported products, the supported ones still run and the rest are skipped (and noted in the reply).

***

## 6. What the replies look like

1. **Acknowledgement** — sent as soon as your request is accepted.
   * Free-text: *"N KYC PROCESSING"* listing each request and its ID.
   * Excel batch: *"KYC batch received — N rows are being processed."*
2. **Results**
   * Free-text: one ***ORDER SUCCESS*** email **per person**, with that person's PDF report attached, as each one completes.
   * Excel batch: a single ***KYC RESULTS*** email with the completed spreadsheet attached.

All replies stay in your original email thread, so everything for one request is in one place.

***

## 7. Quick checklist

* [ ] Sending to the correct address (`kyc@ses.fill-easy.com` for production).
* [ ] Sending from your onboarded, registered work email address.
* [ ] Names and addresses are in **Chinese characters**.
* [ ] ID number is 18 characters; mobile is 11 digits; dates are `YYYYMMDD`.
* [ ] ID issue and expiry dates supplied **together**, or not at all.
* [ ] Requested products named explicitly (to control scope and cost).
* [ ] For batch runs: one person per row, with a clear header row and a products column.

***

## 8. Troubleshooting

| Symptom                               | Likely cause                                                                                                                        |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Reply says a field was "dropped"      | The value didn't match the required format (e.g. a Pinyin name, an 11-digit ID, an unpaired date). Resend it in the correct format. |
| "Security warning" on the reply       | Your email failed SPF/DMARC. The request still ran; check with your mail admin if you want it to verify cleanly.                    |
| Result cell shows **Expired**         | The report wasn't retrieved before its link expired. Re-submit that row.                                                            |
| Reply says you can't be authenticated | Your organization or sending address isn't onboarded yet. Contact your Fill-Easy representative.                                    |
| Nothing extracted from a request      | The email had no usable fields the agent could read. Check the field formats above and resend.                                      |


