> For the complete documentation index, see [llms.txt](https://docs.yield.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yield.fi/earn-with-yieldfi/integration-sdk/examples-and-guides/transaction-history.md).

# Transaction History

Examples for working with transaction history.

### Get User Transactions

```typescript
import { YieldFiSDK } from "yieldfi-sdk";

async function getUserTransactions() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const accessToken = localStorage.getItem("accessToken");
  if (!accessToken) {
    console.log("Please login first");
    return;
  }

  // Get user's transactions (automatically filtered by authenticated address)
  const transactions = await sdk.vault.getTransactions(
    {
      chainId: 1,
      page: 1,
      pageSize: 20,
    },
    accessToken
  );

  console.log(`Found ${transactions.pagination.total} transactions\n`);

  transactions.data.forEach((tx) => {
    console.log(`Transaction ${tx.id}:`);
    console.log(`  Type: ${tx.type}`);
    console.log(`  Status: ${tx.status}`);
    console.log(`  Amount: ${tx.amount} ${tx.assetSymbol}`);
    console.log(`  Vault: ${tx.vaultAddress}`);
    console.log(`  Timestamp: ${new Date(tx.timestamp).toLocaleString()}`);
    console.log(`  Hash: ${tx.txnHash}`);
    console.log("");
  });
}

getUserTransactions();
```

### Filter Transactions

```typescript
async function filterTransactions() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const accessToken = localStorage.getItem("accessToken");

  // Get deposits only
  const deposits = await sdk.vault.getTransactions(
    {
      chainId: 1,
      type: "deposit",
      status: "PROCESSED",
      startDate: "2024-01-01T00:00:00.000Z",
      endDate: "2024-01-31T23:59:59.999Z",
    },
    accessToken
  );

  console.log(`Deposits in January: ${deposits.pagination.total}`);

  // Get redemptions only
  const redemptions = await sdk.vault.getTransactions(
    {
      chainId: 1,
      type: "redemption",
      status: "PROCESSED",
    },
    accessToken
  );

  console.log(`Total redemptions: ${redemptions.pagination.total}`);
}

filterTransactions();
```

### Get Transaction by Hash

```typescript
async function getTransactionByHash(txnHash: string, chainId: number) {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const accessToken = localStorage.getItem("accessToken");

  try {
    const transaction = await sdk.vault.getTransactionByHash(
      txnHash,
      chainId,
      accessToken
    );

    console.log(`Transaction Found:`);
    console.log(`  ID: ${transaction.transaction.id}`);
    console.log(`  Type: ${transaction.transaction.type}`);
    console.log(`  Status: ${transaction.transaction.status}`);
    console.log(`  Amount: ${transaction.transaction.amount}`);
    console.log(`  User: ${transaction.transaction.userAddress}`);
  } catch (error) {
    console.error("Transaction not found or access denied");
  }
}

getTransactionByHash(
  "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  1
);
```

### Get Filter Options

```typescript
async function showFilterOptions() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const accessToken = localStorage.getItem("accessToken");

  const filterOptions = await sdk.vault.getTransactionFilterOptions(accessToken);

  console.log("Available Filters:");
  console.log(`  Chain IDs: ${filterOptions.filters.chainIds.join(", ")}`);
  console.log(`  Statuses: ${filterOptions.filters.statuses.join(", ")}`);
  console.log(`  Types: ${filterOptions.filters.types.join(", ")}`);
}

showFilterOptions();
```

### Transaction Summary

```typescript
async function transactionSummary() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const accessToken = localStorage.getItem("accessToken");

  // Get all transactions
  const allTransactions = await sdk.vault.getTransactions(
    {
      chainId: 1,
      page: 1,
      pageSize: 100, // Get more for summary
    },
    accessToken
  );

  // Calculate summary
  const summary = {
    total: allTransactions.pagination.total,
    deposits: allTransactions.data.filter((tx) => tx.type === "deposit").length,
    redemptions: allTransactions.data.filter((tx) => tx.type === "redemption").length,
    processed: allTransactions.data.filter((tx) => tx.status === "PROCESSED").length,
    pending: allTransactions.data.filter((tx) => tx.status === "PENDING").length,
  };

  console.log("=== Transaction Summary ===");
  console.log(`Total: ${summary.total}`);
  console.log(`Deposits: ${summary.deposits}`);
  console.log(`Redemptions: ${summary.redemptions}`);
  console.log(`Processed: ${summary.processed}`);
  console.log(`Pending: ${summary.pending}`);
}

transactionSummary();
```
