Upsert investment

Create an Investment if none exists with the given Tracking ID, or update the existing one otherwise.

This is an idempotent operation: calling it twice with the same payload results in the same end state. Safe to retry on network failure, or to replay as part of a scheduled sync from your portfolio accounting system or fund administrator's data.

Matching rule

The Investment is matched by the trackingId you supply in the request body. trackingId is required — requests without a trackingId are rejected with a 400 Bad Request.

Response

The response always includes the full Investment object plus a result field:

  • "result": "created" — no match was found, a new Investment was created under the supplied fundLegalEntityId.
  • "result": "updated" — an existing Investment was found and its fields were updated.

Field semantics

FieldCreateUpdate
trackingIdRequired (match key).Required (match key).
nameRequired.Replace if present; omit = unchanged.
fundLegalEntityIdRequired.Ignored — Investments are tied to their fund legal entity for life.
investmentEntityIdRequired.Ignored — Investments cannot be reassigned to a different IE via this endpoint.
statusOptional; defaults to "active".Replace if present; omit = unchanged.
fundFeeIds, tagsOptional; defaults to [].Replace if present (empty array clears); omit = unchanged.
commitmentAmount, balanceAmount, balanceUpdatedDate, createdDate, effectiveDate, noteOptional.Replace if present; omit = unchanged.

Validation errors return 400 Bad Request with the offending field name.

Bulk upsert mode (caveat)

When using mode: "upsert" on the bulk POST /investments/import endpoint, every per-row field is applied to the matched Investment — there is no way to express "leave this field unchanged" within a single bulk row. Use the individual upsert endpoint above for partial updates.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

The ID of the Firm object

Body Params
string

ID of the parent fund legal entity. Required when creating a new investment; ignored on update.

string

ID of the linked investment entity. Required on create. Ignored on update — investments cannot be reassigned to a different IE via this endpoint.

string
required

Customer-supplied Tracking ID used to match an existing Investment. Required.

string

Required when creating a new Investment. On update, omit to leave the name unchanged.

fundFeeIds
array of objects

Omit to leave unchanged on update; pass an empty array to clear.

fundFeeIds
number
number
date
string
enum
Defaults to active

Defaults to active on create. Omit to leave unchanged on update.

Allowed:
date
date
string
tags
array of strings

Omit to leave unchanged on update; pass an empty array to clear.

tags
Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json