Skip to main content

Onboard a limited company

To onboard a limited company, you will need to capture information about the company itself and also verify the identities of any company directors or people with significant control (PSCs).

This guide covers Verify, our automated onboarding product.

To check the different types of entities you can onboard using Verify, see Entities we onboard.


There are four steps to onboarding a company with Verify.

  1. Capture the company information
  2. Run the verification
  3. Send ID&V requests to directors and PSCs
  4. View the risk assessment outcome and onboarding decision

1. Capture the company information

1.1 Claims required for the company entity

InformationClaimRequired
Business nameuk-company-register
Corporation typeuk-company-register
Date of incorporationuk-company-register
Company statusuk-company-register
Confirmation statement overdueuk-company-register
Date of latest confirmation statementuk-company-register
Accounts overdueuk-company-register
Date of latest accountsuk-company-register
Company addressuk-company-register
SIC code(s)uk-company-register
Business sizebusiness-size
Websitecompany-website
Email addressuk-company-register
Telephone numberuk-company-register
Tax residency/iestax-residencies
Tax identification number/stax-identification-numbers-by-country
International operations (leave empty if not applicable)international-operations-countries
Number of employeesnumber-of-employeesOptional
Balance sheet sizebalance-sheet-sizeOptional
Estimated annual turnoverannual-turnover
Business descriptionbusiness-description
Companies house url (for the officer)uk-company-register
↓ Director & PSC info ↓
Full nameindividual-identity
Date of birthindividual-identity
Email addresscontact-details
Addressindividual-residence
Mobile numbercontact-details
Nationalitynationality
Tax residency/iestax-residencies
US citizen confirmationus-citizen
Tax identifier number/stax-identification-numbers-by-country
Natures of control (director or PSC)person-with-significant-control or director
Ownership of shares (PSC only)person-with-significant-control
↓ Use of account ↓
Purpose(s) of accountpurposes-of-account
Source(s) of fundsindividual-sources-of-funds
Initial deposit valueinitial-deposit
International payment locationsinternational-payments-countries
Cash paymentscash-payments

1.2 Look up the Companies House record

info

This step is optional. If you already know all the required data you can jump to step 1.3

Get the unique 8-digit company number for the company you want to onboard, and use it to query Companies House.

curl 'https://api.griffin.com/v0/companies-house/companies/91824539' -H "Authorization: GriffinAPIKey $GRIFFIN_API_KEY"

A successful response will contain the following information about the company, its directors, and people with significant control (PSCs).

{
"entity-registration-number": "91824539",
"entity-name": "Money Technology Ltd.",
"corporation-type": "private-limited-company",
"date-of-incorporation": "2017-06-01",
"company-status": "active",
"confirmation-statement-overdue": false,
"date-of-latest-confirmation-statement": "2022-01-01",
"accounts-overdue": false,
"date-of-latest-accounts": "2022-01-01",
"company-address": {
"building-number": "12",
"street-name": "Argyle Street",
"city": "London",
"postal-code": "EC2V 9AN",
"country-code": "GB"
},
"sic-codes": [
"01110"
],
"directors": [
{
"display-name": "JOHNSON, Talia",
"director-occupation": "Chief Executive Officer",
"director-appointed-on": "2018-03-05",
"month-of-birth": 6,
"year-of-birth": 1973,
"companies-house-url": "https://api.company-information.service.gov.uk/company/91824539/appointments/abc123"
}
],
"persons-with-significant-control": [
{
"display-name": "CRANSTON, Robert",
"given-name": "Robert",
"surname": "Cranston",
"month-of-birth": 1,
"year-of-birth": 1969,
"natures-of-control": [
"ownership-of-shares-25-to-50-percent"
],
"companies-house-url": "https://api.company-information.service.gov.uk/company/91824539/persons-with-significant-control/individual/def456"
}
]
}

In the API, the company, its directors, and its PSCs are all represented as legal persons.

Create individual legal persons to represent the company's directors and PSCs. You will need their:

InformationClaimRequired
Full nameindividual-identity
Date of birthindividual-identity
Residential addressindividual-residence
Tax residency/iestax-residencies
Tax identification number/stax-identification-numbers-by-country
Nationalitynationality
Email addresscontact-details
Mobile numbercontact-details
US citizen confirmationus-citizen

Each of these data points represent one claim. You can create the legal person and add their claims all in one go, as shown below.

