Skip to main content

Outsourced: Onboard a limited company

Under our outsourcing model, Griffin does not perform independent third-party verification of the data you submit. We define the information required to meet account opening and regulatory reporting obligations, and when data is submitted, we validate that the required fields are present and screen the customer against our appetite criteria — including industry, jurisdiction, and risk profile.

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

Outsourced onboarding is for firms which Griffin has a pre-existing agreement with to outsource the onboarding processes to. If you don't have this agreement in place, this onboarding guide does not apply to you.

caution

Only users with the compliance role can create and submit Outsourced applications.

Process overview

There are four steps to onboarding a limited company via Outsourced:

  1. Capture the customer information
  2. Create the legal persons
  3. Run the verification
  4. View the verification outcome and onboarding decision

1. Capture the customer information

Company information

InformationClaimRequired
Company nameuk-company-register
Company registration numberuk-company-register
Corporation typeuk-company-register
Date of incorporationuk-company-register
Company registered addressuk-company-register
Country codeuk-company-register
Company trading addresstrading-address
Industry code (SIC)sic-codes
Business sizebusiness-size
Tax residency/iestax-residencies
Tax identifier number/stax-identification-numbers-by-country
Risk ratingexternal-risk-rating
Number of employeesnumber-of-employeesOptional
Balance sheet sizebalance-sheet-sizeOptional
Estimated annual turnoverannual-turnoverOptional
info

Note: this is the data we require to be sent to our system, a larger set of data requirements will be required from the customer by the outsourcing party (you) to complete CDD and risk rate the customer.

Director and PSC information

For each director and person with significant control (PSC), you'll need:

InformationClaimRequired
Full name (given name)individual-identity
Middle nameindividual-identityOptional
Full name (surname)individual-identity
Date of birthindividual-identity
Residential addressindividual-residence
US citizen confirmationus-citizen
Tax residency/iestax-residencies
Tax identifier number/stax-identification-numbers-by-country

In the API, your customer is represented as a legal person, and each of the data points above represent one claim about them. Create a corporation legal person to represent the company, then add claims about it and any directors/PSCs.

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",
"email-address": "hello@moneytech.com",
"telephone-number": "+442012345678"
},
{
"claim-type": "trading-address",
"building-name": "Tower A",
"building-number": "12",
"street-name": "High Street",
"city": "London",
"postal-code": "TE1 2ST",
"country-code": "GB"
},
{
"claim-type": "sic-codes",
"sic-codes": ["01110"]
},
{
"claim-type": "business-size",
"business-size": "small"
},
{
"claim-type": "tax-residencies",
"tax-residencies": ["GB", "US"]
},
{
"claim-type": "tax-identification-numbers-by-country",
"tins-by-country": {
"GB": ["12345-6789"],
"US": ["123-45-6789"]
}
},
{
"claim-type": "external-risk-rating",
"external-risk-rating": "low-risk"
}
]
}'

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.

For each director and PSC, create an individual legal person and link them to the company:

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",
"given-name": "Talia",
"surname": "Johnson",
"date-of-birth": "1985-03-15"
},
{
"claim-type": "individual-residence",
"building-number": "19",
"street-name": "Example Street",
"city": "Test Town",
"postal-code": "TE1 2ST",
"country-code": "GB"
},
{
"claim-type": "us-citizen",
"us-citizen?": false
},
{
"claim-type": "tax-residencies",
"tax-residencies": ["GB"]
},
{
"claim-type": "tax-identification-numbers-by-country",
"tins-by-country": {
"GB": ["AB123456C"]
}
}
]
}'
info

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

3. Run the verification

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.

Submit the verification

Submit the corporation legal person for verification:

curl 'https://api.griffin.com/v0/legal-persons/lp.njk7tIWvQJGPEFIdDmS9yQ/verifications' \
-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": "2024-02-10T10:47:51.959Z",
"display-name": "Money Technology Ltd",
"legal-person-type": "corporation",
"legal-person-url": "/v0/legal-persons/lp.njk7tIWvQJGPEFIdDmS9yQ",
"updated-at": "2024-02-10T10:47:51.959Z",
"verification-status": "pending",
"verification-url": "/v0/verifications/vn.BhpS_dCqFKRYXa8d457fgA",
"workflow-url": "/v0/workflows/wf.Ul-1r4gRWfOFxHJsHWghcA"
}

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.njk7tIWvQJGPEFIdDmS9yQ",
"external-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

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)

Monitor decisions by:

  • Polling the legal-person-decisions-url endpoint
  • Listening for decision-created webhook events

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.njk7tIWvQJGPEFIdDmS9yQ' -H "Authorization: GriffinAPIKey $GRIFFIN_API_KEY"

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

{
"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-11T10:47:51.959Z"
},
"display-name": "Money Technology Ltd",
"application-status": "accepted",
"status-changed-at": "2024-02-11T10:47:51.959Z",
"created-at": "2024-02-10T10:47:51.959Z"
}

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

What's next?

Open an account! See Types of bank accounts to get started.