Company API
Overview
The Company API enables partners to manage company entities within the system. This API provides comprehensive functionality for creating companies, retrieving company information with advanced filtering capabilities, and managing company-related documents. All operations support full KYB data structures including company details, license profiles, payment profiles, financial information, and compliance data.
Authentication
All Company API endpoints require authentication using API Key credentials.
Required Headers
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY
Both headers must be present in every request. Missing or invalid credentials will result in a 401 Unauthorized response.
Endpoints
Create Company
Creates a new company entity with full KYB information.
POST /api/companies
Request Headers
Content-Type: application/json
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY
Request Body
The request body accepts comprehensive company information organized into multiple sections.
Core Company Fields
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Legal name of the company |
| tradingName | string | No | Trading name if different from legal name |
| address | AddressDTO | No | Legal address of the company |
| businessAddress | AddressDTO | No | Business address if different from legal address |
| companyType | string | No | Type of company entity |
| companyStatus | string | No | Current status of the company |
| registrationNumber | string | No | Company registration number |
| countryOfIncorporation | string | No | Country where company is incorporated |
| dateOfIncorporation | string (ISO 8601) | No | Date of incorporation |
| establishedYear | number | No | Year business was established |
| industry | string | No | Primary industry |
| subIndustry | string | No | Sub-industry classification |
| industryCode | string | No | NACE/TOL industry code |
| use | string | No | Company use type |
| typeOther | string | No | Other company use description |
| numberOfEmployees | number | No | Total number of employees |
| isInGroupStructure | boolean | No | Whether entity is part of a group structure |
| detailedDescriptionOfProducts | string | No | Detailed description of products and services |
| sourceOfWealth | string | No | Description of source of wealth |
| geographicAreas | string[] | No | Geographic areas of operation |
| geographicAreaOther | string | No | Other geographic areas specification |
| isDormancy | boolean | No | Whether there have been periods of dormancy |
| dormancyStartDate | string (ISO 8601) | No | Start date of dormancy period |
| dormancyEndDate | string (ISO 8601) | No | End date of dormancy period |
| serviceNumber | string[] | No | Service numbers |
Address DTO
interface AddressDTO {
addressLine1?: string;
addressLine2?: string;
city?: string;
country?: string;
postCode?: string;
}
Contact Details
interface ContactDetailsDTO {
corporateWebsite?: string;
generalEmail?: string;
invoiceEmail?: string;
telegram?: string;
skype?: string;
telephone?: string;
customerLanguageSupport?: string[];
other?: string;
}
| Field | Type | Description |
|---|---|---|
| contactDetails | ContactDetailsDTO | Contact information for the company |
| socialProfiles | SocialProfileDTO[] | Array of social media profiles |
| customerSupportContact | string | Customer support contact information |
| customerSupportHours | string | Customer support hours |
| contactPersonName | string | Contact person name |
License Profile
interface LicenseProfileDTO {
isEntityObligatedToHaveLicense?: string;
licenseInformations?: LicenseInformationDTO[];
}
interface LicenseInformationDTO {
natureOfTheLicense?: string;
countryOfIssue?: string;
nameOfTheIssuer?: string;
licenseNumber?: string;
licenseApprovalStartDate?: string;
licenseExpiration?: string;
urlLicensedPlatform?: string;
countryLicenseAllowToOperate?: string[];
countryBannedByLicense?: string[];
nameEgamingRegulatoryAuthority?: string;
legalGeos?: string;
businessGeos?: string;
servicesLicenseAllow?: string;
isLicenseRevoked?: string;
isLicenseFined?: string;
isMaterialRegulatoryFindings?: string;
brands?: BrandDTO[];
}
interface BrandDTO {
gamingWebsite?: string;
countries?: string[];
login?: string;
password?: string;
ipWhiteList?: string;
gamingOperationLiveFor?: string;
}
Payment Profile
interface CashierInformationDTO {
useACashier?: string;
whichCashier?: string;
havePciDss?: string;
ipAddress?: string;
}
interface CurrentPaymentsInformationDTO {
chargebacks?: number;
chargesbackRatio?: number;
chargebackVolume?: number;
chargebackNotificationEmail?: string;
refundsVolume?: number;
numberOfRefunds?: number;
alternativePaymentMethods?: string[];
currentCardTypes?: string[];
requiredCardType?: string[];
currentlyUsingCard?: string[];
currentProcessingCurrency?: string[];
desiredProcessingCurrency?: string[];
desiredSettlementCurrency?: string[];
otherPaymentMethods?: string;
cardTransaction?: string;
cardHolderData?: string;
}
interface PaymentOperationsDTO {
typeOfTechnicalIntegration?: string[];
paymentTypesCurrentlyOffered?: string[];
customerCharged?: string[];
transactionTypeRequired?: string[];
emailReceipt?: string;
fulfilOrders?: string;
affiliateProgrammes?: string;
affiliateProgrammesDetails?: string;
emailForRiskNotifications?: string;
}
interface TechnicalInformationDTO {
implementPreventiveControls?: string;
excludeUsResidentsAndUsCitizens?: string;
acceptPrepaidCards?: string;
technologiesForOnlineGambling?: string;
nameTestingAgency?: string;
addressTestingAgency?: string;
acceptClientsUseVpn?: string;
storeIpAddresses?: string;
}
Financial Profile
interface BankInformationDTO {
isBeneficiaryNameSameAsCompany?: boolean;
beneficiaryName?: string;
bankName?: string;
iban?: string;
swiftCode?: string;
companyBankInformationRegistrationNumber?: string;
companyBankInformationAddressLine1?: string;
companyBankInformationAddressLine2?: string;
bankType?: string;
otherBankType?: string;
bankAccountPriority?: number;
}
interface BankAccountInformationDTO {
bankUse?: string[];
baseCurrency?: string[];
additionalCurrency?: string[];
turnoverEstimatedMonthly?: number;
estimatedMonthlyTransaction?: number;
minTransactionAmount?: number;
maxTransactionAmount?: number;
countriesFundsSentTo?: string[];
countriesFundsReceive?: string[];
blockedCountries?: string[];
}
interface CryptoInformationDTO {
wallets?: CryptoWalletDTO[];
}
interface CryptoWalletDTO {
walletAddress?: string;
cryptoType?: string;
}
| Field | Type | Description |
|---|---|---|
| vatNumber | string | VAT registration number |
| taxNumber | string | Tax identification number |
| bankInformation | BankInformationDTO[] | Array of bank account information |
| bankAccountInformation | BankAccountInformationDTO | Bank account related information |
| cryptoInformation | CryptoInformationDTO | Cryptocurrency wallet information |
AML and Compliance Profile
interface ComplianceInformationDTO {
fraudPreventionTools?: string;
verifyIdentityCustomer?: string;
verifyFieldsName?: string;
identityDocumentAccepted?: string;
identityDocumentOther?: string;
verifyFieldsSurname?: string;
verifyFieldsBirthDate?: string;
verifyFieldsNationality?: string;
verifyFieldsResidence?: string;
verifyAddressCustomer?: string;
proofOfAddressAccepted?: string;
proofOfAddressAcceptedOther?: string;
estimationOfMonthlyTurnover?: string;
annualTurnover?: string;
annualTurnoverThreeYears?: string;
percentageReturnToPlayer?: string;
fraudPreventionTechniques?: string;
betAmountBelowIdentityOfCustomerIsNotRequested?: string;
betAmountBelowIdentityOfCustomerIsNotRequestedAmount?: string;
jurisdictionSubjectOnlineGamingSector?: string;
nameOfTheMoneyLaunderingControlAuthority?: string;
addressOfTheMoneyLaunderingControlAuthority?: string;
programSetsAmlCftAndSanctionsStandards?: string;
useThirdPartiesToCarryOut?: string;
useThirdPartiesToCarryOutDetail?: string;
companyMlroId?: string;
companyMlroName?: string;
companyMlroSurname?: string;
companyMlroEmail?: string;
complianceOfficerId?: string;
complianceOfficerName?: string;
complianceOfficerSurname?: string;
complianceOfficerEmail?: string;
}
Request Example
{
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"telephone": "+356 1234 5678"
},
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01",
"licenseExpiration": "2025-02-01"
}
]
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate"
}
],
"vatNumber": "MT12345678",
"taxNumber": "12345678"
}
Response
{
"statusCode": 201,
"data": {
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15T00:00:00.000Z",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"telephone": "+356 1234 5678"
},
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01T00:00:00.000Z",
"licenseExpiration": "2025-02-01T00:00:00.000Z"
}
]
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate"
}
],
"vatNumber": "MT12345678",
"taxNumber": "12345678",
"organizationId": "68d3ad818d15e761ce20d439",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
| statusCode | number | HTTP status code |
| data | CompanyResponseDto | Created company object with all submitted fields plus system-generated fields |
Get Companies
Retrieves a paginated list of companies with advanced filtering and search capabilities.
GET /api/companies
Request Headers
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| search | string | No | Search term to filter companies by name, trading name, or registration number |
| companyType | string | No | Filter by company type |
| countryOfIncorporation | string | No | Filter by country of incorporation |
| companyStatus | string | No | Filter by company status |
| industry | string | No | Filter by industry |
| sortBy | string | No | Field to sort by (default: createdAt) |
| sortOrder | string | No | Sort direction: asc or desc (default: desc) |
| page | number | No | Page number for pagination (default: 1) |
| limit | number | No | Number of items per page (default: 10) |
Request Example
GET /api/companies?search=Gaming&companyStatus=Active&page=1&limit=20&sortBy=name&sortOrder=asc
Response
{
"statusCode": 200,
"data": {
"items": [
{
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
],
"total": 1,
"page": 1,
"limit": 20,
"totalPages": 1
}
}
Response Structure
interface CompaniesListResponseDto {
statusCode: number;
data: {
items: CompanyResponseDto[];
total: number;
page: number;
limit: number;
totalPages: number;
};
}
| Field | Type | Description |
|---|---|---|
| statusCode | number | HTTP status code |
| data.items | CompanyResponseDto[] | Array of company objects matching the filters |
| data.total | number | Total number of companies matching the query |
| data.page | number | Current page number |
| data.limit | number | Number of items per page |
| data.totalPages | number | Total number of pages available |
Get Company by ID
Retrieves detailed information for a specific company.
GET /api/companies/{id}
Replace \{id\} with the actual company ID.
Request Headers
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY
Request Example
GET /api/companies/68d377b43f9dd9524d312c1c
Response
{
"statusCode": 200,
"data": {
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15T00:00:00.000Z",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"subIndustry": "Casino Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"businessAddress": {
"addressLine1": "456 Office Avenue",
"city": "Sliema",
"country": "Malta",
"postCode": "SLM 5678"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"invoiceEmail": "invoices@example-gaming.com",
"telephone": "+356 1234 5678"
},
"socialProfiles": [
{
"socialMediaType": "LinkedIn",
"socialProfile": "example-gaming"
}
],
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01T00:00:00.000Z",
"licenseExpiration": "2025-02-01T00:00:00.000Z",
"countryLicenseAllowToOperate": ["Malta", "Germany", "Spain"],
"brands": [
{
"gamingWebsite": "https://example-casino.com",
"countries": ["Malta", "Germany"],
"gamingOperationLiveFor": "3 years"
}
]
}
]
},
"cashierInformation": {
"useACashier": "Yes",
"whichCashier": "Example Payment Provider",
"havePciDss": "Yes"
},
"currentPaymentsInformation": {
"chargebacks": 5,
"chargesbackRatio": 0.2,
"currentCardTypes": ["Visa", "Mastercard"],
"currentProcessingCurrency": ["EUR", "USD"]
},
"paymentOperations": {
"typeOfTechnicalIntegration": ["API"],
"paymentTypesCurrentlyOffered": ["Credit Card", "E-Wallet"],
"emailReceipt": "Yes"
},
"technicalInformation": {
"implementPreventiveControls": "Yes",
"excludeUsResidentsAndUsCitizens": "Yes",
"storeIpAddresses": "Yes"
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate",
"bankAccountPriority": 1
}
],
"bankAccountInformation": {
"bankUse": ["Operational"],
"baseCurrency": ["EUR"],
"turnoverEstimatedMonthly": 500000,
"estimatedMonthlyTransaction": 10000
},
"cryptoInformation": {
"wallets": [
{
"walletAddress": "0x1234567890abcdef",
"cryptoType": "Bitcoin"
}
]
},
"vatNumber": "MT12345678",
"taxNumber": "12345678",
"complianceInformation": {
"verifyIdentityCustomer": "Yes",
"verifyAddressCustomer": "Yes",
"fraudPreventionTools": "Example Fraud Detection System",
"companyMlroName": "John",
"companyMlroSurname": "Doe",
"companyMlroEmail": "mlro@example-gaming.com"
},
"organizationId": "68d3ad818d15e761ce20d439",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
}
Response Structure
interface CompanyResponseDto {
statusCode: number;
data: {
_id: string;
name: string;
tradingName?: string;
registrationNumber?: string;
countryOfIncorporation?: string;
dateOfIncorporation?: string;
establishedYear?: number;
companyType?: string;
companyStatus?: string;
industry?: string;
subIndustry?: string;
industryCode?: string;
use?: string;
typeOther?: string;
numberOfEmployees?: number;
isInGroupStructure?: boolean;
detailedDescriptionOfProducts?: string;
sourceOfWealth?: string;
geographicAreas?: string[];
geographicAreaOther?: string;
isDormancy?: boolean;
dormancyStartDate?: string;
dormancyEndDate?: string;
serviceNumber?: string[];
address?: AddressDTO;
businessAddress?: AddressDTO;
contactDetails?: ContactDetailsDTO;
socialProfiles?: SocialProfileDTO[];
customerSupportContact?: string;
customerSupportHours?: string;
contactPersonName?: string;
licenseProfile?: LicenseProfileDTO;
cashierInformation?: CashierInformationDTO;
currentPaymentsInformation?: CurrentPaymentsInformationDTO;
paymentOperations?: PaymentOperationsDTO;
technicalInformation?: TechnicalInformationDTO;
bankInformation?: BankInformationDTO[];
bankAccountInformation?: BankAccountInformationDTO;
cryptoInformation?: CryptoInformationDTO;
vatNumber?: string;
taxNumber?: string;
complianceInformation?: ComplianceInformationDTO;
organizationId: string;
createdAt: string;
updatedAt: string;
};
}
Get Company Documents
Retrieves all documents associated with a specific company, organized by document type.
GET /api/companies/{id}/documents
Replace \{id\} with the actual company ID.
Request Headers
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY
Request Example
GET /api/companies/68d377b43f9dd9524d312c1c/documents
Response
{
"statusCode": 200,
"data": {
"documents": [
{
"documentField": "certificateOfIncorporation",
"documentLabel": "Certificate of Incorporation - English",
"files": [
{
"_id": "68d3ad818d15e761ce20d440",
"name": "certificate_of_incorporation.pdf",
"extension": "pdf",
"size": 245678,
"url": "https://storage.example.com/documents/certificate_of_incorporation.pdf",
"uploadedAt": "2025-03-15T10:35:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d441",
"name": "Certificate of Incorporation",
"path": "/companies/68d377b43f9dd9524d312c1c/certificateOfIncorporation"
}
},
{
"documentField": "memorandumAndArticlesOfAssociation",
"documentLabel": "Memorandum and Articles of Association - English",
"files": [
{
"_id": "68d3ad818d15e761ce20d442",
"name": "articles_of_association.pdf",
"extension": "pdf",
"size": 512345,
"url": "https://storage.example.com/documents/articles_of_association.pdf",
"uploadedAt": "2025-03-15T10:36:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d443",
"name": "Memorandum and Articles of Association",
"path": "/companies/68d377b43f9dd9524d312c1c/memorandumAndArticlesOfAssociation"
}
},
{
"documentField": "bankStatement",
"documentLabel": "Bank Statement",
"files": [
{
"_id": "68d3ad818d15e761ce20d444",
"name": "bank_statement_march_2025.pdf",
"extension": "pdf",
"size": 189456,
"url": "https://storage.example.com/documents/bank_statement_march_2025.pdf",
"uploadedAt": "2025-03-15T10:37:00.000Z"
},
{
"_id": "68d3ad818d15e761ce20d445",
"name": "bank_statement_february_2025.pdf",
"extension": "pdf",
"size": 175234,
"url": "https://storage.example.com/documents/bank_statement_february_2025.pdf",
"uploadedAt": "2025-03-15T10:38:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d446",
"name": "Bank Statement",
"path": "/companies/68d377b43f9dd9524d312c1c/bankStatement"
}
}
]
}
}
Response Structure
interface CompanyDocumentsResponseDto {
statusCode: number;
data: {
documents: DocumentGroupDto[];
};
}
interface DocumentGroupDto {
documentField: string;
documentLabel: string;
files: DocumentFileDto[];
folder: FolderDetailsDto;
}
interface DocumentFileDto {
_id: string;
name: string;
extension: string;
size: number;
url: string;
uploadedAt: string;
}
interface FolderDetailsDto {
_id: string;
name: string;
path: string;
}
| Field | Type | Description |
|---|---|---|
| statusCode | number | HTTP status code |
| data.documents | DocumentGroupDto[] | Array of document groups, each representing a document type |
| documentField | string | Internal field identifier for the document type |
| documentLabel | string | Human-readable label for the document type |
| files | DocumentFileDto[] | Array of files uploaded for this document type |
| folder | FolderDetailsDto | Folder information where documents are stored |
Supported Document Types
The following document types are supported for companies:
- Certificate of Incorporation
- Memorandum and Articles of Association
- Certificate of Registered Offices
- Certificate of Director and Secretary
- Certificate of Shareholder
- VAT Certificate
- Certificate of Incumbency
- Company Structure
- Bank Statement
- Business Plan
- Business License
- Company Share Registry
- AML and Operation Policies
- AML Responsible Gaming
- Terms and Conditions
- KYC Policy
- Financial Statements
- Certificate of Good Standing
- License Certificate
- Additional Documents
Error Responses
401 Unauthorized
Returned when authentication credentials are missing or invalid.
{
"statusCode": 401,
"message": "Unauthorized",
"error": "Invalid API credentials"
}
404 Not Found
Returned when the requested company does not exist.
{
"statusCode": 404,
"message": "Company not found",
"error": "Not Found"
}
400 Bad Request
Returned when the request body contains invalid data.
{
"statusCode": 400,
"message": ["name must be a string", "name should not be empty"],
"error": "Bad Request"
}
500 Internal Server Error
Returned when an unexpected error occurs on the server.
{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error"
}
Usage Notes
- All endpoints require valid API credentials in the request headers.
- Company creation validates that required fields are provided and properly formatted.
- Dates should be provided in ISO 8601 format (YYYY-MM-DD or full ISO timestamp).
- Array fields accept multiple values where applicable.
- The search parameter in GET /api/companies searches across company name, trading name, and registration number fields.
- Pagination is 1-indexed, with page 1 being the first page.
- Default sorting is by creation date in descending order (newest first).
- Document URLs are temporary and should be accessed within the validity period.
- Some fields are interdependent. For example, if isDormancy is true, dormancyStartDate and dormancyEndDate should be provided.
- The system automatically creates folder structures for document storage when a company is created.