Company

People are a core part of the Checkmate system - the very reason Checkmate exists is so you can securely view, share and edit personal identity documents. On this page, we'll dive into the fields available on the Person model and how you can use them to create entities programatically.

The company entity

The person entity contains all the information about an individual, such as their legal identity, address, contact information and bank accounts. Each structure is individually encrypted, allowing fine-grained access and sharing. Many of the fields applicable to people are also applicable to companies, (e.g bank accounts). For details on these models you can refer to their individual docs.

Properties

  • Name
    incorporationDetails
    Type
    Company.IncorporationDetails
    Description

    Company incorporation details, like legal name and registered office

  • Name
    businessDetails
    Type
    Company.BusinessDetails
    Optional
    Optional
    Description

    Description, business activities and licensing information

  • Name
    taxDetails
    Type
    Company.TaxDetails
    Optional
    Optional
    Description

    VAT number, Tax ID and returns documents

  • Name
    bankAccounts
    Type
    Company.BankAccounts
    Optional
    Optional
    Description

    List of bank accounts that the company controls

  • Name
    emails
    Type
    Company.EmailAddresses
    Optional
    Optional
    Description

    Email address claims, with verification attestations.

  • Name
    phoneNumbers
    Type
    Company.PhoneNumbers
    Optional
    Optional
    Description

    Phone number claims, with verification attestations.

  • Name
    walletAddresses
    Type
    Company.WalletAddresses
    Optional
    Optional
    Description

    Wallet address claims, with verification attestations.

  • Name
    partnershipExtension
    Type
    Company.PartnershipExtension
    Optional
    Optional
    Description

    Fields specific to partnership entities

  • Name
    trustExtension
    Type
    Company.TrustExtension
    Optional
    Optional
    Description

    Fields specific to trust company entities

  • Name
    fundExtension
    Type
    Company.FundExtension
    Optional
    Optional
    Description

    Fields specific to funds company entities

  • Name
    llcExtension
    Type
    Company.LLCExtension
    Optional
    Optional
    Description

    Fields specific to LLC/LLP entities

  • Name
    scCorpExtension
    Type
    Company.SCCorpExtension
    Optional
    Optional
    Description

    Fields specific to S-Corp and C-Corp entities

Creating a company

You can create a company entity directly as shown here, or you can initialise each of the fields seperately.

import { Company, CompanyStatus, CompanyType, CompanyPurpose, IndustryClassificationStandard } from '@checkmateid/sdk'

const company = new Company({
  incorporationDetails: {
    name: 'Certi Holdings Limited',
    status: CompanyStatus.Active,
    type: CompanyType.PrivateLimitedByShares,
    country: 'GB',
    companyNumber: '12345678',
    incorporationDate: '2022-04-01',
    registeredOffice: {
      streetAddress: '3590 Williams Avenue',
      locality: 'Los Angeles',
      region: 'California',
      postalCode: '90017',
      country: 'US',
    },
  },
  businessDetails: {
    description: 'Certi Holdings is the parent co for Checkmate...',
    purpose: CompanyPurpose.Generic,
    industryClassification: {
      standard: IndustryClassificationStandard.SIC_GB,
      codes: ['46180', '90030']
    },
    dunsNumber: '123456789',
  },
  taxDetails: {
    taxId: '12345678',
    vatNumber: '12345678'
  },
  bankAccounts: [{
    label: 'Primary Deposit',
    currencies: ['GBP', 'USD', 'EUR'],
    institution: {
      name: 'Revolut Ltd',
      address: {
        streetAddress: '7 Westferry Circus',
        locality: 'London',
        region: '',
        postalCode: 'E14 4HD',
        country: 'GB',
      }
    },
    type: BankAccountType.SWIFT,
    iban: 'GB55REVO00996904854211',
    bic: 'REVOGB21',
    intermediaryBic: 'CHASGB2L',
  }]
})

9

Incorporation Details

Stores all the information related to the companies incorporation.

