> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wealthyhood.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get savings activity

> Retrieve savings activity for the default EUR MMF product.

Returns the user's savings activity for the default EUR MMF product (`mmf_dist_eur`) sorted by display date in descending order (newest first). This includes:

* **`cashToSavings`** – Transfers from cash balance to savings
* **`savingsToCash`** – Withdrawals from savings to cash balance
* **`savingsInterest`** – Interest payments on savings holdings

<Info>
  Currently, this endpoint returns activity for the default EUR MMF savings product only. Product filtering via query parameters is not yet available.
</Info>

## Query parameters

<ParamField query="limit" type="integer" default="unlimited">
  Optional limit on the number of results to return. Must be a non-negative integer. If omitted, returns all available results.
</ParamField>

## Response

Each transaction activity item includes:

* **`activityGroup`** – Always `"savings"` for this endpoint
* **`activityType`** – One of: `cashToSavings`, `savingsToCash`, `savingsInterest`
* **`displayDate`** – ISO 8601 date-time when the transaction occurred or was displayed
* **`status`** – Current transaction status (e.g., `Settled`, `Pending`)
* **`currency`** – ISO 4217 currency code
* **`amount`** – Transaction amount in major units (e.g., `2000.00` for €2,000.00)
* **`consideration`** – Transaction consideration with currency and amount (optional)
* **`owner`** – The unique identifier of the user who owns this transaction
* **`details`** – Optional additional information, including:
  * **`savingsProductId`** – The savings product identifier (e.g., `mmf_dist_eur`)
  * **`orders`** – Order summaries for transactions with orders


## OpenAPI

````yaml GET /transactions/savings-activity
openapi: 3.0.3
info:
  title: Wealthyhood Transactions API
  version: 1.0.0
  description: >
    Transaction activity endpoints that expose investment, cash, and savings
    activity for users.


    All requests require a bearer token with the scopes advertised in the
    primary specification, 

    and must include the `x-user-id` header so the platform can resolve the
    acting investor.
servers:
  - url: https://{host}
    variables:
      host:
        default: api.wealthyhood.com
        description: Wealthyhood API host name.
security:
  - bearerAuth: []
tags:
  - name: Transactions
    description: User transaction activity information.
