Investors

Investors are natural or legal persons that hold crypto securities. Those investor accounts can be managed using the following endpoints:

  • /investors/ to provide investor data

  • /investors/{investor_id}/benefiting-persons/ to add data about beneficiaries for legal persons

  • /investors/{investor_id}/identifications/ to manage identifications

Custodian bank setup

In a collective entry the custodian bank is the investor. The end customers are onboarded by the custodian bank. Cashlink doesn't need the data of those investors and thus they don't need to onboarded via the Distributor API.

If you're using the Distributor API in the scope of a custodian bank, you can create a single investor account using the bank's data or you can create separate accounts using the same data if you need to.

Natural person investors

Natural person investors can be created via the investor endpoints. The information stored with an investor includes the following mandatory data:

  • Personal data, residence address and PEP status of the investor (natural_person)

  • Flag to confirm that the investor acts on their own behalf (is_beneficiary)

  • Flag to confirm that the investor is not subject to taxation in the US (is_subject_to_us tax)

Tax information

On the investor object you can add tax related information which is used to manage capital gains tax in Germany. The following data can be set:

  • tax identification number

  • non assessment certificate

  • is subject to german tax

Bank account information

On the investor object you can add bank account information that can be used to process payouts paid by the issuer. The following data is required:

  • BIC

  • IBAN

  • currency

Example:

r = requests.post(
    f'{URL}/v2/investors/',
    json={
        "natural_person": {
            "salutation": "MR",
            "forename": "Peter",
            "surname": "Parker",
            "birth_date": "2000-08-10",
            "birth_place": "New York",
            "citizenship": "DEU",
            "street": "Hauptstr. 37",
            "city": "Frankfurt",
            "zip": "60316",
            "country": "DEU",
            "phone": "+49 123 456 789",
            "is_pep": False
        },
        "bank_account": {
            "account_holder": "Peter Parker",
            "iban": 'DE53500105173569146251',
            "bic": "GENODEF1ERG",
            "bank": "Commerzbank Frankfurt",
            "country": "DEU",
            "currency": "EUR"
        },
        "tax_information": {
            "tax_identification_number": "12345678",
            "non_assessment_certificate": True,
            "is_subject_to_german_tax": True
        },
        'communication': {
            'email': '...',
            'email_confirmed': True
        },
        "is_beneficiary": True,
        "is_subject_to_us_tax": False
    },
    headers={**headers, 'X-Idempotency-Key': make_key()}
)
assert r.status_code < 300, r.content
investor_id = r.json()['id']

Legal person investors can be created via the investor endpoints. The information stored with an investor includes the following mandatory data:

  • Company data such as name and commercial register data (legal_person)

  • Personal data, residence address and PEP status of the CEO (natural_person)

  • Flag to confirm that the investor acts on their own behalf (is_beneficiary)

  • Flag to confirm that the investor is not subject to taxation in the US (is_subject_to_us tax)

You can also create an investor that is a legal person. In this case, additional information must be provided. For the account setup to succeed you need to provide company data such as the company name and documents proofing the identity of the company.

Legal persons can be marked as "custodian banks" if they want to hold securities in cumulative entry.

Benefiting persons

If you have created an investor that is a legal person, information about its benefiting persons must be provided via the benefiting persons endpoint.

If you have created an investment for that legal person, the status of the investment will remain in the KYC_PENDING step until you provide the data of at least one benefiting person.

If the benefiting persons change, please add the new persons via a new POST request. You do not need to delete existing benefiting persons if they're not a benefiting person any more.

Identifications

Create new identifications

Investors need valid identification data from a video identification process. For legal persons, the CEO (added via the natural_person field) needs to perform the identification.

The process for creating a new identification is the following:

  1. Via the identification endpoint, create a new identification with an empty JSON request. The API will return a URL of the identity provider and the ID of the identification process.

  2. Redirect the investor to the provided URL. The investor can use the URL to complete the identification process.

  3. You can use the identification endpoints and the identification ID to query the current status of the identification.

  4. After the identification is completed, the final data can be retrieved via the identification endpoint.

Import existing identifications

If you have already existing and valid identifications of the investor you can also provide all attributes via the API directly. Next to the person_id you need to provide:

  1. The identity provider you used. So far we support IDNOW, Lionware and PostIdent.

  2. The legitimation protocol as a PDF document that resulted from the identification process

  3. You have to add the document type that was used (id card, passport), the issuer of the document as well as the document ID, as well as the valid_from an valid_to date.

Imported identifications must not be older than 2 years (based on the verified_at field). Also, the identification document must still be valid (based on the valid_to field).

Last updated

Was this helpful?