Properties

  • Name
    name
    Type
    string
    Field ID
    ID: 1
    Description

    Registered name of the company

  • Name
    status
    Type
    CompanyStatus
    Field ID
    ID: 2
    Description

    Status of the company

    • Active
    • Dissolved
  • Name
    type
    Type
    CompanyType
    Field ID
    ID: 3
    Description

    Type of company

    • PublicLimitedCompany
    • PrivateLimitedByGuarantee
    • PrivateLimitedByShares
    • PrivateUnlimitedCompany
    • LimitedLiabilityCompany
    • LimitedLiabilityPartnership
    • Partnership
    • Corporation
    • SCorporation
    • SoleProprietorship
    • Cooperative
  • Name
    country
    Type
    string
    Field ID
    ID: 4
    Description

    Registration jurisdiction, as an ISO 3166-1 (alpha-2) country code

  • Name
    companyNumber
    Type
    string
    Field ID
    ID: 5
    Description

    Company number, as provided by the registration jurisdiction. This field is optional if type is:

    • Partnership
    • SoleProprietorship
  • Name
    incorporationDate
    Type
    string
    Field ID
    ID: 6
    Description

    Date the company was incorporated, as an ISO 8601 date. This field is optional if type is:

    • Partnership
    • SoleProprietorship
  • Name
    dissolutionDate
    Type
    string
    Optional
    Optional
    Field ID
    ID: 7
    Description

    Date the company was dissolved, as an ISO 8601 date

  • Name
    address
    Type
    PostalAddress
    Field ID
    ID: 8
    Description

    Current office or registered business address.

    • Name
      streetAddress
      Type
      string
      Description

      Full street address, including house number

    • Name
      locality
      Type
      string
      Description

      City or locality component

    • Name
      region
      Type
      string
      Optional
      Optional
      Description

      State, province, prefecture or region component

    • Name
      postalCode
      Type
      string
      Description

      ZIP code or postal code component

    • Name
      country
      Type
      string
      Description

      ISO 3166-1 (alpha-2) country code

  • Name
    evidence
    Type
    Evidence[]
    Optional
    Optional
    Field ID
    ID: 4094
    Description

    Array of evidence objects supporting this claim. Supports the following document types:

    • MemorandumOfAssoc
    • ArticlesOfAssoc
    • IncorporationCert

Usage

import { Company, CompanyStatus, CompanyType } from '@checkmateid/sdk'

const incorporationDetails = new Company.IncorporationDetails({
  name: 'Certi Holdings Limited',
  status: CompanyStatus.Active,
  type: CompanyType.PrivateLimitedByShares,
  country: 'GB',
  companyNumber: '12345678',
  incorporationDate: '2022-04-01',
  address: {
    streetAddress: '3590 Williams Avenue',
    locality: 'Los Angeles',
    region: 'California',
    postalCode: '90017',
    country: 'US',
  },
  evidence: [],
})

10

Business Details

Stores all the information related to the companies business activities, purpose and description.

Properties

  • Name
    description
    Type
    string
    Optional
    Optional
    Field ID
    ID: 1
    Description

    Description of the business and any activities. Supports markdown formatting.

  • Name
    purpose
    Type
    CompanyPurpose
    Optional
    Optional
    Field ID
    ID: 2
    Description

    What this company will be used for. Used to inform the UI on the various extensions that should be required.

    • Generic
    • Foundation - marks foundationExtension as required
    • Fund - marks fundExtension as required
    • Trust - marks trustExtension as required
    • UnitTrust - marks trustExtension as required
    • BareTrust - marks trustExtension as required
    • PTC - marks trustExtension as required
  • Name
    industryClassification
    Type
    CompanyIndustry
    Optional
    Optional
    Field ID
    ID: 3
    Description

    Standard classification codes for business activities

    • Name
      standard
      Type
      IndustryClassificationStandard
      Description

      The jurisdiction-dependant standard used for classification

      • SIC_US
      • SIC_GB
      • NAICS
    • Name
      codes
      Type
      string[]
      Description

      Array of classification codes

  • Name
    dunsNumber
    Type
    string
    Optional
    Optional
    Field ID
    ID: 4
    Description

    D-U-N-S® number, issued by Dun & Bradstreet

  • Name
    structureChart
    Type
    Attachment
    Optional
    Optional
    Field ID
    ID: 5
    Description

    Attachment containing a graphic structure chart of the company

  • Name
    businessLicense
    Type
    Attachment
    Optional
    Optional
    Field ID
    ID: 6
    Description

    Attachment containing the business license

Usage

import { Company, CompanyPurpose, IndustryClassificationStandard } from '@checkmateid/sdk'

