Reports
Read-only reporting across all sub-accounts — AUM, positions, fees, revenue, dividends, monthly invoices, dividend calendar, audit log, usage analytics, the daily reconciliation pack, per-order executions, and the unified client-activity feed. Most support ?format=csv.
Portfolio snapshots, revenue reporting, dividends, and audit logs across all sub-accounts. All
reporting endpoints are read-only and safe to call on every page load. Most support ?format=csv for
spreadsheet or data-warehouse export.
AUM
Current aggregate cash and stored portfolio valuations across your sub-accounts, with a per-account breakdown. This is not a historical snapshot and does not represent streaming market valuations. Live uses stored holding currentValue; Sandbox uses units times the stored currentUsdPrice. generatedAt marks response assembly, not quote freshness or an atomic valuation timestamp.
Empty reports include breakdown: [] and zero totals. ?format=csv downloads the same per-account values. Invalid formats return 400. Historical ?asOf= requests return 422 HISTORICAL_REPORT_UNSUPPORTED; do not use this endpoint for historical reconciliation. The separate reconciliation report retains its documented date filters.
/report/aum
Report — AUM
Full endpoint documentationlistAumCurrent aggregate cash and stored holding valuations across sub-accounts, not an atomic historical snapshot. generatedAt is response assembly time, not a market observation timestamp. valuationBasis identifies stored currentValue in Live or units times currentUsdPrice in Sandbox. asOf requests return 422 HISTORICAL_REPORT_UNSUPPORTED. Supports JSON and CSV.
Parameters
formatjson | csvqueryExample: json
asOfstringqueryUnsupported historical request; any supplied value returns 422.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
partnerKeystringRequiredgeneratedAtstringRequiredhistoricalbooleanRequiredvaluationBasisstored_holdings_currentValue | units_times_currentUsdPriceRequiredtotalAumnumberRequiredtotalCashnumberRequiredtotalPortfolioValuenumberRequiredsubAccountCountintegerRequiredcurrencystringRequiredbreakdownobject[]Requiredbreakdown[].subAccountIdstringRequiredbreakdown[].externalIdstring | nullRequiredbreakdown[].cashnumberRequiredbreakdown[].portfolioValuenumberRequiredbreakdown[].totalValuenumberRequiredResponse codes
200AUM report.400Invalid format.422Historical asOf reports are unavailable (HISTORICAL_REPORT_UNSUPPORTED).Positions
All open equity positions across all sub-accounts. Supports ?exchange=, ?symbol=, ?format=csv.
/report/positions
Report — Positions
Full endpoint documentationlistPositionsReturns all open positions across all sub-accounts, aggregated by symbol. Useful for calculating exposure and hedging needs.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
subAccountCountintegerRequiredsymbolCountintegerRequiredpositionsobject[]Requiredpositions[].symbolstringRequiredpositions[].totalUnitsnumberRequiredpositions[].totalValuenumberRequiredpositions[].totalInvestednumberRequiredpositions[].totalUnrealisedPnlnumberRequiredpositions[].subAccountsobject[]RequiredResponse codes
200Aggregated positions.Fees & revenue
/report/fees — trading fees paid across all sub-accounts (base fees + partner markup). /report/revenue
— partner markup revenue per trade with net payable. Both filter by ?from=/?to=.
/report/fees
Report — Fees
Full endpoint documentationlistFeesReturns fees earned by MyStocks and your markup fees, broken down by period and sub-account.
Parameters
fromstringquerytostringqueryHeaders
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
partnerKeystringRequiredperiodobjectRequiredperiod.fromstring | nullRequiredperiod.tostring | nullRequiredtotalFeesnumberRequiredtradeCountintegerRequiredcurrencyUSDRequiredmonthlyobject[]Requiredmonthly[].monthstringRequiredmonthly[].feesnumberRequiredmonthly[].tradeCountintegerRequiredtransactionsobject[]Requiredtransactions[].idstringRequiredtransactions[].orderIdstringtransactions[].symbolstringtransactions[].tradeTypestringtransactions[].amountnumberRequiredtransactions[].currencystringRequiredtransactions[].createdAtstring | nullRequiredResponse codes
200Fee report./report/revenue
Report — Revenue
Full endpoint documentationlistRevenueReturns your net revenue (markup fees) across all sub-accounts for the given period.
Parameters
fromstringquerytostringqueryHeaders
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
partnerKeystringRequiredmarkupBpsnumberRequiredperiodobjectRequiredperiod.fromstring | nullRequiredperiod.tostring | nullRequiredcurrencyUSDRequiredtotalRevenuenumberRequiredtotalBaseFeesnumberRequiredtradeCountintegerRequiredmonthlyobject[]Requiredmonthly[].monthstringRequiredmonthly[].revenuenumberRequiredmonthly[].baseFeesnumberRequiredmonthly[].tradeCountintegerRequiredbySymbolobject[]RequiredbySymbol[].symbolstringRequiredbySymbol[].revenuenumberRequiredbySymbol[].baseFeesnumberRequiredbySymbol[].tradeCountintegerRequiredtransactionsobject[]Requiredtransactions[].idstringRequiredtransactions[].orderIdstringtransactions[].symbolstringtransactions[].tradeTypestringtransactions[].markupFeenumberRequiredtransactions[].baseFeenumberRequiredtransactions[].totalFeenumbertransactions[].markupBpsnumbertransactions[].currencystringRequiredtransactions[].createdAtstring | nullRequiredResponse codes
200Revenue report.Dividends & calendar
/report/dividends — aggregated dividend report across all sub-accounts, with per-account breakdown.
/dividends/calendar — upcoming declarations; partnerEligible: true flags dividends where at least
one of your sub-accounts holds the stock.
/report/dividends
Report — Dividends
Full endpoint documentationgetDividendReportAggregated dividend distributions paid to sub-accounts for a given period. Returns totals, a per-symbol breakdown, and a per-sub-account breakdown. Add ?format=csv to download a spreadsheet of the by-symbol totals.
Parameters
fromstringqueryStart of period (ISO date, e.g. 2026-01-01). Defaults to 365 days ago.
tostringqueryEnd of period (ISO date). Defaults to today.
formatcsvqueryPass csv to receive a downloadable spreadsheet instead of JSON.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
totalUsdReceivednumberTotal USD credited to sub-accounts as dividends in the period.
distributionCountintegerNumber of individual distribution transactions.
currencystringExample: "USD"
fromstringtostringbySymbolobject[]Totals grouped by stock symbol.
bySymbol[].symbolstringbySymbol[].totalUsdnumberbySymbol[].countintegerbySubAccountobject[]Totals grouped by sub-account.
bySubAccount[].subAccountIdstringbySubAccount[].externalIdstring | nullbySubAccount[].displayNamestring | nullbySubAccount[].totalUsdnumberbySubAccount[].countintegerResponse codes
200Dividend distribution report (JSON) or CSV file./dividends/calendar
Dividend calendar
Full endpoint documentationlistCalendarReturns dividend declarations for stocks held across the partner's sub-accounts. Pass all=true to include declarations for symbols that no sub-account currently holds.
Parameters
statusDECLARED | PAID | CANCELLED | ALLqueryFilter declarations by lifecycle status.
allbooleanqueryReturn declarations for all symbols, including those not held by partner sub-accounts.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
declarationsobject[]declarations[].idstringdeclarations[].symbolstringdeclarations[].namestringdeclarations[].amountnumberdeclarations[].currencystringdeclarations[].exDividendDatestring | nulldeclarations[].recordDatestring | nulldeclarations[].paymentDatestring | nulldeclarations[].statusstringdeclarations[].partnerEligiblebooleandeclarations[].createdAtstring | nullcountintegerResponse codes
200Dividend declarations visible to this partner.Invoice
Monthly statement of account with platform fees owed, partner markup earned, float movements, payouts,
issued invoices, and manual adjustments. Pass ?month=YYYY-MM or ?format=csv.
/report/invoice
Report — Invoice
Full endpoint documentationlistInvoiceReturns invoiceable fee data for a billing period, formatted for your finance team. Includes base fees billed by MyStocks and markup collected by you.
Parameters
monthstringqueryRequiredBilling month in YYYY-MM format.
Example: 2026-04
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
invoiceIdstringRequiredmonthstringRequiredperiodobjectRequiredperiod.fromstring | nullRequiredperiod.tostring | nullRequiredgeneratedAtstringRequiredpartnerobjectRequiredpartner.keyIdstringRequiredpartner.businessNamestringRequiredpartner.emailstringRequiredpartner.tierstringpartner.markupBpsnumbersummaryobjectRequiredsummary.tradeCountintegerRequiredsummary.subAccountCountintegerRequiredsummary.walletBalancenumberRequiredsummary.totalMarkupRevenuenumberRequiredsummary.totalBaseFeesnumberRequiredsummary.totalFeesnumberRequiredsummary.currencyUSDRequiredsummary.feesOwednumbersummary.markupEarnednumbersummary.approvedTopupsnumbersummary.pendingTopupsnumbersummary.processedPayoutsnumbersummary.pendingPayoutsnumbersummary.adjustmentsnumberstatementOfAccountobjectRequiredstatementOfAccount.feesOwedUsdnumberRequiredstatementOfAccount.markupEarnedUsdnumberRequiredstatementOfAccount.netPartnerPositionUsdnumberRequiredstatementOfAccount.floatMovementsobject[]statementOfAccount.payoutsobject[]statementOfAccount.invoicesobject[]statementOfAccount.adjustmentsobject[]lineItemsobject[]RequiredlineItems[].datestringRequiredlineItems[].orderIdstringRequiredlineItems[].symbolstringRequiredlineItems[].tradeTypestringRequiredlineItems[].markupFeenumberRequiredlineItems[].baseFeenumberRequiredlineItems[].totalFeenumberRequiredResponse codes
200Invoice data.Reconciliation
Daily reconciliation pack for B2B operations: cash ledger, securities ledger, unsettled trades, fees,
dividends, corporate actions, and custody positions across the master account and all sub-accounts.
Pass ?asOf=YYYY-MM-DD (or ?from=/?to=). Add
?format=csv§ion=cash|securities|unsettled|fees|dividends|custody|summary to download one section.
/report/reconciliation
Report - Reconciliation suite
Full endpoint documentationgetReconciliationReportDaily reconciliation pack for B2B operations. Returns cash ledger, securities ledger, unsettled trades, fees, dividends, corporate actions, and custody position files for the partner master account and all sub-accounts. Add format=csv§ion=... to download a section as CSV for finance, SFTP mirroring, or data warehouse ingestion. JSON responses include an explicit cash roll-forward, data-quality controls, and customer-sub-ledger-versus-MyStocks-omnibus proof. A status of EXCEPTIONS identifies unit or invalid-value differences; INCOMPLETE means no MyStocks omnibus positions were available for comparison. Sandbox returns current virtual wallets and holdings for the master and at most 500 sub-accounts, with null custody totals and INCOMPLETE status. Sandbox historical dates and from/to receive 422; section filtering receives 400. Sandbox format=csv exports current account totals. Neither this Sandbox report nor an internal ledger alone proves external settlement.
Parameters
asOfstringquerySingle business date to reconcile. Overrides default today when from/to are omitted.
Example: 2026-06-30
fromstringquerytostringqueryformatjson | csvqueryExample: json
sectionsummary | cash | securities | unsettled | fees | dividends | corporate_actions | custody_positionsqueryCSV export section.
limitintegerqueryPer-account transaction/order scan limit.
Example: 1000
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
See the response format and API Reference for this endpoint.
Response codes
200Reconciliation report or CSV file.422Sandbox historical report or account limit unsupported.Executions
OMS-style execution reports for an order — every lifecycle transition (accepted, locked, settled, rejected, cancelled) with timestamps. Available for partner-level and sub-account orders.
Filled orders do not return an empty execution list. For orders created before the immutable execution
journal existed, the endpoint derives one compatibility FILL from the order record and marks it
synthetic: true with sourceEvidence: "LEGACY_ORDER_STATE". Native journal reports remain immutable
and authoritative; consumers can distinguish the compatibility row explicitly.
/orders/{orderId}/executions
Get order execution reports
Full endpoint documentationgetOrderExecutionsReturns OMS execution reports for a partner master-account order, including receipt, fill, rejection, and cancellation reports.
Parameters
orderIdstringpathRequiredExample: ord_abc123xyz
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
orderIdstringsubAccountIdstring | nullexecutionsobject[]executions[].executionReportIdstringexecutions[].journalVersioninteger | nullexecutions[].immutablebooleanexecutions[].eventHashAlgorithmstring | nullexecutions[].eventHashstring | nullexecutions[].orderIdstringexecutions[].clientOrderIdstring | nullexecutions[].accountTypeMASTER | SUBACCOUNTexecutions[].subAccountIdstring | nullexecutions[].reportTypeORDER_RECEIVED | FILL | REJECT | CANCEL | REPLACE | CORRECTIONexecutions[].orderStatusRECEIVED | FILLED | REJECTED | CANCELLED | REPLACED | WORKINGexecutions[].sideBUY | SELLexecutions[].symbolstringexecutions[].exchangestring | nullexecutions[].requestedQuantitynumberexecutions[].filledQuantitynumberexecutions[].remainingQuantitynumberexecutions[].fillPricenumber | nullexecutions[].averageFillPricenumber | nullexecutions[].feeAmountnumber | nullexecutions[].netAmountnumber | nullexecutions[].currencystringExample: "USD"
executions[].executionVenuestring | nullexecutions[].actorTypestring | nullexecutions[].actorIdstring | nullexecutions[].requestIdstring | nullexecutions[].sourcestring | nullexecutions[].correctsExecutionReportIdstring | nullexecutions[].syntheticbooleanTrue only for a read-time compatibility FILL derived from a legacy filled order that predates the immutable execution journal.
executions[].sourceEvidencestring | nullexecutions[].createdAtstring | nullexecutions[].occurredAtstring | nullexecutions[].recordedAtstring | nullcountintegerResponse codes
200Execution reports for the order.404Order not found./users/{userId}/orders/{orderId}/executions
Get sub-account order execution reports
Full endpoint documentationgetUserOrderExecutionsReturns OMS execution reports for a sub-account order, including receipt, fill, rejection, and cancellation reports.
Parameters
userIdstringpathRequiredExample: usr_abc123
orderIdstringpathRequiredExample: ord_abc123xyz
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
orderIdstringsubAccountIdstring | nullexecutionsobject[]executions[].executionReportIdstringexecutions[].journalVersioninteger | nullexecutions[].immutablebooleanexecutions[].eventHashAlgorithmstring | nullexecutions[].eventHashstring | nullexecutions[].orderIdstringexecutions[].clientOrderIdstring | nullexecutions[].accountTypeMASTER | SUBACCOUNTexecutions[].subAccountIdstring | nullexecutions[].reportTypeORDER_RECEIVED | FILL | REJECT | CANCEL | REPLACE | CORRECTIONexecutions[].orderStatusRECEIVED | FILLED | REJECTED | CANCELLED | REPLACED | WORKINGexecutions[].sideBUY | SELLexecutions[].symbolstringexecutions[].exchangestring | nullexecutions[].requestedQuantitynumberexecutions[].filledQuantitynumberexecutions[].remainingQuantitynumberexecutions[].fillPricenumber | nullexecutions[].averageFillPricenumber | nullexecutions[].feeAmountnumber | nullexecutions[].netAmountnumber | nullexecutions[].currencystringExample: "USD"
executions[].executionVenuestring | nullexecutions[].actorTypestring | nullexecutions[].actorIdstring | nullexecutions[].requestIdstring | nullexecutions[].sourcestring | nullexecutions[].correctsExecutionReportIdstring | nullexecutions[].syntheticbooleanTrue only for a read-time compatibility FILL derived from a legacy filled order that predates the immutable execution journal.
executions[].sourceEvidencestring | nullexecutions[].createdAtstring | nullexecutions[].occurredAtstring | nullexecutions[].recordedAtstring | nullcountintegerResponse codes
200Execution reports for the order.404Sub-account or order not found.Audit, usage & activity
/audit — paginated API call log (endpoint, method, status, IP, user-agent, latency) including key
events (key.rotated, key.revoked, settings.updated). /usage — 90-day rolling analytics: requests
per day, error rate, current rate-limit window. /client-activity — unified reverse-chronological feed
of trades, deposits, withdrawals, subscriptions, redemptions, and KYC changes across all sub-accounts.
/audit
Audit log
Full endpoint documentationlistAuditReturns a cursor-paginated list of API calls made with your live key, ordered newest first. Each entry includes the endpoint path, HTTP method, source IP, user-agent, and timestamp. Use ?limit= and ?cursor= for pagination (see the Pagination section).
Parameters
limitintegerqueryExample: 50
cursorstringqueryOpaque cursor from the previous page's nextCursor field.
beforestringqueryISO timestamp — return only entries older than this value.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
entriesobject[]entries[].idstringentries[].endpointstringExample: "/api/v1/partner/users/usr_abc/trade"
entries[].methodstringExample: "POST"
entries[].ipstring | nullentries[].userAgentstring | nullentries[].timestampstring | nullcountintegerhasMorebooleannextCursorstring | nullResponse codes
200Paginated audit log entries./usage
Usage analytics
Full endpoint documentationlistUsageReturns daily API call totals for the last N days (default 30, max 90), aggregated from per-minute rate-limit windows. Also returns the current rate-limit window status so you can see remaining capacity in real time.
Parameters
daysintegerqueryNumber of days to look back. Default 30, max 90.
Example: 30
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
keyIdstringtierstringExample: "starter"
periodDaysintegerExample: 30
totalCallsintegerTotal API calls in the requested period.
dailyobject[]One entry per calendar day, ordered oldest first.
daily[].datestringExample: "2026-05-01"
daily[].callsintegercurrentWindowobjectLive rate-limit window status.
currentWindow.limitintegerMaximum requests allowed per minute for your tier.
currentWindow.remainingintegerRequests remaining in the current 1-minute window.
currentWindow.resetAtstringWhen the current window resets.
Response codes
200Usage analytics and current rate-limit window./client-activity
Client activity feed
Full endpoint documentationlistClientActivityReturns a chronological feed of all sub-account activity — trades, deposits, withdrawals, KYC changes, and dividends. Useful for building an admin dashboard.
Parameters
fromstringqueryExample: 2026-01-01
tostringquerytypeTRADE | DEPOSIT | WITHDRAWAL | KYC | DIVIDENDqueryFilter by event type.
limitintegerqueryExample: 100
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
eventsobject[]events[].eventIdstringevents[].typestringevents[].subAccountIdstringevents[].detailobjectEvent-specific payload.
events[].createdAtstringtotalintegerResponse codes
200Activity events.Was this page useful?
Your signal helps us tighten partner onboarding docs.
Last updated on