$BASE for https://partners-api.sandbox.securitize.io/investors/v1/onboarding-reliance and $ACCESS_TOKEN for a bearer token (get one). Replace the identifiers in them (externalInvestorId, entityIdNumber, email) with fresh values of your own: the examples already exist in sandbox.
1. Create the company
investorId from the response. Things that commonly go wrong:
entityIdNumberis required, together withaddress.countryCode: they identify the company. Placeholders such as000000000orN/Aare refused, with or without separators.emailis unique across all of Securitize, not just your account, and cannot be changed after the create. Use the company’s own contact address, not a shared one.address.stateis for US addresses only, for the company and for each key party, judged on each address’s owncountryCode: the 2-letter state code (DE). Leave it out for any other country; otherwise the call answers400 validation_erroronaddress.state.- Branch on the status code.
201is a new company.200means the company is already registered with Securitize and another party leads the verification: you get limited access and cannot add key parties or documents. - Repeating the same create is safe. If a create timed out or answered
502, send exactly the same body again: you get201with the sameinvestorId. The sameexternalInvestorIdwith different data answers409 external_investor_id_conflict, with theinvestorIdindetails.
2. Declare the people behind it
Add every person who owns or controls the company:POST …/key-parties/entity. They are optional, but they never replace people: a company whose key parties are all companies cannot be submitted.
3. Send their documents
Each person needs one identity document:
Identity files are JPEG or PNG. Each file can be at most 10 MB as base64 JSON, or 20 MB as
multipart/form-data (front and back parts; see Two ways to send the files); a larger one is refused with 413. The file must be a real, legible image: it is read optically, so a truncated or corrupt file answers 422 document_rejected.
Each corporate shareholder needs the company documents its entityType requires (one file per call, PDF allowed):
GET /investors/{investorId}/key-parties shows where every key party stands. A person reads awaiting_submission once its document is in. A corporate shareholder lists what it still lacks in verification.missing and reads complete when nothing is missing.
The company’s own documents (POST /investors/{investorId}/documents) are optional. Securitize compliance can review them, but they never start or block verification.
4. Submit
422 business_rule_violation, with details.keyParties naming who is short.
A 200 does not always mean everything was sent. Read status:
submitted: everything was handed over. Go to step 5.incomplete: part of it did not go through. Wait a few seconds and submit again; only what is outstanding is sent.
skipped.
5. Poll for the verdict
investorId until the status settles: every 30 seconds for the first few minutes, then every few minutes. A KYC webhook tells you when the status changes. What each status means, the cadence for production and how to handle manual-review are in Statuses.
When verified arrives depends on your agreement with Securitize: on submit, or after screening. An entity with corporate shareholders may stay processing until compliance has reviewed them.
After you submit
Once the company or one of its people is under review, their details and documents are locked: corrections and uploads answer409 verification_in_review, and after the verdict 409 verification_already_settled. Submitting again is always safe; it only re-sends what is outstanding. If Securitize needs anything more, it tells you.
Do not add key parties after you submit: they are accepted, but not verified. If the owners of a verified company change, contact Securitize.
If you lose an id along the way, see Identifiers. For every error and what to do about it, see Errors.