---
title: "Treasury movements of the organization"
method: GET
path: "/v1/multisig-wallets/movements"
tags: ["Multisig Wallets"]
---

# Treasury movements of the organization

`GET /v1/multisig-wallets/movements`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/multisig-wallets/movements`
- Auth: one of:
  - API key in header `X-Api-Key`
  - `bearer` (a scheme the document does not define)

Transfers out of every organization treasury (any status, approvers included) and incoming USDC, newest first, over the last `days` days (default 90). `walletId` narrows to one treasury. Not exposed as an MCP tool: admin dashboard aggregate. Returns `{ movements, truncated, failedNetworks }`, bounded by the window. Incoming rows are USDC received on chain, labelled `card` when the transaction is an onramp delivery, `agent` when sent by an agent wallet of the organization, `external` otherwise. Capped at 500 outgoing transfers and 500 incoming per treasury, newest first: `truncated` is true when a cap was hit and older movements of the window are missing. `failedNetworks` lists the networks whose indexer could not be read, whose incoming movements are then missing.

## Query parameters

- `walletId` string, uuid
- `days` integer

## Response `200`

- TreasuryMovementsDto
  - `movements` union[], required
    - union
      - object
        - `direction` 'out', required
        - `id` string, uuid, required: Treasury transfer (intent) id
        - `walletId` string, uuid, required: Treasury the movement belongs to
        - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet', required: Network of the treasury
        - `amount` string, required: USDC sub-units (6 decimals)
        - `date` string, date-time, required: Creation date (out) or block date (in)
        - `status` 'pending' | 'broadcasting' | 'unknown' | 'executed' | 'failed' | 'cancelled' | 'expired', required: Transfer status
        - `txHash` string, nullable, required: Execution transaction, once broadcast
        - `destinations` object[], required: One entry per leg
          - `label` string, nullable, required: Name of the destination, when known
          - `address` string, required: Destination address
          - `kind` 'agent' | 'contact' | 'unknown', required: Kind of destination
        - `approvers` string[], required: Names of the signers who approved, in order
      - object
        - `direction` 'in', required
        - `id` string, required: Indexer transfer id
        - `walletId` string, uuid, required: Treasury the movement belongs to
        - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet', required: Network of the treasury
        - `amount` string, required: USDC sub-units (6 decimals)
        - `date` string, date-time, required: Creation date (out) or block date (in)
        - `txHash` string, required: Transaction that delivered the funds
        - `source` 'card' | 'agent' | 'external', required: card = onramp delivery, agent = one of the organization agent wallets, external = anything else
        - `fromAddress` string, required: Sender address
        - `fromLabel` string, nullable, required: Agent wallet label when source is agent
  - `truncated` boolean, required: True when at least one source hit its cap, so older movements of the window are missing
  - `failedNetworks` string[], required: Networks whose indexer could not be read: their incoming movements are missing

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