const businessDetails = new Company.BusinessDetails({
  description: 'Certi Holdings is the parent co for Checkmate...',
  purpose: CompanyPurpose.Generic,
  industryClassification: {
    standard: IndustryClassificationStandard.SIC_GB,
    codes: ['46180', '90030']
  },
  dunsNumber: '123456789',
})

11

Tax Details

Stores all the information related to the companies tax registration and requirements.

Properties

  • Name
    taxId
    Type
    string
    Field ID
    ID: 1
    Description

    Tax identification number or ID

  • Name
    vatNumber
    Type
    string
    Optional
    Optional
    Field ID
    ID: 2
    Description

    VAT number

Usage

import { Company } from '@checkmateid/sdk'

const taxDetails = new Company.TaxDetails({
  taxId: '12345678',
  vatNumber: '12345678'
})

12

Bank Accounts

Attach a list of bank accounts that are controlled by the person.

  • Name
    label
    Type
    string
    Optional
    Optional
    Description

    Human-readable label for the account

  • Name
    currencies
    Type
    string[]
    Optional
    Optional
    Description

    Array of ISO 4217 currency codes that this account accepts

  • Name
    beneficiary
    Type
    BankAccountBeneficiary
    Optional
    Optional
    Description

    The account beneficiary. This should usually be the same as the incorporation details.

    • Name
      name
      Type
      string
      Description

      Full name of the beneficiary

    • Name
      address
      Type
      PostalAddress
      Description

      Address of the beneficiary

  • Name
    institution
    Type
    BankAccountInstitution
    Optional
    Optional
    Description

    Name and address of the bank.

    • Name
      name
      Type
      string
      Description

      Legal name of the bank

    • Name
      address
      Type
      PostalAddress
      Description

      Address of the bank

  • Name
    type
    Type
    BankAccountType
    Description

    Type of transfer supported by this account

    • FasterPayments
    • SWIFT
    • ACH
    • Wire
  • Name
    accountNumber
    Type
    string
    Description

    Account number. Required if type is FasterPayments, ACH or Wire.

  • Name
    achRoutingNumber
    Type
    string
    Description

    ACH routing number. Required if type ACH.

  • Name
    wireRoutingNumber
    Type
    string
    Description

    Wire routing number. Required if type Wire.

  • Name
    sortCode
    Type
    string
    Description

    Sort code. Required if type FasterPayments.

  • Name
    iban
    Type
    string
    Description

    IBAN (International Bank Account Number). Required if type SWIFT.

  • Name
    bic
    Type
    string
    Description

    BIC (Bank Identification Code). Required if type SWIFT.

  • Name
    intermediaryBic
    Type
    string
    Optional
    Optional
    Description

    Intermediary BIC, if required. Only used if type SWIFT.

Usage

import { Company, BankAccountType } from '@checkmateid/sdk'

const bankAccounts = new Company.BankAccounts([
  {
    label: 'Primary Deposit',
    currencies: ['GBP', 'USD', 'EUR'],
    institution: {
      name: 'Revolut Ltd',
      address: {
        streetAddress: '7 Westferry Circus',
        locality: 'London',
        region: '',
        postalCode: 'E14 4HD',
        country: 'GB',
      }
    },
    type: BankAccountType.SWIFT,
    iban: 'GB55REVO00996904854211',
    bic: 'REVOGB21',
    intermediaryBic: 'CHASGB2L',
  }
])

13

Email Addresses

Attach email addresses to a profile. You can request verification, which will send a single-use code that can be exchanged for a verification attestation signed by Checkmate.

  • Name
    value
    Type
    string
    Description

    Email address

  • Name
    label
    Type
    string
    Optional
    Optional
    Description

    Human-readable label for this email

  • Name
    person
    Type
    EmailAddress.Person
    Optional
    Optional
    Description

    Details about the email receipient

    • Name
      name
      Type
      string
      Description

      The recipients name

    • Name
      role
      Type
      string
      Optional
      Optional
      Description

      Their role at the company

Usage

import { Company, EmailAddress } from '@checkmateid/sdk'

const technicalContact = new EmailAddress({
  label: 'Technical Contact',
  value: 'richard@piedpiper.com',
  person: {
    name: 'Richard Hendricks',
    role: 'CTO',
  },
})

// Request a verification code (optional)
await technicalContact.requestOTP();

// Exchange verification code for an attestation
await technicalContact.confirmOTP('123456');

const emails = new Company.EmailAddresses([
  technicalContact,
])

14

Phone Numbers

