Vistra 卓佳 BVI 注册 API 文档
欢迎使用 Vistra API 文档。此 API 允许外部合作伙伴集成并简化 BVI 实体的注册流程。
按照以下步骤了解如何进行身份验证、上传文件和创建注册。
身份验证
目前,Vistra 卓佳 BVI 注册 API 仅限邀请制开放。
登录方法:
前往 Vistra 开发者门户
点击“登录 / 注册”
点击“使用邮箱登录”
输入邮箱地址
获取邮件中的验证码
输入验证码
完成后,用户将被重定向到开发者门户
使用 API 的步骤:
在 Vistra 开发者门户中创建一个应用程序。
生成 API 凭据(客户端 ID 和密钥)。
使用 OAuth2 流程通过这些凭据获取访问令牌。
在所有请求的授权头中包含令牌:
Authorization: Bearer <ACCESS_TOKEN>
工作流程概览
注册工作流程包括以下步骤:
生成文件上传 URL (/v1/external/documents/upload-url)。
使用预签名 URL 将文件上传至 S3。
完成文件上传 (/v1/external/documents/{id}/upload-complete) 并通知 Vistra。
对所有所需文件重复上述上传过程。
使用上传的文件 ID 创建注册 (/v1/external/incorporations)。
API 端点
1. 生成文件上传 URL
端点:POST /v1/external/documents/upload-url
此端点用于生成一个预签名的 S3 URL,以上传文件。
请求示例:
{
"fileName": "proof_of_address.pdf",
"type": "PROOF_OF_ADDRESS"
}
响应示例:
{
"documentId": "35d2b9c6-2a29-4cb4-93dd-559b38f2a3d3",
"uploadUrl": "https://cloudfront.net/yourfilehere.pdf"
}
重要注意事项:
预签名 URL 有效期为 1 分钟,请确保及时上传文件。
保存 documentId,后续请求中需要使用。
2. 通过 ID 完成文件上传
端点:POST /v1/external/documents/{id}/upload-complete
文件上传后,请使用此端点通知 Vistra 完成上传过程。
路径参数:
id:从“生成文件上传 URL”响应中获得的 documentId。
请求示例:
{
"documentId": "35d2b9c6-2a29-4cb4-93dd-559b38f2a3d3"
}
响应示例:
{
"documentId": "35d2b9c6-2a29-4cb4-93dd-559b38f2a3d3",
"fileName": "proof_of_address.pdf",
"fileLink": "https://cloudfront.net/yourfilehere.pdf"
}
重要注意事项:
“生成文件上传 URL”和“通过 ID 完成文件上传”步骤必须针对每个文件进行操作。
3. 创建注册
端点:POST /v1/external/incorporations
在上传所有文件并记录文件 ID 后,使用此端点提交注册详情。
请求示例:
{
"countryCode": "BVI",
"stateCode": "VG",
"reportingCurrency": "USD",
"entityName": [
"MyNewEntity"
],
"entityCnName": [
"我的新实体"
],
"entityDescription": "An investment company specializing in property development.",
"entityType": "LIMITED_LIABILITY_COMPANY",
"registeredAddress": {
"address1": "123 Palm Grove Avenue",
"address2": "Suite 200",
"city": "Road Town",
"countryCode": "BVI",
"state": "Tortola",
"postalCode": "VG1110"
},
"sgSsicCode": "68101",
"entityDocuments": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"natureOfBusiness": "PROPERTY_INVESTMENT",
"natureOfBusinessOthers": "",
"locationOfBusinessActivity": "Road Town, Tortola, BVI",
"hasDigitalCurrencyInvolved": false,
"sourceOfFunds": "INVESTOR_CAPITAL",
"estimatedAnnualRevenue": "ZERO_TO_FIFTY_THOUSAND",
"totalNumberOfShares": 1000,
"totalAmountOfShares": 100000,
"totalAmountOfSharesCurrencyCode": "USD",
"individuals": [
{
"isDirector": true,
"isShareholder": true,
"isBeneficialOwner": true,
"title": "MR",
"firstName": "John",
"middleName": "A",
"lastName": "Doe",
"email": "[email protected]",
"identificationType": "PASSPORT_NUMBER",
"identificationNumber": "A12345678",
"nationality": "American",
"countryOfBirth": "USA",
"countryOfResidency": "USA",
"residencyStatus": "FOREIGNER",
"dateOfBirth": "1980-01-01",
"phoneCountryCode": "+1",
"phoneNumber": "5551234567",
"address1": "456 Elm Street",
"address2": "Apartment 4B",
"addressCity": "New York",
"addressCountryCode": "USA",
"addressPostalCode": "10001",
"addressState": "NY",
"proofOfIdentificationDocumentId": "123e4567-e89b-12d3-a456-426614174000",
"proofOfAddressDocumentId": "123e4567-e89b-12d3-a456-426614174001",
"passportDocumentId": "123e4567-e89b-12d3-a456-426614174002",
"driversLicenseDocumentId": "123e4567-e89b-12d3-a456-426614174003",
"interestHeldPercentage": 50,
"sourceOfWealth": "EMPLOYMENT",
"sourceOfWealthOthers": "",
"wealthSourcesDescription": "Executive salary and stock options.",
"registrationOfDirectorsDocumentId": "123e4567-e89b-12d3-a456-426614174004",
"businessRegistrationCertificateDocumentId": "123e4567-e89b-12d3-a456-426614174005",
"payrollDocumentId": "123e4567-e89b-12d3-a456-426614174006",
"employmentBankStatementDocumentId": "123e4567-e89b-12d3-a456-426614174007",
"financialInformationDocumentId": "123e4567-e89b-12d3-a456-426614174008",
"investmentStatementDocumentId": "123e4567-e89b-12d3-a456-426614174009",
"rentalBankStatementDocumentId": "123e4567-e89b-12d3-a456-426614174010",
"buyAndSellAgreementDocumentId": "123e4567-e89b-12d3-a456-426614174011",
"loanAgreementDocumentId": "123e4567-e89b-12d3-a456-426614174012",
"shares": [
{
"sharePercentage": 50,
"type": "COMMON"
}
]
}
],
"corporates": [
{
"isDirector": true,
"isShareholder": true,
"isBeneficialOwner": true,
"companyName": "Acme Holdings Ltd.",
"companyCountryCode": "SG",
"companyStateCode": "SG",
"governmentBusinessId": "SG12345678",
"title": "MR",
"firstName": "James",
"middleName": "B",
"lastName": "Smith",
"email": "[email protected]",
"certificateOfIncorporationDocumentId": "123e4567-e89b-12d3-a456-426614174013",
"businessProfileDocumentId": "123e4567-e89b-12d3-a456-426614174014",
"groupOwnershipStructureChartDocumentId": "123e4567-e89b-12d3-a456-426614174015",
"previousCompanyName": "Smith Enterprises",
"interestHeldPercentage": 50,
"sourceOfWealth": "INVESTMENT_INCOME",
"sourceOfWealthOthers": "",
"wealthSourcesDescription": "Dividends from holdings.",
"registrationOfDirectorsDocumentId": "123e4567-e89b-12d3-a456-426614174016",
"businessRegistrationCertificateDocumentId": "123e4567-e89b-12d3-a456-426614174017",
"payrollDocumentId": "123e4567-e89b-12d3-a456-426614174018",
"employmentBankStatementDocumentId": "123e4567-e89b-12d3-a456-426614174019",
"financialInformationDocumentId": "123e4567-e89b-12d3-a456-426614174020",
"investmentStatementDocumentId": "123e4567-e89b-12d3-a456-426614174021",
"rentalBankStatementDocumentId": "123e4567-e89b-12d3-a456-426614174022",
"buyAndSellAgreementDocumentId": "123e4567-e89b-12d3-a456-426614174023",
"loanAgreementDocumentId": "123e4567-e89b-12d3-a456-426614174024",
"shares": [
{
"sharePercentage": 50,
"type": "PREFERRED"
}
]
}
]
}
响应示例:
{
"incorporationId": "9f1346c0-ee07-4ec1-b82c-b7096613a735"
}
重要注意事项:
确保根据 Swagger 模式提供所有标记为必需的字段。
在以 DocumentId 结尾的字段中使用前述步骤的 documentId。
附加信息
字段映射
开发者需要将其内部数据映射到对应的 Vistra API 字段。例如:
proofOfIdentificationDocumentId → 身份证明文件的 ID
proofOfAddressDocumentId → 地址证明文件的 ID
其他文件字段请参阅注册请求模式。
常见错误
401 Unauthorized:确保包含有效的访问令牌。
400 Bad Request:检查请求负载中的缺失或无效字段。
422 Unprocessable Entity:确保已完成所有所需文件的上传过程。
更新日志
• v1.0:Vistra API 的初始版本发布。