curl "https://api.griffin.com/v0/organizations/${ORGANIZATION_ID}/legal-persons" \
-H "Authorization: GriffinAPIKey $GRIFFIN_API_KEY" \
-H 'Content-Type: application/json' \
-d \
'{
"display-name": "JOHNSON, Talia",
"legal-person-type": "individual",
"claims": [
{
"claim-type": "individual-identity",
"date-of-birth": "1973-06-11",
"given-name": "Talia",
"surname": "Johnson"
},
{
"claim-type": "individual-residence",
"building-number": "12",
"street-name": "Example Street",
"city": "Test Town",
"postal-code": "TE1 2ST",
"country-code": "GB"
},
{
"claim-type": "contact-details",
"email-address": "talia@moneytechnology.com"
},
{
"claim-type": "tax-residencies",
"tax-residencies": [
"GB",
"US"
]
},
{
"claim-type": "tax-identification-numbers-by-country",
"tins-by-country": {
"GB": [
"1234 5678 901"
],
"US": [
"123-45-6789",
"12-3456789"
]
}
},
{
"claim-type": "us-citizen",
"us-citizen?": false
},
{
"claim-type": "nationality",
"nationality": "GB"
},
{
"claim-type": "mobile-number",
"mobile-number": "+440000000000"
}
]
}'

A successful response will display the URL for the newly created legal person (e.g. /v0/legal-persons/lp.njk7tIWvQJGPEFIdDmS9yQ) in the response's Location header and in the response body. Save this URL for the next step.

info

In this example, you create the legal person and all their claims in one go, but you can also create a legal person and then add claims individually. For more detail on claims, see the API reference.

caution

An individual can be both a director and a PSC for the same company. In this case, you must not verify them twice. Create one individual legal person to represent them and use it for both the director and person-with-significant-control claims in the next step.

Create a corporation legal person to represent the company.

Use the information collected in step 1.2 to create a uk-company-register claim.

Use the director and person-with-significant-control claims to associate the relevant individual legal persons with the company.

You will also need to submit the following information about the company:

InformationClaimRequired
Telephone numbercompany-telephone-number
Business descriptionbusiness-description
Business sizebusiness-size
Tax residency(ies)tax-residencies
List of non-UK countries where they operateinternational-operations-countries
List of non-UK countries their accounts will receive payments frominternational-payments-countries
Estimated annual turnoverannual-turnover
Initial deposit sourceinitial-deposit
Websitecompany-website
Email addresscompany-email-address
Source(s) of fundssources-of-funds
Purpose(s) of accountpurposes-of-account
Tax identification number(s)tax-identification-numbers-by-country
SIC codessic-codes
Cash paymentscash-payments

As above, each of these data points represent one claim. You can create the legal person and add their claims as shown below.

curl "https://api.griffin.com/v0/organizations/${ORGANIZATION_ID}/legal-persons" \
-H "Authorization: GriffinAPIKey $GRIFFIN_API_KEY" \
-H 'Content-Type: application/json' \
-d \
'{
"display-name": "Money Technology Ltd",
"legal-person-type": "corporation",
"claims": [
{
"claim-type": "uk-company-register",
"entity-name": "Money Technology Ltd",
"corporation-type": "private-limited-company",
"entity-registration-number": "91824539",
"date-of-incorporation": "2017-06-01",
"building-number": "184",
"city": "London",
"street-name": "Argyle Street",
"postal-code": "EC2V 9AN",
"country-code": "GB"
},
{
"claim-type": "company-telephone-number",
"telephone-number": "+440000000000"
},
{
"claim-type": "business-description",
"business-description": "a business description"
},
{
"claim-type": "tax-residencies",
"tax-residencies": [
"GB",
"US"
]
},
{
"claim-type": "tax-identification-numbers-by-country",
"tins-by-country": {
"GB": [
"1234 5678 901"
],
"US": [
"123-45-6789",
"12-3456789"
]
}
},
{
"claim-type": "international-operations-countries",
"international-operations-countries": []
},
{
"claim-type": "international-payments-countries",
"international-payments-countries": []
},
{
"claim-type": "annual-turnover",
"annual-turnover": {
"value": "5000.00",
"currency": "GBP"
}
},
{
"claim-type": "initial-deposit",
"initial-deposit": {
"value": "1000.00",
"currency": "GBP"
}
},
{
"claim-type": "company-website",
"website-url": "https://www.griffin.com"
},
{
"claim-type": "company-email-address",
"email-address": "email@example.com"
},
{
"claim-type": "sources-of-funds",
"sources-of-funds": ["salary-or-bonus"]
},
{
"claim-type": "purposes-of-account",
"purposes-of-account": ["long-term-investment"]
},
{
"claim-type": "sic-codes",
"sic-codes": ["01110"]
},
{
"claim-type": "business-size",
"business-size": "medium"
},
{
"claim-type": "director",
"legal-person-url": "/v0/legal-persons/lp.njk7tIWvQJGPEFIdDmS9yQ"
},
{
"claim-type": "person-with-significant-control",
"legal-person-url": "/v0/legal-persons/lp.njk7tIWvQJGPEFIdDmS9yQ",
"ownership-percent": "10"
},
{
"claim-type": "cash-payments",
"cash-payments?": false
}
]
}'

