Investor Accounts

Create the parties and accounts that private markets transactions are placed for, and understand which registrations can invest.

📘

Integrating through Apex AscendOS?

The product guidance on this page applies to you. The endpoints, fields and statuses are Monark's; use the AscendOS equivalents listed in Building on Apex AscendOS.

Every transaction is placed for an investor or an account. Both are built from parties — a person or an entity — created once and reused for everything that follows.

Monark endpoints used

MethodEndpointPurpose
POST/primary/v2/personCreate an individual party
POST/primary/v2/entityCreate an entity party
POST/primary/v2/entity/{id}/individualsAdd a controlling individual to an entity
POST/primary/v2/accountOpen an account owned by one or more parties
GET/primary/v2/account/{id}Read an account back
PUT/primary/v2/account/{id}/accreditationRecord accreditation. See Accreditation
GET/primary/v1/investor/{id}Read a party as an investor record

Workflow

  1. Create the party — a person, or an entity plus at least one controlling individual.
  2. Open the account, naming its owners and its registration type.
  3. Record accreditation on the account. This is what activates its owners for private offerings.
  4. Reuse them. Parties and accounts are created once per investor, not per order.

Create a person

POST /primary/v2/person
{
  "firstName": "Sarah",
  "lastName": "Chen",
  "email": "[email protected]",
  "dateOfBirth": "1985-04-12",
  "isUSBased": true,
  "citizenship": "US",
  "taxId": "000000000",
  "phoneCountryCode": "1",
  "phoneNumber": "5555550123",
  "physicalAddress": {
    "street1": "100 Market Street",
    "city": "San Francisco",
    "state": "CA",
    "zipCode": "94105",
    "countryCode": "US"
  },
  "financialInstitutionId": "{financialInstitutionId}",
  "referenceId": "your-own-party-reference"
}

Expect 201. The returned id is the party id, and it is the identifier everything downstream keys on.

A mailingAddress can be sent alongside physicalAddress where they differ.

Create an entity

POST /primary/v2/entity

Then, before the entity's account can trade:

POST /primary/v2/entity/{entityId}/individuals

Important: An entity with no active controlling individuals is refused at order time. Add them when you create the entity, not when the first order fails. This is the single most common entity-onboarding mistake.

Open the account

POST /primary/v2/account
{
  "financialInstitutionId": "{financialInstitutionId}",
  "registrationType": "Individual",
  "externalAccountNumber": "IND-0001",
  "owners": [
    { "partyId": "{personId}", "type": "Person", "isPrimary": true }
  ]
}
FieldNotes
registrationTypeHow the account is registered. See Which registrations can invest
registrationSubtypeWhere the registration type takes one
externalAccountNumberYour account number. Returned on reads, and the simplest reconciliation key
owners[].partyIdA person or entity id
owners[].typePerson or Entity
owners[].isPrimaryExactly one owner is primary

Which registrations can invest

Important: Joint accounts and retirement accounts cannot subscribe to a Pre-IPO SPV. An order for one is refused with "{type} investors are not supported for PreIPO SPV subscriptions."

Filter these accounts out of the private markets experience entirely. An investor who browses offerings, reads a PPM and chooses an amount, only to be told at submission that their account type was never eligible, has had a bad experience your platform could have prevented at the first screen.

Individual and entity registrations are supported.

Parties and investors are the same identity

A v2 party id is a v1 investor id. The same GUID addresses both:

GET /primary/v1/investor/{partyId}

This matters because the two generations of the API coexist. The v1 investor endpoints carry data the v2 party endpoints do not expose, and several read endpoints — the SPV list and detail among them — are scoped by investorId, which is this same id.

Which identity to send on an order

SituationSend
The investor has one accountEither investorId or accountId
The investor has several accountsaccountId. Sending investorId is refused with "The investor has multiple accounts. Supply AccountId through the v2 endpoint."
You want to send your own account numberinvestorId and externalAccountNumber. The latter cannot be combined with accountId

Exactly one of investorId or accountId is accepted — sending both is refused.

Implementation notes

  • Send a referenceId on party creation. It is your own identifier and is echoed back on reads.
  • Create once. Parties and accounts persist. Creating a new person per order will produce duplicate investors and fail uniqueness checks on email and tax id.
  • Sandbox and production are separate. A party created in sandbox does not exist in production.
  • An account must be open. A closed account is refused at order time with "The account is closed."

Next steps


Did this page help you?