Skip to main content
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:
  1. Create a runPOST /b2b/data-exports with an optional activity window
  2. Poll for completionGET /b2b/data-exports/{id} until status is Completed
  3. Download the file — fetch the JSON from the fileUri in the completed run response
The run response includes activityFrom and activityTo reflecting the resolved activity window for that export.

Activity window options

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.
Pass both activityFrom and activityTo to backfill or re-export a specific period.
Validation rules:
  • Both fields are required when specifying a custom window (providing only one returns 400)
  • activityFrom must be before activityTo
  • activityTo cannot 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 applicable
  • activityTo: 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: userId and email
  • 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)
Activity types included:
  • 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:
Each snapshot includes minimal user identification:
  • userId: Unique user identifier
  • email: User’s email address
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)
All values are in euros (major currency units), not cents.
The portfolio array contains individual asset holdings:
  • assetId: Asset identifier (e.g., ‘equities_apple’, ‘etf_vwce’)
  • isin: International Securities Identification Number
  • quantity: Number of shares/units held
  • latestPrice: Price per unit (amount + currency)
  • holdingWeightPercentage: Percentage weight in portfolio
  • dailyReturnPercentage: Daily return percentage for the asset

Activity Structure

All activity items include an owner field (user identifier) to link them to users in snapshots.
Transaction activities represent all financial movements:Activity Types:
  • Investment: Buy, Sell, Rebalance, Dividends
  • Cash: Deposit, Withdraw
  • Savings: CashToSavings, SavingsToCash, SavingsInterest
Fields:
  • owner: User identifier
  • activityType: Type of activity
  • createdAt, updatedAt: Timestamps
  • status: Transaction status
  • currency: ISO 4217 currency code
  • amount: User-facing amount in euros (for investment transactions, matches getDisplayAmount; 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 represent buy/sell orders for investment assets:Fields:
  • id, owner, transactionId
  • isin, assetId: Asset identification
  • side: Buy or Sell
  • status: Pending, Matched, Rejected, Settled, Cancelled
  • quantity: Number of shares/units
  • consideration: User-facing amount (getDisplayAmount) in euros
  • fees (optional, matched/settled orders only): Persisted Wealthyhood fee breakdown — fx from displayFxFee, commission from fees.commission
  • partnerFees (optional, matched/settled orders only): Persisted partner countervalue breakdown — fx from displayPartnerFxFee, commission from partnerFees.commission
  • unitPrice: Price per unit at settlement
  • exchangeRate: Exchange rate used (if applicable)
  • createdAt, updatedAt, filledAt, marketSettledAt: Timestamps
Savings orders represent top-ups and withdrawals for savings products:Fields:
  • id, owner
  • side: “Buy” (top-up) or “Sell” (withdrawal)
  • status: Pending, Matched, Rejected, Settled, Cancelled
  • currency: ISO 4217 currency code
  • amount: Amount in euros
  • savingsProductId: Savings product identifier (e.g., ‘mmf_dist_eur’)
  • createdAt, updatedAt, settledAt: Timestamps
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, owner
  • category: TopUpAutomation, SavingsTopUpAutomation, or RebalanceAutomation
  • status: Active, Inactive, Pending
  • frequency: 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
Each export includes a full snapshot of the partner’s current bank accounts. Bank accounts are not filtered by the activity window.Fields:
  • id, owner
  • accountName: Account label/name
  • accountNumber: IBAN format account number
  • bankName: Bank name (optional)
  • holderName: Account holder name (optional)
  • status: PendingVerification, Active, Disabled
  • createdAt, 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 - Euro
  • GBP - British Pound
  • USD - 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

  • PendingTopUp - Waiting for top-up to settle
  • PendingReinvestment - Waiting for reinvestment
  • PendingDeposit - Waiting for deposit
  • Pending - Transaction pending
  • Cancelled - Transaction cancelled
  • Rejected - Transaction rejected
  • Settled - Transaction settled
  • Pending - Order created but not matched
  • Matched - Order matched but not settled
  • Settled - Order fully settled
  • Rejected - Order rejected
  • Cancelled - Order cancelled
  • PendingVerification - Account pending verification
  • Active - Account active and verified
  • Disabled - Account disabled
  • Active - Automation is active
  • Inactive - Automation is inactive
  • Pending - Automation is pending activation

Example Export

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
The metadata.schemaVersion field indicates the schema version used for each export. Monitor this field to handle schema evolution in your data platform.