1.5. Letting agents and landlords

If the company you are onboarding is a letting agent or a landlord, you will also need to provide the following information. This is in addition to the claims listed in step 1.3.

Letting agents

InformationClaimRequired
Number of properties under managementmanaged-properties
Origins of depositsproperties-origins-of-deposits
HMO verificationhmo-license
HMRC status and registration numberhmrc-register
CMP registration status and the scheme name/authorityclient-money-protection-scheme
% of commercial properties managedcommercial-property-ratio

Landlords

InformationClaimRequired
Number of properties ownedmanaged-properties
What funds the landlord intends to receive into the accountproperties-origins-of-deposits
HMO verificationhmo-verification
HMRC status and registration numberhmrc-register
Whether the properties owned are residential, commercial, holiday lets, or HMOproperty-types
If they own commercial properties, what industriescommercial-property-industries

2. Run the verification

2.1 Retrieve your workflows

If you're onboarding a customer for the first time, you will need to retrieve your workflows in order to submit the verification. Retrieve and cache your workflow URLs.

2.2 Submit

Submit the corporation legal person for verification, as shown below.

curl 'https://api.griffin.com/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45/verifications' \
-X 'POST'
-H "Authorization: GriffinAPIKey$GRIFFIN_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"workflow-url": "/v0/workflows/wf.Ul-1r4gRWfOFxHJsHWghcA"}'

A successful response will look like this. Grab the verification-url for monitoring later.

{
"created-at": "2022-08-15T10:47:51.959Z",
"display-name": "Money Technology Ltd.",
"legal-person-type": "corporation",
"legal-person-url": "/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45",
"updated-at": "2022-08-15T10:47:51.959Z",
"verification-status": "pending",
"verification-url": "/v0/verifications/vn.BhpS_dCqFKRYXa8d457fgA",
"workflow-url": "/v0/workflows/wf.Ul-1r4gRWfOFxHJsHWghcA"
}

3. Send ID&V requests to directors and PSCs

info

In sandbox, no selfies or ID photos are captured and all ID&V results are mock-ups. Learn more about sandbox vs. live organizations.

The company’s directors and PSCs will need to complete an identity and verification (ID&V) check before the verification can be completed. This involves submitting a selfie and a photo of a valid identity document to Veriff, our ID&V partner.

Get the ID&V link from idv-check-url within /verifications/<:verification-id>/resources, as shown below. You will need to share this with the relevant directors and PSCs so they can complete ID&V.

To find out the ID&V links, you can poll the verification-resources-url until they become available. You can also leverage webhooks and listen for the verification-resource-created|updated events, emitted once the ID&V links are available.

{
"verification-url": "/v0/verifications/vn.BhpS_dCqFKRYXa8d457fgA",
"legal-person-url": "/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45",
"organization-url": "/v0/organizations/og.IG9yZ2FuaXphdGlvbi1pZA",
"verification-resources": [
{
"verification-resource-type": "idv-check",
"verification-resource-id": "a87ef592-c300-43f2-84f9-005120592392",
"idv-check-status": "pending",
"idv-check-url": "IDV.check.url",
"idv-check-expires-at": "2019-08-24",
"display-name": "string",
"legal-person-url": "/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45"
},
],
"links": {
"prev": "string",
"next": "string"
}
}

The idv-check-status begins in a pending state and transitions to one of three final states: complete, errored, or expired.

Embedding the ID&V flow in your web/mobile app

For a better user experience, you can embed Veriff's ID&V flow directly within your application instead of redirecting users to an external page. Veriff provides SDKs for web, iOS, and Android that accept the session URL (the idv-check-url generated above) and render the verification flow natively in your app.

For detailed integration instructions, code examples, and platform-specific guidance, see Veriff's SDK documentation.

4. View the verification outcome and onboarding decision

Verification status

The verification has successfully completed when verification-status reaches checks-complete. You can track this by:

  • Polling the verification-url
  • Listening for verification-updated webhook events

