Skip to main content
POST
Create an individual investor

Authorizations

Authorization
string
header
required

OAuth 2.0 client credentials. Exchange the client id and secret Securitize issued you for a bearer token at the token URL (the host root, not under the base URL), with grant_type=client_credentials; the token lasts 2 hours and goes in the Authorization: Bearer header of every request. No scope is needed. The token identifies your partner account, so you never send a partner id, and every record you create is scoped to you.

Body

application/json

The person being onboarded. The same body creates the investor and, on PUT, replaces it in full: an optional field you omit on PUT is cleared.

externalInvestorId
string
required

Your own id for this person, unique within your partner account. Fixed at create: on PUT send the same value.

Pattern: ^[A-Za-z0-9._-]{1,128}$
Example:

"ent-test-0001"

investorType
enum<string>
required

Always individual on this route.

Available options:
individual
email
string<email>
required

The person's email. ASCII local part only; stored in lower case. Unique across Securitize: an address that belongs to another investor answers 409 email_conflict. Fixed at create: on PUT send the same value.

firstName
string
required

First name. This is what sanctions and PEP screening run against.

Required string length: 1 - 128
lastName
string
required

Last name.

Required string length: 1 - 128
dateOfBirth
string<date>
required

Date of birth, YYYY-MM-DD, not later than today (UTC); a later date answers 400 validation_error. Returned as a timestamp.

Example:

"2015-06-30"

birthCountry
string
required

Country of birth.

Pattern: ^[A-Za-z]{2}$
Example:

"US"

taxId
string
required

Tax identifier. With taxCountry it identifies the person. Stored trimmed and upper-cased. Placeholder values (000000000, 123456789, TEST, N/A, one repeated character, fewer than 4 characters) are refused with 400 validation_error, with or without separators (spaces, dots, dashes, slashes). For a US person (US address and taxCountry US) it is the Social Security number, and verification checks that it matches the name and residential address; a mismatch can send the investor to manual-review. Sandbox does not run that check.

Required string length: 1 - 50
Example:

"123-45-6780"

taxCountry
string
required

Country that issued the tax identifier.

Pattern: ^[A-Za-z]{2}$
Example:

"US"

phone
object
required

The person's phone.

address
object
required

Residential address. Its country, with taxCountry, feeds the risk level.

middleName
string

Middle name.

Maximum string length: 128
gender
enum<string>

Gender.

Available options:
male,
female

Response

The person is already registered with Securitize and another party leads the verification. Store investorId; status is the current one. You can read its status and manage its wallets, token whitelisting, suitability and DLT test; every other operation on it answers 409 investor_not_owned.

An investor already registered with Securitize whose verification another party leads. You have limited access: you can read its status and manage its wallets, token whitelisting, suitability and DLT test; every other operation on it answers 409 investor_not_owned.

investorId
string
required

Securitize's id for this investor in your partner account. Store it.

Minimum string length: 1
Example:

"6aca84e5dc49fe8369dd1da4"

externalInvestorId
string
required

Your own id, as sent at create.

Pattern: ^[A-Za-z0-9._-]{1,128}$
Example:

"ent-test-0001"

status
enum<string>
required

The investor's verification state.

  • none — created, nothing under review. An investor stays here until you submit it.
  • processing — under review.
  • verified — verified.
  • manual-review — a Securitize operator is reviewing it. Not a rejection.
  • updates-required — Securitize needs updated information; contact Securitize support.
  • expired — the verification lapsed; contact Securitize support.
  • rejected — final.

When status becomes verified — at submit, or after Securitize's screening and compliance review — depends on your agreement with Securitize. Treat any value you do not recognise as "not verified" rather than failing.

Available options:
none,
processing,
verified,
manual-review,
updates-required,
expired,
rejected