> For the complete documentation index, see [llms.txt](https://sodex.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sodex.com/documentation/for-developers/api-reference/wealth-api/user-fund-history.md).

# User Fund History

Query a user's aggregated fund position and combined subscription, deposit, redemption, and airdrop timeline.

`GET /users/{address}/fund-details`

```bash
curl "https://mainnet-gw.sodex.dev/api/v1/wealth/users/0x1111111111111111111111111111111111111111/fund-details?fundId=CXMT" \
  -H "Accept: application/json"
```

## Parameters

| Name      | Location | Type   | Required | Description                                                                              |
| --------- | -------- | ------ | -------- | ---------------------------------------------------------------------------------------- |
| `address` | path     | string | Yes      | User EVM address. Matching is case-insensitive; the response normalizes it to lowercase. |
| `fundId`  | query    | string | No       | Case-sensitive fund filter. Omit it to return all associated funds.                      |

## Response data

| Field     | Description                                                                             |
| --------- | --------------------------------------------------------------------------------------- |
| `address` | Normalized user address.                                                                |
| `totals`  | Per-fund aggregate shares, costs, pending amounts, redemption totals, and average cost. |
| `entries` | Combined timeline of subscription, airdrop, deposit, and redemption events.             |

Entries can be `processing`, `completed`, or `cancelled` depending on the operation. Redemption flags are independent; for example, an entry can have an immediately claimable amount and a delayed amount still pending.

## Entry Fields for Settlement

| Field            | Type              | Meaning                                                                                                   |
| ---------------- | ----------------- | --------------------------------------------------------------------------------------------------------- |
| `fundId`         | string            | Fund identifier.                                                                                          |
| `kind`           | string            | `subscribe`, `airdrop`, `deposit`, or `redeem`. Ignore unknown kinds when processing supported workflows. |
| `status`         | string            | `processing`, `completed`, or `cancelled`.                                                                |
| `claimable`      | boolean, optional | Whether confirmed deposit shares or redemption proceeds are ready to be claimed.                          |
| `delayedPending` | boolean, optional | Whether part of a redemption remains in delayed settlement.                                               |
| `entryId`        | string, optional  | Upstream lifecycle-entry identifier, when available.                                                      |
| `txHash`         | string, optional  | Transaction hash associated with the original request or entry.                                           |
| `requestedAt`    | string, optional  | Original request time, RFC 3339 UTC.                                                                      |
| `at`             | string            | Latest status-change time, RFC 3339 UTC.                                                                  |
| `shares`         | string, optional  | Shares received for deposits, or shares submitted for redemptions.                                        |
| `proceeds`       | string, optional  | Asset amount received from a redemption.                                                                  |

`claimable` and `delayedPending` are independent and can both be true. An omitted flag means unknown, not false. Neither `completed` nor `delayedPending=false` alone establishes that a claim transaction is required.

`totals` is ordered by `fundId` ascending. `entries` is ordered by original request time descending. Amounts, shares, ratios, and prices are strings and must not be parsed as floating-point JSON numbers. Optional values are omitted when unknown; an omitted field is different from the string `"0"`.
