This documentation describes the data export format for loading into your data platform. The export includes
portfolio snapshots and all financial activities for each export date.
Overview
The data export provides a comprehensive snapshot of user portfolios and financial activity for a configurable time window. This data is designed for data platform integration and enables you to:- Track portfolio valuations over time
- Analyse user financial activity patterns
- Generate reports and analytics
- Build dashboards and visualizations
Export API
Use the Data Exports API to initiate and monitor export runs:- Create a run —
POST /b2b/data-exportswith an optional activity window - Poll for completion —
GET /b2b/data-exports/{id}until status isCompleted - Download the file — fetch the JSON from the
fileUriin the completed run response
activityFrom and activityTo reflecting the resolved activity window for that export.
Activity window options
Incremental export (default)
Incremental export (default)
Send an empty request body to export activity since the latest completed run’s
activityTo through the new run’s initiation time.
On the first export, no lower bound is applied.Custom activity range
Custom activity range
Pass both Validation rules:
activityFrom and activityTo to backfill or re-export a specific period.- Both fields are required when specifying a custom window (providing only one returns
400) activityFrommust be beforeactivityToactivityTocannot be in the future- The range cannot exceed 90 days
Only one active run (
Pending or InProgress) is allowed at a time. A concurrent create request returns 409
with the existing run.Export Structure
Each export contains three main sections:Metadata
The metadata section contains export timing and version information:initiatedAt: When the export process started (ISO 8601 timestamp)exportedAt: When the export was completed (ISO 8601 timestamp)schemaVersion: Schema version for compatibility tracking (semantic versioning)activityFrom: Lower bound (exclusive) for activity included in this export, when applicableactivityTo: Upper bound (inclusive) for activity included in this export
Snapshots
The snapshots array contains end-of-day portfolio state for each user. Each snapshot includes:- User identification:
userIdandemail - Valuation: Portfolio components (cash, savings, holdings, total) with values and currencies
- Portfolio: Individual asset holdings with quantities, prices, and performance metrics
Activity
The activity section contains financial activity within the export window, organized by type:- Transactions, investment/savings orders, and automations: Filtered to the export activity window
- Bank accounts: Current state reference data (not filtered by the activity window)
- Transactions: All transaction activities (investments, deposits, withdrawals, savings)
- Investment Orders: Buy/sell orders for investment assets
- Savings Orders: Top-ups and withdrawals for savings products
- Automations: Recurring investment, savings, and rebalance automations updated in the activity window
- Bank Accounts: Full snapshot of the partner’s current bank accounts (not filtered by the activity window)
Data Model
Snapshot Structure
Each snapshot represents a user’s portfolio state at end-of-day:User Information
User Information
Each snapshot includes minimal user identification:
userId: Unique user identifieremail: User’s email address
Valuation Components
Valuation Components
The valuation object contains four portfolio components:
cash: Available cash balance (value + currency)savings: Money Market Funds balance with interest details (value + currency + unrealisedMonthlyInterest)holdings: Investment holdings value with daily performance (value + currency + upBy/downBy)total: Total portfolio value with daily performance (value + currency + upBy/downBy)
Portfolio Holdings
Portfolio Holdings
The portfolio array contains individual asset holdings:
assetId: Asset identifier (e.g., ‘equities_apple’, ‘etf_vwce’)isin: International Securities Identification Numberquantity: Number of shares/units heldlatestPrice: Price per unit (amount + currency)holdingWeightPercentage: Percentage weight in portfoliodailyReturnPercentage: Daily return percentage for the asset
Activity Structure
All activity items include anowner field (user identifier) to link them to users in snapshots.
Transactions
Transactions
Transaction activities represent all financial movements:Activity Types:
- Investment:
Buy,Sell,Rebalance,Dividends - Cash:
Deposit,Withdraw - Savings:
CashToSavings,SavingsToCash,SavingsInterest
owner: User identifieractivityType: Type of activitycreatedAt,updatedAt: Timestampsstatus: Transaction statuscurrency: ISO 4217 currency codeamount: User-facing amount in euros (for investment transactions, matchesgetDisplayAmount; for deposits, withdrawals, and savings, matches stored consideration)bankAccount: Bank account ID (only for Deposit/Withdraw)details.orders[].consideration.amount: User-facing order amount (same rules as investment orders)
Investment Orders
Investment Orders
Investment orders represent buy/sell orders for investment assets:Fields:
id,owner,transactionIdisin,assetId: Asset identificationside: Buy or Sellstatus: Pending, Matched, Rejected, Settled, Cancelledquantity: Number of shares/unitsconsideration: User-facing amount (getDisplayAmount) in eurosfees(optional, matched/settled orders only): Persisted Wealthyhood fee breakdown —fxfromdisplayFxFee,commissionfromfees.commissionpartnerFees(optional, matched/settled orders only): Persisted partner countervalue breakdown —fxfromdisplayPartnerFxFee,commissionfrompartnerFees.commissionunitPrice: Price per unit at settlementexchangeRate: Exchange rate used (if applicable)createdAt,updatedAt,filledAt,marketSettledAt: Timestamps
Savings Orders
Savings Orders
Savings orders represent top-ups and withdrawals for savings products:Fields:
id,ownerside: “Buy” (top-up) or “Sell” (withdrawal)status: Pending, Matched, Rejected, Settled, Cancelledcurrency: ISO 4217 currency codeamount: Amount in eurossavingsProductId: Savings product identifier (e.g., ‘mmf_dist_eur’)createdAt,updatedAt,settledAt: Timestamps
Automations
Automations
Automations represent recurring investments, savings top-ups, or monthly rebalancing. An automation is included when its
updatedAt or its linked mandate’s updatedAt falls in (activityFrom, activityTo]. The first
export (no activityFrom) applies only the upper bound. Inactive and cancelled automations are
included when they match the window so you can upsert by id. updatedAt on the item is always the
automation document timestamp — a mandate-only change can include a row whose updatedAt is before
activityFrom, but automations updated after activityTo are deferred to the next export.Fields:id,ownercategory: TopUpAutomation, SavingsTopUpAutomation, or RebalanceAutomationstatus: Active, Inactive, Pendingfrequency: Monthly (currently only option)dayOfMonth: Day of month for execution (top-up and savings only)currency,amount: Recurring amount (top-up and savings only)allocationMethod: holdings allocation (for TopUpAutomation)savingsProduct: Savings product (for SavingsTopUpAutomation)mandate: Direct debit mandate details (top-up and savings only)createdAt,updatedAt: Timestamps
Bank Accounts
Bank Accounts
Each export includes a full snapshot of the partner’s current bank accounts. Bank accounts are
not filtered by the activity window.Fields:
id,owneraccountName: Account label/nameaccountNumber: IBAN format account numberbankName: Bank name (optional)holderName: Account holder name (optional)status: PendingVerification, Active, DisabledcreatedAt,updatedAt: Timestamps
Data Formats
Amounts
All monetary amounts are stored in euros (major currency units), not cents. Examples:- €500.00 is represented as
500.00 - €1,250.50 is represented as
1250.50
Currency Codes
All currencies use ISO 4217 three-letter codes:EUR- EuroGBP- British PoundUSD- US Dollar
Dates and Timestamps
- Dates: ISO 8601 date format (
YYYY-MM-DD) - Timestamps: ISO 8601 datetime format (
YYYY-MM-DDTHH:mm:ss.sssZ)
Status Values
Transaction Status
Transaction Status
PendingTopUp- Waiting for top-up to settlePendingReinvestment- Waiting for reinvestmentPendingDeposit- Waiting for depositPending- Transaction pendingCancelled- Transaction cancelledRejected- Transaction rejectedSettled- Transaction settled
Order Status
Order Status
Pending- Order created but not matchedMatched- Order matched but not settledSettled- Order fully settledRejected- Order rejectedCancelled- Order cancelled
Bank Account Status
Bank Account Status
PendingVerification- Account pending verificationActive- Account active and verifiedDisabled- Account disabled
Automation Status
Automation Status
Active- Automation is activeInactive- Automation is inactivePending- Automation is pending activation
Example Export
View Complete Export Example
View Complete Export Example
JSON Schema
The complete JSON Schema definition is available for download and validation:Download Schema
Download the complete JSON Schema file for data exports. Use this schema to validate exported data or integrate
with your data platform tools.
Schema Versioning
Schema versions follow semantic versioning (MAJOR.MINOR.PATCH):- MAJOR: Breaking changes (structure changes, removed fields)
- MINOR: New optional fields added
- PATCH: Documentation updates, clarifications
metadata.schemaVersion field indicates the schema version used for each export. Monitor this field to handle schema evolution in your data platform.