Skip to content

Integrating child accounts

Onboarding

To begin using child accounts, you must create guardian users and the child user. When guardian users already exist in the system, you just need to create the child user as shown below.

Child users are created in the same manner as any other user but will require fewer checks in later steps.

Refer to the Creating a user section for more details on user creation.

1

Onboarding

To begin using child accounts, you must create guardian users and the child user. When guardian users already exist in the system, you just need to create the child user as shown below.

Child users are created in the same manner as any other user but will require fewer checks in later steps.

Refer to the Creating a user section for more details on user creation.

POST /users

Example request for creating child user

{
  "first_name": "Karl",
  "last_name": "Schmidt",
  "email": "karl.schmidt@example.com",
  "salutation": "SALUTATION_MALE",
  "title": "",
  "birth_date": "2020-09-30",
  "birth_city": "Berlin",
  "birth_country": "DE",
  "birth_name": "Schmidt",
  "nationalities": [
    "DE",
    "AU"
  ],
  "phone_number": "4930901820",
  "postal_address": {
    "address_line1": "Rosenweg 221",
    "address_line2": "apt. 33",
    "postcode": "45678",
    "city": "Berlin",
    "state": "BE",
    "country": "DE"
  },
  "address": {
    "address_line1": "Rosenweg 221",
    "address_line2": "apt. 33",
    "postcode": "45678",
    "city": "Berlin",
    "state": "BE",
    "country": "DE"
  },
  "fatca": {
    "status": false,
    "confirmed_at": "2020-08-24T14:15:22Z"
  },
}

Example response

{
  "first_name": "Karl",
  "last_name": "Schmidt",
  "email": "karl.schmidt@example.com",
  "salutation": "SALUTATION_MALE",
  "title": "",
  "birth_date": "2020-09-30",
  "birth_city": "Berlin",
  "birth_country": "DE",
  "birth_name": "Schmidt",
  "nationalities": [
    "DE",
    "AU"
  ],
  "phone_number": "4930901820",
  "postal_address": {
    "address_line1": "Rosenweg 221",
    "address_line2": "apt. 33",
    "postcode": "45678",
    "city": "Berlin",
    "state": "BE",
    "country": "DE"
  },
  "address": {
    "address_line1": "Rosenweg 221",
    "address_line2": "apt. 33",
    "postcode": "45678",
    "city": "Berlin",
    "state": "BE",
    "country": "DE"
  },
  "fatca": {
    "status": false,
    "confirmed_at": "2020-08-24T14:15:22Z"
  },
  "status": "INACTIVE"
}
2

Create the child account group

The next step involves creating the child account group. For child account groups, you must set type=CHILD. You must also set the user_id for the child account group equal to the child’s user_id.

Refer to the Creating an account group section for more details.

POST /account_groups


{
  "user_id": "413715f2-5401-4b97-8055-034a6b879f8c",
  "type": "CHILD", 
  // ENUM[PERSONAL,JOINT, FRENCH_PEA, ...]
}
3

Assign roles

The new /role_assignments endpoint allows you to map the guardian users to the child account group by ensuring that the entity_id equals the user_id of the child account group. For joint custody, you must submit each guardian separately.

Use the following values to setup the guardian roles:

  • role: Sets whether the current user type is CHILD or GUARDIAN for the child account group.
  • custody_type: Identifies the number of guardians that will be configured for the child account group. Currently Upvest only supports `joint_custody’ and requires two guardians for the child account group.
  • entity_id: Maps the guardian set by the user_id to the child group account. Set this value equal to the user_id of the child account group.
  • user_id: Equals the current guardian user’s ID.

POST /role_assignments

{
"role": "GUARDIAN",
"custody_type": "joint_custody",
"entity_id": "413715f2-5401-4b97-8055-034a6b879f8c",
"entity_type": "ACCOUNT_GROUP",
"user_id": "9c36af78-91a0-4174-a515-fc81214e3dab"
}

Response: Status code 200. Role is created in inactive status

{
"id": "9c36af78-91a0-4174-a515-fc81214e3dab",
"entity_id": "413715f2-5401-4b97-8055-034a6b879f8c",
"entity_type": "ACCOUNT_GROUP",
"user_id": "9c36af78-91a0-4174-a515-fc81214e3dab", 
"role": "GUARDIAN",
"custody_type": "joint_custody",
"status": "inactive"
}

As soon as the user role of the guardian is “active”, also the role is activated.

The custody_type determines what type of document is required for the activation of the role and how many “GUARDIAN” role assignments are required for the activation of the child account group.

On a child account group, only the guardians assigned to the account group can place orders.

4

Perform checks

Guardians must complete all regulatory and compliance checks prior to trading. In addition, guardians must upload their power of attorney document to show they are authorized to make investment decisions on behalf of the child. Currently we accept the child’s birth certificate which must contain the guardians’ names.

POST /users/{user_id}/checks

{
  "type": "GUARDIAN",
  "role_id": "9c36af78-91a0-4174-a515-fc81214e3dab",
  "document_type": "birth_certificate",
  "data_download_link": "aws://file-to-download"
}

The child must complete similar user onboarding but can skip approving the Terms & Conditions and signing the data privacy agreement.

5

Start trading

Child account groups may focus on either portfolio management or investment trading as determined by the rules and regulations of the user’s residency.

For trading accounts, the user id used in POST/orders should equal the guardian’s user_id. This allows the guardian’s user_id to appear in MiFIR reporting as the “decision maker”.

For portfolio accounts, the user ID submitted via POST/ portfolios/orders should equal the child's user_id.