Example response:

{
"created-at": "2024-02-11T10:47:51.959Z",
"display-name": "Money Technology Ltd.",
"legal-person-type": "corporation",
"legal-person-url": "/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45",
"risk-rating": "low-risk",
"updated-at": "2022-08-15T10:48:03.215Z",
"verification-status": "checks-complete",
"verification-url": "/v0/verifications/vn.BhpS_dCqFKRYXa8d457fgA",
"workflow-url": "/v0/workflows/wf.Ul-1r4gRWfOFxHJsHWghcA"
}
Verification statuses explained
StatusDescription
pendingVerification has been created but processing has not yet begun
in-progressVerification checks are actively being performed
failedAn internal system error has occurred during verification
checks-declinedVerification was terminated early due to failing one or more workflow checks
checks-completeVerification has successfully completed all required checks
Verification status flow

Decision process

After reaching checks-complete, the system will either:

  • Generate an automated decision
  • Refer the application for manual review (followed by a manual decision)
Tracking decisions

Monitor decisions by:

  • Polling the legal-person-decisions-url endpoint
  • Listening for decision-created webhook events
Application status and decision flow

In context

Both the verification status and the decisions can be seen in context on the legal person entity.

curl 'https://api.griffin.com/v0/legal-persons/lp.Kfd8_BhpSdCqFKRYXa8d45' -H "Authorization: GriffinAPIKey $GRIFFIN_API_KEY"

The response will include application-status and also the latest-decision when one exists, as shown below:

{  "latest-decision":
{
"verification-url": "/v0/verifications/vn.BhpS_dCqFKRYXa8d457fgA",
"decision-outcome": "accepted",
"decision-maker": "user",
"decision-notes": "No red flags here",
"decision-user-url": "/v0/users/ur.ICAgICAgICAgdXNlci1pZA",
"created-at": "2024-08-15T10:47:51.959Z"
},
"display-name": "Money Technology Ltd.",
"application-status": "accepted",
"status-changed-at": "2024-08-24T14:15:22Z",
"created-at": "2024-08-24T14:15:22Z",
...
}

Once you have an accepted decision, you're good to go 🎉

What's next? Open an account! See here to get started.


Updating customer information

For any customer information that has changed, you can re-submit just the claim information that needs updating and the checks associated with that claim will be re-run. These checks will re-run when another verification is run.

Submitting updated claims

You can submit the updated claim information for each legal persons using:

POST https://api.griffin.com/v0/legal-persons/{legal-person-id}/claims

Once you have updated a claim you can fetch a list of unverified claims using the filter:

GET https://api.griffin.com/v0/legal-persons/{legal-person-id}/claims?filter[verification-status][eq]=unverified

The verification-status will change from unverified to verified when it has successfully been used as part of an accepted verification.

info

A verified claim has been verified by an accepted verification. An unverified claim is when a verification hasn’t been run on a claim, or a verification resulted in a declined or errored decision.

You will need to run a new verification after you have updated claims by using:

POST https://api.griffin.com/v0/legal-persons/{legal-person-id}/verifications

{
"workflow-url": "{workflow-id}"
}

If a director or PSC has changed you can remove them from the application using

DELETE https://api.griffin.com/v0/claims/{claim-id}

A successful response will give you a 204 response code.

You can then add a new director or PSC using the claims endpoint as usual.

ID&V re-use for Verify customers

When updating customer information for individuals who have completed ID&V (identity and verification) through Verify:

  • Within 30 days of ID&V completion: If you update any customer information, including their name, address, or date of birth, we will automatically re-use the previously submitted selfie and ID document images. Your customer will not need to complete the ID&V process again.
  • After 30 days of ID&V completion: If you update the customer's name, address, or date of birth, your customer will need to complete a new ID&V check. This means they'll need to submit a new selfie and photo of their identity document through a new ID&V link.

To avoid requiring customers to repeat the ID&V process, ensure any updates for incorrect information are made within 30 days of their initial ID&V completion.

Onboarding international directors/pscs

When onboarding directors/pscs outside the UK, the claim requirements for addresses are different.

See this example for an imaginary French address:

{
"claim-type": "individual-residence",
"address-line-1": "4 Rue Paul Cabet",
"address-line-2": "Appartement 5",
"city": "Dijon",
"state": "Côte-d'Or",
"postal-code": "21000",
"country-code": "FR"
}

Required:

  • claim-type
  • address-line-1
  • city
  • postal-code
  • country-code

Optional:

  • address-line-2
  • state