# Get Wallet Transactions
> Source: /api-reference/members/wallet/get-transactions
> Get detailed paginated list of wallet transactions
> Endpoint: GET /members/me/wallet/transactions

## Overview [#overview]

Returns a detailed, paginated list of wallet transactions including raw transaction data, debits, credits, and associated metadata.

This is a lower-level endpoint compared to activity - it shows the actual transaction records rather than user-friendly activity summaries.

## Authentication [#authentication]

Requires a valid Clerk JWT token in the Authorization header.

## Query Parameters [#query-parameters]

<ParamField query="limit" type="number">
  Maximum number of transactions to return (default: 20, max: 100)
</ParamField>

<ParamField query="offset" type="number">
  Number of transactions to skip for pagination (default: 0)
</ParamField>

<RequestExample>

```bash cURL
curl -X GET "http://localhost:3000/v1/members/me/wallet/transactions?limit=10&offset=0" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"
```

```typescript TypeScript
const response = await fetch('http://localhost:3000/v1/members/me/wallet/transactions?limit=10&offset=0', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_CLERK_JWT'
  }
});

const transactions = await response.json();
```

</RequestExample>

## Response [#response]

<ResponseField name="transactions" type="array" required>
  List of transaction records
  
  <Expandable title="array items">
    <ResponseField name="id" type="string" required>
      Transaction ID (UUID)
    </ResponseField>
    
    <ResponseField name="walletId" type="string" required>
      Wallet ID this transaction belongs to
    </ResponseField>
    
    <ResponseField name="type" type="string" required>
      Transaction type: "CREDIT", "DEBIT", "TRANSFER_IN", "TRANSFER_OUT"
    </ResponseField>
    
    <ResponseField name="amount" type="number" required>
      Transaction amount (always positive, type indicates direction)
    </ResponseField>
    
    <ResponseField name="assetType" type="string" required>
      Asset type: "VALID" or "CREDIT"
    </ResponseField>
    
    <ResponseField name="balanceAfter" type="number" required>
      Wallet balance after this transaction
    </ResponseField>
    
    <ResponseField name="description" type="string" required>
      Transaction description
    </ResponseField>
    
    <ResponseField name="sourceType" type="string">
      Source of transaction: "reservation", "offer", "transfer", "adjustment"
    </ResponseField>
    
    <ResponseField name="sourceId" type="string">
      ID of the source entity
    </ResponseField>
    
    <ResponseField name="referenceId" type="string">
      External reference ID (e.g., reservation confirmation code)
    </ResponseField>
    
    <ResponseField name="metadata" type="object">
      Additional transaction metadata
    </ResponseField>
    
    <ResponseField name="processedAt" type="string" required>
      ISO 8601 timestamp when transaction was processed
    </ResponseField>
    
    <ResponseField name="createdAt" type="string" required>
      ISO 8601 timestamp when transaction was created
    </ResponseField>
    
    <ResponseField name="status" type="string" required>
      Transaction status: "completed", "pending", "failed", "cancelled"
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="total" type="number" required>
  Total number of transactions for this wallet
</ResponseField>

<ResponseField name="offset" type="number" required>
  Current pagination offset
</ResponseField>

<ResponseField name="limit" type="number" required>
  Current pagination limit
</ResponseField>

<ResponseExample>

