Parqet Connect API

Changelog

Track every change to the Parqet Connect API — new endpoints, breaking changes, deprecations and fixes.

Parqet Connect now supports dedicated P2P holdings. Integrations can create P2P holdings and create activities for them.

POST/portfolios/{portfolioId}/activities
  • Added

    Activity creation now accepts the assetIdentifierType value p2p with holding_id and amount. P2P payouts use dividend.

  • Changed

    Cash activities now accept amount directly.

  • Changed

    Insurance activities now require amount instead of shares and price.

    Breaking
POST/performance
  • Changed

    Performance responses can now contain P2P holdings (asset type p2p).

Activity responses now include an fx object for activities that were executed in a different currency than the portfolio currency. It contains the FX rate, the originalCurrency, and the original values (originalPrice, originalTax, originalFee, originalAmount, originalAmountNet). For activities executed in the portfolio currency, fx is null.

In addition, holdings now expose their currency in both the holdings and performance responses.

GET/portfolios/{portfolioId}/activities
  • Added

    Activity responses now include an fx object with the FX rate, original currency, and original values (originalPrice, originalTax, originalFee, originalAmount, originalAmountNet) — null if the activity was executed in the portfolio currency.

POST/performance
  • Added

    Holdings in the performance response now include their currency.

Portfolio responses now include the sub-accounts of a portfolio, holdings responses reference the sub-account they belong to, and performance requests can be filtered by sub-accounts.

Sub-accounts represent separate securities accounts that a broker manages within a single brokerage connection — for example, multiple depots at the same bank that are imported into one Parqet portfolio. A common example are junior depots: a parent's own depot and the depots of their children live under the same bank login, but each is tracked as its own sub-account. Holdings and activities of a portfolio can belong to a specific sub-account.

Each portfolio lists its sub-accounts with a stable identifier that integrations can persist and use to distinguish data per sub-account. In addition, every portfolio contains one default sub-account entry (isDefault: true) that groups everything not assigned to a specific sub-account. Portfolios without explicit sub-accounts therefore return a subAccounts array containing only the default entry.

Performance requests accept an optional filter.subAccountIds array to calculate performance only for the given sub-accounts. If no filter is provided, the performance is calculated across the entire portfolio as before.

GET/portfolios
  • Added

    Portfolio responses now include a subAccounts array. Each entry contains an id, an isDefault flag, and a name (for non-default sub-accounts).

POST/performance
  • Added

    POST /performance now accepts an optional filter.subAccountIds array to restrict the performance calculation to specific sub-accounts.

Parqet Connect now supports insurance holdings. Integrations can create insurance holdings and create activities for them.

POST/performance
  • Changed

    Performance responses can now contain insurance holdings (asset type insurance).

Custom holding creation now supports importing an initial set of quotes. User-managed quote imports can now overwrite existing quotes for the same datetime, simplifying idempotent sync runs.

User-managed quote creation now supports a structured identifier for both Parqet holding IDs and external source IDs. Source-system IDs are useful when syncing from external brokers, because they provide stable cross-system mapping of resources.

The pre-existing holdingId property is now deprecated

POST/portfolios/{portfolioId}/quotes/user-managed
  • Added

    POST /portfolios/{portfolioId}/quotes/user-managed now accepts identifier: { type: "holdingId" | "externalId", value } to target holdings by Parqet or source-system IDs.

  • Deprecated

    The pre-existing holdingId field is still accepted for backward compatibility, but it is deprecated; migrate to identifier (for example, holdingId: "abc123" -> identifier: { type: "holdingId", value: "abc123" }).

Holding creation endpoints now support source-system reconciliation IDs consistently. Custom holdings also accept an optional image payload to align with other holding types that already support logos.

POST/performance
  • Added

    Performance responses now include externalId on holdings, allowing source-system reconciliation across read and write flows.

Sending cash in referenceAccountFor was previously accepted by the request schema but still failed during processing. The API now rejects this input during validation, which also results in improved type safety for clients.

POST/portfolios/{portfolioId}/holdings/cash
  • Fixed

    POST /portfolios/{portfolioId}/holdings/cash now returns a validation error when referenceAccountFor contains cash (previously this also errored later in processing).

Activities now support an optional externalId so integrations can map Parqet activities to source-system records (for example, broker transaction IDs). Use a stable ID per source activity to prevent duplicates and simplify sync logic.

Chart Support

Performance responses now include chart series and richer commodity metadata.

POST/performance
  • Added

    Response now includes a charts array with mark, date, and time-series values (history, capitalHistory, perfHistory, perfHistoryUnrealized, ttwror, drawdown).

  • Added

    Commodity holdings in the performance response now expose an identifier field (gold, silver, platinum, palladium).

  • Removed

    the currency RMB is no longer supported (use CNY instead).

    Breaking

Parqet Connect now supports creating cash, commodity, and real estate holdings, and posting activities against those holdings.

POST/performance
  • Fixed

    A 400 response is returned if absolute intervals have an end date before the start date.