paths:
  /transactions/savings-activity:
    get:
      tags:
        - Transactions
      summary: Get savings activity
      description: >
        Returns the user's savings activity for the default EUR MMF product
        (mmf_dist_eur).

        Includes top-ups, withdrawals, and interest payments.

        Results are sorted by display date in descending order (newest first).
      parameters:
        - $ref: '#/components/parameters/ExternalUserId'
        - name: limit
          in: query
          description: >
            Optional limit on the number of results to return. If omitted,
            returns all available results.
          required: false
          schema:
            type: integer
            minimum: 1
            example: 50
      responses:
        '200':
          description: Savings activity response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TransactionActivityItem'
              examples:
                savingsActivity:
                  summary: Savings activity with top-ups and interest
                  value:
                    - id: 507f1f77bcf86cd799439015
                      activityGroup: savings
                      activityType: cashToSavings
                      displayDate: '2025-01-15T16:00:00Z'
                      status: Settled
                      currency: EUR
                      amount: 2000
                      owner: 507f1f77bcf86cd799439011
                      details:
                        savingsProductId: mmf_dist_eur
                        orders:
                          - id: 507f1f77bcf86cd799439015
                            side: Buy
                            status: Settled
                            isin: IE00B1XZS804
                            quantity: 2000
                            consideration:
                              currency: EUR
                              amount: 2000
                            settledAt: '2025-01-15T00:00:00.000Z'
                            createdAt: '2025-01-15T16:00:00Z'
                            displayDate: '2025-01-15T16:00:00Z'
                            isCancellable: false
                    - id: 507f1f77bcf86cd799439016
                      activityGroup: savings
                      activityType: savingsInterest
                      displayDate: '2025-01-01T00:00:00Z'
                      status: Settled
                      currency: EUR
                      amount: 12.5
                      owner: 507f1f77bcf86cd799439011
                      details:
                        savingsProductId: mmf_dist_eur
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
components:
  parameters:
    ExternalUserId:
      name: x-user-id
      in: header
      description: >
        The unique identifier for the acting customer. Must match the user
        associated with the

        bearer token.
      required: true
      schema:
        type: string
        example: bank-user-12345
  schemas:
    TransactionActivityItem:
      type: object
      required:
        - id
        - activityGroup
        - activityType
        - displayDate
        - status
        - owner
      properties:
        id:
          type: string
          description: The unique identifier of the transaction.
          example: 507f1f77bcf86cd799439011
        activityGroup:
          type: string
          enum:
            - investment
            - cash
            - savings
            - pendingCashflows
          description: The activity group this transaction belongs to.
          example: investment
        activityType:
          type: string
          description: |
            The specific activity type. Values depend on activityGroup:
            - investment: Buy, Sell, Rebalance, Dividends
            - cash: Deposit, Withdraw, Investments, Dividends
            - savings: cashToSavings, savingsToCash, savingsInterest
            - pendingCashflows: Deposit, SavingsWithdrawal
          example: Buy
        displayDate:
          type: string
          format: date-time
          description: |
            The date/time when this transaction occurred or was displayed.
            For settled transactions, this is typically the settlement date.
          example: '2025-01-15T10:30:00Z'
        status:
          type: string
          enum:
            - Pending
            - Cancelled
            - Rejected
            - Settled
          description: >
            The current status of the transaction. Valid statuses depend on the
            activityGroup:

            - **investment**: Pending, Cancelled, Settled, Rejected

            - **cash**: Pending, Settled (user-visible settlement; e.g. deposits
            may show Settled once funds are received while internal settlement
            is still pending)

            - **savings**: Pending, Settled

            - **pendingCashflows**: Pending
          example: Settled
        currency:
          type: string
          description: >
            ISO 4217 currency code. Required for investment, cash, and savings
            activity.

            Omitted for pendingCashflows (use `consideration` instead).
          example: EUR
          enum:
            - GBP
            - EUR
            - USD
        amount:
          type: number
          description: >
            Transaction amount in major units (e.g., 12.34 for €12.34). Required
            for investment, cash,

            and savings activity. Omitted for pendingCashflows (use
            `consideration` instead).
          example: 1000
          minimum: 0
        consideration:
          type: object
          description: >
            Optional transaction consideration with currency and amount. Used by
            pendingCashflows

            activity instead of top-level `currency` and `amount`.
          properties:
            currency:
              type: string
              description: ISO 4217 currency code
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
            amount:
              type: number
              description: Transaction amount in major units
              example: 1000
              minimum: 0
        cashFlowSign:
          type: integer
          enum:
            - 1
            - -1
          description: >
            Indicates whether this transaction represents a positive (1) or
            negative (-1) cash flow.

            Present for cash activity (activityGroup: "cash") and pending
            cashflow activity

            (activityGroup: "pendingCashflows"). Positive cash flows include
            deposits, dividends,

            and withdrawals from savings. Negative cash flows include
            withdrawals, investments,

            and savings top-ups.
          example: -1
        owner:
          type: string
          description: The unique identifier of the user who owns this transaction.
          example: 507f1f77bcf86cd799439011
        details:
          oneOf:
            - $ref: '#/components/schemas/DividendDetails'
            - $ref: '#/components/schemas/SavingsDetails'
            - $ref: '#/components/schemas/InvestmentDetails'
          description: >
            Optional additional details specific to the transaction type.

            - For investment transactions (Buy, Sell, Rebalance):
            InvestmentDetails with `orders` array

            - For dividend transactions (Dividends): DividendDetails with `isin`
            and `asset`

            - For savings transactions (cashToSavings, savingsToCash,
            savingsInterest): SavingsDetails with `savingsProductId` and
            optional `orders` array

            - For cash transactions with activityType "Investments":
            InvestmentDetails with `orders` array

            - For cash transactions with activityType "Dividends":
            DividendDetails with `isin` and `asset`

            - For pendingCashflows with activityType "SavingsWithdrawal":
            SavingsDetails with `savingsProductId` and empty `orders` array
    DividendDetails:
      type: object
      required:
        - isin
      description: Details for dividend transactions.
      properties:
        isin:
          type: string
          description: International Securities Identification Number.
          example: US0378331005
        asset:
          type: string
          description: Asset ID (e.g. equities_apple for Apple).
          example: equities_apple
    SavingsDetails:
      type: object
      required:
        - savingsProductId
      description: >-
        Details for savings transactions (cashToSavings, savingsToCash,
        savingsInterest).
      properties:
        savingsProductId:
          type: string
          description: Savings product identifier (e.g. mmf_dist_eur).
          example: mmf_dist_eur
        orders:
          type: array
          description: >
            Savings orders for the transaction. Omitted for savingsInterest
            (dividends) as interest

            payments have no associated orders. Present for cashToSavings and
            savingsToCash.
          items:
            $ref: '#/components/schemas/SavingsOrder'
    InvestmentDetails:
      type: object
      required:
        - orders
      description: >-
        Details for investment transactions (Buy, Sell, Rebalance) and cash
        activity Investments.
      properties:
        orders:
          type: array
          description: Investment orders for the transaction.
          items:
            $ref: '#/components/schemas/InvestmentOrder'
    Error:
      type: object
      required:
        - message
        - code
      properties:
        message:
          type: string
          description: Human-readable error message.
          example: Limit cannot be negative
        code:
          type: string
          description: Machine-readable error code.
          example: INVALID_LIMIT
    SavingsOrder:
      type: object
      required:
        - id
        - side
        - status
        - isin
        - consideration
      description: |
        Savings order schema used in savings activity responses.
        Include optional unitPrice, fxRate, and filledAt when applicable.
      properties:
        id:
          type: string
          description: Savings order identifier.
          example: 507f1f77bcf86cd799439015
        displayId:
          type: string
          description: User-friendly display identifier for the order (e.g., ORD-XXXXX).
          example: ORD-ABC123
        side:
          type: string
          enum:
            - Buy
            - Sell
          description: Order side (`Buy` for top up, `Sell` for withdrawal).
          example: Buy
        status:
          type: string
          enum:
            - Pending
            - Matched
            - Rejected
            - Settled
            - Cancelled
          description: Current order status.
          example: Settled
        isin:
          type: string
          description: ISIN of the savings product.
          example: IE00B1XZS804
        quantity:
          type: number
          format: double
          description: Order quantity (optional).
          example: 2000
        consideration:
          type: object
          required:
            - currency
            - amount
          description: Savings order consideration with currency and amount.
          properties:
            currency:
              type: string
              description: ISO 4217 currency code.
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
            amount:
              type: number
              format: double
              description: Monetary amount in major units.
              example: 2000
              minimum: 0
        settledAt:
          type: string
          format: date-time
          nullable: true
          description: >-
            ISO datetime when the savings order settled or is expected to
            settle.
          example: '2025-01-15T00:00:00.000Z'
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the order was created (optional).
          example: '2025-01-15T16:00:00Z'
        unitPrice:
          type: object
          description: >-
            Price per unit in the order's currency (optional). Amount is in
            major units.
          properties:
            amount:
              type: number
              format: double
              description: Price per unit amount in major units.
              example: 1
            currency:
              type: string
              description: ISO 4217 currency code.
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
        fxRate:
          type: object
          description: Exchange rate used for currency conversion (optional).
          properties:
            rate:
              type: number
              format: double
              description: Exchange rate value.
              example: 1
            currency:
              type: string
              description: ISO 4217 currency code of the target currency.
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
        filledAt:
          type: string
          format: date-time
          nullable: true
          description: ISO datetime when order was matched (optional).
          example: '2025-01-15T16:00:00Z'
    InvestmentOrder:
      type: object
      required:
        - id
        - side
        - status
        - isin
      description: >
        Investment order schema used in investment and cash activity responses.

        Investment orders include unitPrice and fxRate (optional) but do NOT
        include settlementCurrency.
      properties:
        id:
          type: string
          description: Investment order identifier.
          example: 507f1f77bcf86cd799439011
        displayId:
          type: string
          description: User-friendly display identifier for the order (e.g., ORD-XXXXX).
          example: ORD-ABC123
        side:
          type: string
          enum:
            - Buy
            - Sell
          description: Order side.
          example: Buy
        status:
          type: string
          enum:
            - Pending
            - Matched
            - Rejected
            - Settled
            - Cancelled
          description: Current order status.
          example: Settled
        isin:
          type: string
          description: International Securities Identification Number.
          example: US0378331005
        quantity:
          type: number
          format: double
          description: Order quantity (optional).
          example: 5
        consideration:
          type: object
          description: Order consideration with currency and amount (optional).
          properties:
            currency:
              type: string
              description: ISO 4217 currency code.
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
            amount:
              type: number
              format: double
              description: Order amount in major units.
              example: 1000
              minimum: 0
        unitPrice:
          type: object
          description: >-
            Price per unit (per share) in the order's currency (optional, for
            investment orders only). Amount is in major units (e.g. 200.00 for
            €200.00).
          properties:
            amount:
              type: number
              format: double
              description: Price per unit amount in major units (e.g. 200.00 for €200.00).
              example: 200
            currency:
              type: string
              description: ISO 4217 currency code.
              example: EUR
              enum:
                - GBP
                - EUR
                - USD
        fxRate:
          type: object
          description: >-
            Exchange rate used for currency conversion (optional, for investment
            orders only).
          properties:
            rate:
              type: number
              format: double
              description: Exchange rate value.
              example: 1.15
            currency:
              type: string
              description: ISO 4217 currency code of the target currency.
              example: USD
              enum:
                - GBP
                - EUR
                - USD
        executionWindow:
          type: object
          nullable: true
          description: Execution timing information (optional, for investment orders only).
          properties:
            executionType:
              type: string
              description: Internal execution type such as `REALTIME` or `MARKET_HOURS`.
              example: REALTIME
            start:
              type: string
              format: date-time
              nullable: true
              description: Execution window start (ISO datetime).
            end:
              type: string
              format: date-time
              nullable: true
              description: Execution window end (ISO datetime).
        fees:
          allOf:
            - $ref: '#/components/schemas/TransactionFees'
          nullable: true
          description: Wealthyhood fee breakdown for the order (optional).
        partnerFees:
          allOf:
            - $ref: '#/components/schemas/PartnerFees'
          nullable: true
          description: Partner countervalue fees (optional, partner users only).
        settledAt:
          type: string
          format: date-time
          nullable: true
          description: >-
            ISO datetime when the investment order settled or is expected to
            settle.
          example: '2025-01-15T00:00:00.000Z'
        filledAt:
          type: string
          format: date-time
          nullable: true
          description: >-
            ISO datetime when order was matched (optional, for investment orders
            only).
          example: '2025-01-15T10:30:00Z'
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the order was created (optional).
          example: '2025-01-15T10:30:00Z'
        displayDate:
          type: string
          format: date-time
          description: Display date (filledAt when matched, else createdAt).
          example: '2025-01-15T10:30:00Z'
        isCancellable:
          type: boolean
          description: Whether the order can be cancelled by the user.
          example: false
    TransactionFees:
      type: object
      description: Wealthyhood fees on the order.
      properties:
        commission:
          $ref: '#/components/schemas/OrderFeeBreakdown'
        fx:
          $ref: '#/components/schemas/OrderFeeBreakdown'
        realtimeExecution:
          $ref: '#/components/schemas/OrderFeeBreakdown'
      additionalProperties: false
    PartnerFees:
      type: object
      description: Partner (ETE/NBG) countervalue fees (sibling of `fees`)
      properties:
        commission:
          $ref: '#/components/schemas/OrderFeeBreakdown'
        fx:
          $ref: '#/components/schemas/OrderFeeBreakdown'
      additionalProperties: false
    OrderFeeBreakdown:
      type: object
      properties:
        currency:
          type: string
          enum:
            - GBP
            - EUR
            - USD
        amount:
          type: number
          format: double
      additionalProperties: false
  responses:
    BadRequestError:
      description: Bad request – invalid parameters or malformed request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Limit cannot be negative
            code: INVALID_LIMIT
    UnauthorizedError:
      description: Unauthorized – missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Authentication required
            code: UNAUTHORIZED
    ForbiddenError:
      description: Forbidden – valid credentials but insufficient permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Access denied
            code: FORBIDDEN
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        OAuth 2.0 bearer token issued by Wealthyhood. Include this token in the
        `Authorization` header

        as `Bearer <token>`.

````