Skip to main content
Current Status: Transaction history API is planned for Q1 2025 but not yet available.
  • Service method exists internally (operationService.getManagedWalletTransactionHistory())
  • Dashboard displays transaction history
  • Public API endpoint coming soon
Workaround: View transaction history in the dashboard under Wallets → [Wallet] → Transactions
This endpoint will provide a complete audit trail for compliance requirements, allowing you to:
  • Export transaction data for auditors
  • Track all blockchain activity by wallet
  • Link operations to on-chain transactions
  • Filter by date range, token, type, and status

Planned Endpoint

GET /api/transactions

Query complete transaction history with filters. Status: 🔜 Service exists, public endpoint coming soon Headers:
X-API-Key: rfk_live_xxxxxxxxxxxxx
Query Parameters:
ParameterTypeRequiredDescription
opWalletIdnumberOptionalFilter by operational wallet
tokenstringOptionalToken symbol (e.g., “USDC”)
startDatestringOptionalISO 8601 date (e.g., “2025-01-01”)
endDatestringOptionalISO 8601 date (e.g., “2025-01-31”)
typestringOptionalINFLOW, SUPPLY, UNWIND, TRANSFER_OUT
statusstringOptionalPENDING, CONFIRMED, FAILED
limitnumberOptionalItems per page (default: 50, max: 100)
offsetnumberOptionalStarting position (default: 0)
Planned Response:
{
  "transactions": [
    {
      "id": 3001,
      "txHash": "5K7Wv8X9YbN3cPdQ6tRzH4mEfJsL2kUiG1nVpWqXoAy",
      "blockchain": "SOLANA",
      "type": "SUPPLY",
      "status": "CONFIRMED",
      "opWallet": {
        "id": 123,
        "address": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
      },
      "token": {
        "id": 3,
        "symbol": "USDC",
        "decimals": 6,
        "mintAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
      },
      "amount": {
        "amount": "1.00",
        "currency": "USDC"
      },
      "direction": "OUT",
      "addresses": {
        "from": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
        "to": "DriftProtocolVaultAddress..."
      },
      "operation": {
        "id": 789,
        "type": "SUPPLY"
      },
      "blockchainDetails": {
        "confirmations": 64,
        "blockNumber": 123456789,
        "fee": {
          "amount": "0.005",
          "currency": "SOL"
        }
      },
      "timestamps": {
        "detectedAt": {
          "iso": "2025-01-30T10:25:00Z",
          "unix": 1706611500
        },
        "confirmedAt": {
          "iso": "2025-01-30T10:26:00Z",
          "unix": 1706611560
        }
      }
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 50,
    "offset": 0,
    "hasMore": false
  },
  "summary": {
    "totalInflowUsd": "10.00",
    "totalOutflowUsd": "5.00",
    "netChangeUsd": "5.00",
    "transactionCount": 42,
    "byToken": [
      {
        "currency": "USDC",
        "inflow": "5.00",
        "outflow": "2.00",
        "netChange": "3.00",
        "transactionCount": 30
      },
      {
        "currency": "USDT",
        "inflow": "5.00",
        "outflow": "3.00",
        "netChange": "2.00",
        "transactionCount": 12
      }
    ]
  }
}

Response Fields

Transaction Object

FieldTypeDescription
idnumberInternal transaction ID
txHashstringBlockchain transaction hash
blockchainstringBlockchain name (e.g., “SOLANA”)
typestringTransaction type (see below)
statusstringTransaction status (see below)
opWalletobjectOperational wallet involved
tokenobjectToken transferred
amountAmountAmount transferred (see Data Types)
directionstring”IN” (inflow) or “OUT” (outflow)
addressesobjectFrom/to addresses
operationobjectLinked operation (null if not associated)
blockchainDetailsobjectBlockchain-specific details
timestampsobjectDetection and confirmation timestamps

Transaction Types

TypeDescription
INFLOWExternal deposit to operational wallet
SUPPLYDeployment to yield protocol
UNWINDWithdrawal from yield protocol
TRANSFER_OUTTransfer to external address
TRANSFER_INTransfer from another wallet

Transaction Status

StatusDescription
PENDINGDetected but not yet confirmed
CONFIRMEDConfirmed on blockchain
FAILEDTransaction failed

Summary Object

Aggregates across all filtered transactions:
  • totalInflowUsd - Sum of all inflows (stablecoin = $1 USD)
  • totalOutflowUsd - Sum of all outflows
  • netChangeUsd - Net change (inflow - outflow)
  • transactionCount - Total transactions matching filters
  • byToken - Per-token breakdown with counts

Use Cases

Compliance Reporting

Export complete transaction history for auditors:
// Get all transactions for Q1 2025
const response = await fetch(
  '/api/transactions?' + new URLSearchParams({
    startDate: '2025-01-01',
    endDate: '2025-03-31',
    limit: '100'
  }),
  {
    headers: { 'X-API-Key': process.env.REBELFI_API_KEY }
  }
);

const { transactions, summary } = await response.json();

// Export to CSV for auditors
const csv = transactions.map(tx => ({
  Date: tx.timestamps.confirmedAt.iso,
  TxHash: tx.txHash,
  Type: tx.type,
  Direction: tx.direction,
  Amount: `${tx.amount.amount} ${tx.amount.currency}`,
  Status: tx.status,
  OperationID: tx.operation?.id || 'N/A'
}));

console.log('Total Inflow:', summary.totalInflowUsd);
console.log('Total Outflow:', summary.totalOutflowUsd);
console.log('Net Change:', summary.netChangeUsd);

Track Specific Token Activity

// Get all USDC transactions
const usdcTransactions = await fetch(
  '/api/transactions?token=USDC&opWalletId=123',
  {
    headers: { 'X-API-Key': process.env.REBELFI_API_KEY }
  }
).then(r => r.json());

usdcTransactions.transactions.forEach(tx => {
  console.log(`${tx.type}: ${tx.amount.amount} USDC`);
  console.log(`  TxHash: ${tx.txHash}`);
  console.log(`  Status: ${tx.status}`);
  console.log(`  Date: ${tx.timestamps.confirmedAt.iso}`);
});

// Summary for USDC
const usdcSummary = usdcTransactions.summary.byToken.find(
  t => t.currency === 'USDC'
);
console.log(`USDC Net Change: ${usdcSummary.netChange}`);
// Get transaction history for a specific operation
const operationId = 789;

const response = await fetch(
  '/api/transactions?limit=100',
  {
    headers: { 'X-API-Key': process.env.REBELFI_API_KEY }
  }
).then(r => r.json());

const operationTxs = response.transactions.filter(
  tx => tx.operation?.id === operationId
);

console.log(`Operation ${operationId} transactions:`);
operationTxs.forEach(tx => {
  console.log(`  ${tx.type}: ${tx.txHash}`);
});

Monthly Reconciliation

// Get last month's transactions
const lastMonth = new Date();
lastMonth.setMonth(lastMonth.getMonth() - 1);
const startDate = lastMonth.toISOString().split('T')[0];
const endDate = new Date().toISOString().split('T')[0];

const response = await fetch(
  `/api/transactions?startDate=${startDate}&endDate=${endDate}`,
  {
    headers: { 'X-API-Key': process.env.REBELFI_API_KEY }
  }
).then(r => r.json());

console.log('Last Month Summary:');
console.log(`  Total Transactions: ${response.summary.transactionCount}`);
console.log(`  Total Inflow: $${response.summary.totalInflowUsd} USD`);
console.log(`  Total Outflow: $${response.summary.totalOutflowUsd} USD`);
console.log(`  Net Change: $${response.summary.netChangeUsd} USD`);

console.log('\nBy Token:');
response.summary.byToken.forEach(token => {
  console.log(`  ${token.currency}:`);
  console.log(`    Inflow: ${token.inflow}`);
  console.log(`    Outflow: ${token.outflow}`);
  console.log(`    Net: ${token.netChange}`);
  console.log(`    Count: ${token.transactionCount} txs`);
});

Pagination Example

// Fetch all transactions (paginated)
async function getAllTransactions(opWalletId: number) {
  const allTransactions = [];
  let offset = 0;
  const limit = 100;
  let hasMore = true;

  while (hasMore) {
    const response = await fetch(
      `/api/transactions?opWalletId=${opWalletId}&limit=${limit}&offset=${offset}`,
      {
        headers: { 'X-API-Key': process.env.REBELFI_API_KEY }
      }
    ).then(r => r.json());

    allTransactions.push(...response.transactions);
    hasMore = response.pagination.hasMore;
    offset += limit;
  }

  return allTransactions;
}

const allTxs = await getAllTransactions(123);
console.log(`Total transactions: ${allTxs.length}`);

Filtering Examples

By Type

// Get only SUPPLY transactions (deployments to yield)
GET /api/transactions?type=SUPPLY&opWalletId=123

// Get only INFLOW transactions (external deposits)
GET /api/transactions?type=INFLOW&opWalletId=123

By Status

// Get only confirmed transactions
GET /api/transactions?status=CONFIRMED&opWalletId=123

// Get failed transactions for troubleshooting
GET /api/transactions?status=FAILED&opWalletId=123

By Date Range

// Get transactions for a specific date range
GET /api/transactions?startDate=2025-01-01&endDate=2025-01-31&opWalletId=123

// Get transactions from a specific date onward
GET /api/transactions?startDate=2025-01-15&opWalletId=123

Combined Filters

// Complex query: All confirmed USDC supply transactions in January 2025
GET /api/transactions?token=USDC&type=SUPPLY&status=CONFIRMED&startDate=2025-01-01&endDate=2025-01-31&opWalletId=123

Data Types

This endpoint uses standard data types: For complete details, see Data Types Reference.

Current Workaround

Until the API endpoint is available:

Use the Dashboard

  1. Navigate to Wallets → Select your wallet
  2. Click the Transactions tab
  3. Filter by:
    • Date range
    • Transaction type
    • Token
    • Status
  4. Export to CSV for offline analysis

Query Individual Operations

You can currently get transaction details for specific operations:
// Get operation details (includes transaction info)
GET /api/core/operations/:id
Authorization: Bearer YOUR_JWT_TOKEN
This returns the operation with associated blockchain transactions, though it’s operation-centric rather than transaction-centric.

Timeline

Q1 2025 Roadmap:
  • ✅ Service method implemented (getManagedWalletTransactionHistory())
  • ✅ Dashboard displays transaction history with filters
  • 🔜 Public API endpoint with API key authentication
  • 🔜 Enhanced filtering capabilities
  • 🔜 Export formats (JSON, CSV)
What’s Being Built:
  1. Public /api/transactions endpoint
  2. API key authentication support
  3. Comprehensive filtering (date, token, type, status)
  4. Summary aggregations with USD totals
  5. Operation linkage in responses
  6. Pagination support


Support

Questions about transaction history or compliance requirements?
  • Email: [email protected]
  • Discord: Join our community
  • Dashboard: Use dashboard for immediate access to transaction history
  • Compliance: Contact us for specific compliance or audit requirements