> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monei.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction Services

> Retrieve and filter user transactions, deposits, and transaction details using the Monei Node.js / TypeScript SDK.

# Overview

The `monei.transaction` service allows you to retrieve and filter user transactions, including deposits and individual transaction lookups by ID or reference.

This service provides:

* Fetch all user transactions
* Filter transactions by type
* Retrieve deposits only
* Get transaction details by ID
* Get transaction details by reference

***

## Get User Transactions

Retrieve all transactions for the authenticated user.

```ts theme={null}
const transactions = await monei.transaction.getAll();

console.log(transactions.data.transactions);
console.log(transactions.data.pagination);
```

**Endpoint**

```
GET /api/v1/transactions/user
```

***

## Get Transactions by Type

Filter transactions by type using the `TransactionType` enum.

```ts theme={null}
import { TransactionType } from "monei-sdk";

const credits = await monei.transaction.getTransactionsByType(
  TransactionType.CREDIT
);

console.log(credits.transactions);
```

### Available Types

* `TransactionType.CREDIT`
* `TransactionType.DEBIT`

***

## Get Deposits

Retrieve only deposit (credit) transactions.

```ts theme={null}
const deposits = await monei.transaction.getDeposits();

console.log(deposits.transactions);
```

This is equivalent to filtering by:

```ts theme={null}
TransactionType.CREDIT
```

***

## Get Single Deposit

Retrieve a single deposit by **ID** or **Reference**.

### By ID

```ts theme={null}
const deposit = await monei.transaction.getDeposit({
  id: "txn_123456"
});

console.log(deposit.amount, deposit.status);
```

### By Reference

```ts theme={null}
const deposit = await monei.transaction.getDeposit({
  reference: "ref_ABC123"
});

console.log(deposit.amount, deposit.status);
```

***

## Get Transaction by ID

```ts theme={null}
const transaction = await monei.transaction.getTransactionById("txn_123456");

console.log(transaction);
```

**Endpoint**

```
GET /api/v1/transactions/{id}
```

***

## Get Transaction by Reference

```ts theme={null}
const transaction = await monei.transaction.getTransactionByReference("ref_ABC123");

console.log(transaction);
```

**Endpoint**

```
GET /api/v1/transactions/reference/{reference}
```

***

## Working with Response Objects

All methods return objects with property access:

```typescript theme={null}
// Get all transactions response
const transactions = await monei.transaction.getAll();
console.log(transactions.data.transactions);  // Array of transactions
console.log(transactions.data.pagination);    // Pagination info
console.log(transactions.data.pagination.total);   // Total count
console.log(transactions.data.pagination.page);    // Current page
console.log(transactions.data.pagination.limit);   // Items per page

// Transaction by type response
const credits = await monei.transaction.getTransactionsByType(TransactionType.CREDIT);
credits.transactions.forEach(tx => {
  console.log(tx.id);         // Transaction ID
  console.log(tx.reference);  // Transaction reference
  console.log(tx.amount);     // Transaction amount
  console.log(tx.status);     // Transaction status
  console.log(tx.createdAt);  // Creation date
});

// Single deposit response
const deposit = await monei.transaction.getDeposit({ id: "txn_123456" });
console.log(deposit.id);          // Deposit ID
console.log(deposit.amount);      // Deposit amount
console.log(deposit.status);      // Deposit status
console.log(deposit.reference);   // Deposit reference
console.log(deposit.paymentMethod); // Payment method used

// Transaction by ID response
const transaction = await monei.transaction.getTransactionById("txn_123456");
console.log(transaction.id);         // Transaction ID
console.log(transaction.type);       // CREDIT or DEBIT
console.log(transaction.amount);     // Transaction amount
console.log(transaction.currency);   // Currency code
console.log(transaction.description); // Transaction description
```

***

# Response Structure

### UserTransactionsResponseDto

```ts theme={null}
{
  data: {
    transactions: TransactionDto[],
    pagination: {
      total: number,
      page: number,
      limit: number
    }
  }
}
```

### TransactionDto

```ts theme={null}
{
  id: string,
  reference: string,
  type: "CREDIT" | "DEBIT",
  amount: number,
  currency: string,
  status: string,
  createdAt: string
}
```

***

# Error Handling

All transaction service calls may throw an error if the request fails.

```ts theme={null}
try {
  const transactions = await monei.transaction.getAll();
  console.log(transactions.data.transactions);
} catch (error) {
  if (error instanceof MoneiError) {
    console.error(error.statusCode);  // HTTP status code
    console.error(error.message);     // Error message
    console.error(error.code);        // Error code
  }
}
```

***

## Service Overview

| Method                                 | Description                       |
| -------------------------------------- | --------------------------------- |
| `getAll()`                             | Retrieve all user transactions    |
| `getTransactionsByType(type)`          | Filter transactions by type       |
| `getDeposits()`                        | Retrieve credit transactions only |
| `getDeposit({ id \| reference })`      | Retrieve a single deposit         |
| `getTransactionById(id)`               | Retrieve transaction by ID        |
| `getTransactionByReference(reference)` | Retrieve transaction by reference |

***
