# HTTP — `GET /v1/funding`

Returns the 20 most recent deposit and withdrawal requests for the
Para-authenticated wallet. It is a status endpoint: create requests through
[`POST /v1/exchange`](/api/exchange).

```http
GET /v1/funding
Authorization: Bearer <para-jwt>
X-Tessera-Wallet: 0x... # required when the JWT has multiple EVM wallets
```

The endpoint requires Para wallet authentication. An API key is not sufficient.
For an approved wallet, the first account or funding request creates the
Mosaiq account.

```jsonc
{
  "status": "ok",
  "data": {
    "safeBlock": 123456789,
    "deposits": [
      {
        "id": "...",
        "amount": "50",
        "status": "pending",
        "statusDetail": "transfer_detected_waiting_safe",
        "walletAddress": "0x...",
        "chain": "arbitrum",
        "txHash": "0x...",
        "blockNumber": 123456790,
        "safeBlock": 123456789,
        "blocksUntilSafe": 1,
        "createdAtMs": 1780000000100,
        "expiresAtMs": 1780003600100,
        "completedAtMs": null,
        "rejectedReason": null
      }
    ],
    "withdrawals": []
  },
  "server_time_ms": 1780000000200
}
```

## Deposit states

`status` is `pending`, `completed`, `rejected`, or `review_required`.
`statusDetail` makes a pending deposit actionable:

| `statusDetail` | Meaning |
| --- | --- |
| `waiting_transfer` | Mosaiq has not observed a matching transfer. |
| `transfer_detected_waiting_safe` | The transfer was observed and is waiting for the safe block. |
| `credited` | The deposit is credited. |
| `review_required` | The transfer needs operator review. |
| `rejected` | The deposit was rejected; inspect `rejectedReason`. |

`safeBlock` is the latest Arbitrum block scanned by the watcher. For a detected
deposit, `blocksUntilSafe` is zero once its transfer block is safe.

## Withdrawal states

Each withdrawal carries `status` (`pending`, `completed`, or `rejected`) and
its requested `walletAddress`. A completed request includes `payoutTxHash`; a
rejected request includes `rejectedReason`.