Attach phone numbers to a profile. You can request verification, which will send a single-use code that can be exchanged for a verification attestation signed by Checkmate.

  • Name
    value
    Type
    string
    Description

    Phone number, as an E.164 string

  • Name
    label
    Type
    string
    Optional
    Optional
    Description

    Human-readable label for this phone number

  • Name
    person
    Type
    PhoneNumber.Person
    Optional
    Optional
    Description

    Details about the phone numbers contact person

    • Name
      name
      Type
      string
      Description

      The recipients name

    • Name
      role
      Type
      string
      Optional
      Optional
      Description

      Their role at the company

Usage

import { Company, PhoneNumber } from '@checkmateid/sdk'

const technicalContact = new PhoneNumber({
  label: 'Technical Contact',
  value: '+16613063363',
  person: {
    name: 'Richard Hendricks',
    role: 'CTO',
  },
})

// Request a verification SMS (optional)
await technicalContact.requestOTP();

// Exchange verification SMS for an attestation
await technicalContact.confirmOTP('123456');

const phoneNumbers = new Company.PhoneNumbers([
  technicalContact,
  // Or add an unverified phone number
  {
    label: 'Front Office',
    value: '+12134706240',
  }
])

15

Wallet Addresses

Attach wallet addresses to a profile. Ownership can be verified by signing each entry with the corresponding wallet.

  • Name
    address
    Type
    string
    Description

    Wallet address

  • Name
    label
    Type
    string
    Optional
    Optional
    Description

    Human-readable label for this wallet address

  • Name
    chains
    Type
    string[]
    Optional
    Optional
    Description

    Array of chain IDs that this wallet can transact in

  • Name
    publicKey
    Type
    string
    Optional
    Optional
    Description

    Hex-encoded public key of the wallet

Usage

import { Company, WalletAddress } from '@checkmateid/sdk'

const trezor = new WalletAddress({
  address: '0x0c4006807b19387211f6fd07B98157FfBD8C9415',
  label: 'Trezor',
  chains: ['1', '137'], // supports Ethereum & Polygon
})

// Request a challenge
const message = await trezor.requestChallenge()

// Sign the message, then request verification
await trezor.verifyChallengeResponse({ message, signature })

const walletAddresses = new Company.WalletAddresses([
  trezor
])

16

Partnership Extension

Fields specific to partnership entities.

  • Name
    type
    Type
    string
    Description

    The type of partnership

    • General
    • Limited
  • Name
    agreement
    Type
    Attachment
    Description

    Partnership agreement document

  • Name
    profitShares
    Type
    ProfitShare[]
    Optional
    Optional
    Description

    Represents the share of profits between entities in the partnership. The total shares must add up to 100%.

    • Name
      name
      Type
      string
      Description

      The name of the entity entitled to the share

    • Name
      share
      Type
      number
      Description

      Their percentage share

Usage

import { Company, Attachment, AttachmentType, PartnershipType } from '@checkmateid/sdk'

const agreement = await Attachment.create({
  file,
  type: AttachmentType.PartnershipAgreement,
})

const partnershipExtension = new Company.PartnershipExtension({
  type: PartnershipType.General,
  agreement,
  profitShares: [
    {
      name: 'John Doe',
      share: 60,
    },
    {
      name: 'Peter Parker',
      share: 40,
    }
  ]
})

17

Trust Extension

Fields specific to trust fund entities.

  • Name
    type
    Type
    string
    Description

    The type of partnership

    • General
    • Limited
  • Name
    agreement
    Type
    Attachment
    Description

    Trust agreement document

  • Name
    low
    Type
    Attachment
    Description

    Letter of Wishes document

  • Name
    principles
    Type
    Attachment
    Description

    Principles document

  • Name
    declaration
    Type
    Attachment
    Description

    Declaration of trust document

Usage

import { Company, Attachment, AttachmentType, PartnershipType } from '@checkmateid/sdk'

const agreement = await Attachment.create({
  file,
  type: AttachmentType.PartnershipAgreement,
})

const trustExtension = new Company.TrustExtension({
  type: PartnershipType.General,
  agreement,
  profitShares: [
    {
      name: 'John Doe',
      share: 60,
    },
    {
      name: 'Peter Parker',
      share: 40,
    }
  ]
})

18

Fund Extension

todo


19

LLC & LLP Extension

todo


20

S-Corp & C-Corp Extension

todo


Was this page helpful?