```json 200 Response
{
  "transactions": [
    {
      "id": "txn_550e8400-e29b-41d4-a716-446655440000",
      "walletId": "wallet_123456",
      "type": "CREDIT",
      "amount": 2500,
      "assetType": "VALID",
      "balanceAfter": 15750,
      "description": "Points earned from completed stay",
      "sourceType": "reservation",
      "sourceId": "12345",
      "referenceId": "ABC123",
      "metadata": {
        "propertyId": "prop_456",
        "propertyName": "Luxury Resort & Spa",
        "checkInDate": "2024-04-10",
        "checkOutDate": "2024-04-13",
        "totalSpend": 1250.00,
        "earnRate": 2.0
      },
      "processedAt": "2024-04-15T10:30:00Z",
      "createdAt": "2024-04-15T10:30:00Z",
      "status": "completed"
    },
    {
      "id": "txn_550e8400-e29b-41d4-a716-446655440001",
      "walletId": "wallet_123456",
      "type": "DEBIT",
      "amount": 1000,
      "assetType": "VALID",
      "balanceAfter": 13250,
      "description": "Redemption: Suite Upgrade",
      "sourceType": "offer",
      "sourceId": "offer_789",
      "referenceId": "RED456",
      "metadata": {
        "offerId": "offer_789",
        "offerName": "Suite Upgrade",
        "propertyId": "prop_321",
        "propertyName": "Downtown Hotel",
        "fulfillmentId": "fulfill_012"
      },
      "processedAt": "2024-04-10T14:20:00Z",
      "createdAt": "2024-04-10T14:20:00Z",
      "status": "completed"
    },
    {
      "id": "txn_550e8400-e29b-41d4-a716-446655440002",
      "walletId": "wallet_123456",
      "type": "TRANSFER_IN",
      "amount": 500,
      "assetType": "VALID",
      "balanceAfter": 14250,
      "description": "Transfer from Jane Doe",
      "sourceType": "transfer",
      "sourceId": "transfer_345",
      "referenceId": "TRF789",
      "metadata": {
        "fromMemberId": "member_678",
        "fromMemberName": "Jane Doe",
        "transferNote": "For your hotel points!"
      },
      "processedAt": "2024-04-05T09:15:00Z",
      "createdAt": "2024-04-05T09:15:00Z",
      "status": "completed"
    },
    {
      "id": "txn_550e8400-e29b-41d4-a716-446655440003",
      "walletId": "wallet_123456",
      "type": "CREDIT",
      "amount": 250,
      "assetType": "CREDIT",
      "balanceAfter": 13750,
      "description": "Welcome bonus",
      "sourceType": "adjustment",
      "sourceId": "adj_890",
      "referenceId": null,
      "metadata": {
        "adjustmentType": "welcome_bonus",
        "adminUserId": "admin_123",
        "reason": "New member welcome bonus"
      },
      "processedAt": "2024-04-01T10:00:00Z",
      "createdAt": "2024-04-01T10:00:00Z",
      "status": "completed"
    }
  ],
  "total": 127,
  "offset": 0,
  "limit": 10
}
```

</ResponseExample>

## Transaction Types [#transaction-types]

### CREDIT [#credit]
- **Direction**: Money coming into the wallet
- **Amount**: Always positive
- **Sources**: Completed stays, bonuses, transfers received
- **Balance**: Increases wallet balance

### DEBIT [#debit]
- **Direction**: Money leaving the wallet  
- **Amount**: Always positive (but decreases balance)
- **Sources**: Redemptions, transfers sent, adjustments
- **Balance**: Decreases wallet balance

### TRANSFER_IN [#transfer_in]
- **Direction**: Points received from another member
- **Amount**: Always positive
- **Sources**: Member-to-member transfers
- **Balance**: Increases wallet balance

### TRANSFER_OUT [#transfer_out]
- **Direction**: Points sent to another member
- **Amount**: Always positive (but decreases balance)  
- **Sources**: Member-to-member transfers
- **Balance**: Decreases wallet balance

## Metadata Examples [#metadata-examples]

Different source types include different metadata:

### Reservation Transactions [#reservation-transactions]
```json
{
  "propertyId": "prop_456",
  "propertyName": "Luxury Resort & Spa", 
  "checkInDate": "2024-04-10",
  "checkOutDate": "2024-04-13",
  "totalSpend": 1250.00,
  "earnRate": 2.0
}
```

### Offer Redemptions [#offer-redemptions]
```json
{
  "offerId": "offer_789",
  "offerName": "Suite Upgrade",
  "propertyId": "prop_321", 
  "propertyName": "Downtown Hotel",
  "fulfillmentId": "fulfill_012"
}
```

### Transfers [#transfers]
```json
{
  "fromMemberId": "member_678",
  "fromMemberName": "Jane Doe",
  "transferNote": "For your hotel points!"
}
```

### Adjustments [#adjustments]
```json
{
  "adjustmentType": "welcome_bonus",
  "adminUserId": "admin_123", 
  "reason": "New member welcome bonus"
}
```

## Difference from Activity [#difference-from-activity]

**Transactions** vs **Activity**:
- **Transactions**: Raw financial records, technical detail
- **Activity**: User-friendly summaries, better UX

Use transactions for:
- Accounting/reconciliation
- Detailed financial analysis  
- Debug/support purposes

Use activity for:
- Member-facing UI
- Activity feeds
- General transaction history

## Related Endpoints [#related-endpoints]

- [Get Activity](/api-reference/members/wallet/get-activity) - User-friendly activity feed
- [Get Balance](/api-reference/members/wallet/get-balance) - Current balance
- [Get Wallet](/api-reference/members/wallet/get-wallet) - Full wallet details
