> ## 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 Python 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

> **Note**: All methods return response objects with attributes accessible via dot notation (e.g., `transactions.data.transactions`, `deposit.amount`).

***

## Get User Transactions

Retrieve all transactions for the authenticated user.

```python theme={null}
transactions = monei.transaction.get_all()

print(transactions.data.transactions)
print(transactions.data.pagination)
```

**Endpoint**

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

***

## Get Transactions by Type

Filter transactions by type using the `TransactionType` enum.

```python theme={null}
from monei import TransactionType

credits = monei.transaction.get_transactions_by_type(
    TransactionType.CREDIT
)

print(credits.transactions)
```

### Available Types

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

***

## Get Deposits

Retrieve only deposit (credit) transactions.

```python theme={null}
deposits = monei.transaction.get_deposits()

print(deposits.transactions)
```

This is equivalent to filtering by:

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

***

## Get Single Deposit

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

### By ID

```python theme={null}
deposit = monei.transaction.get_deposit(
    id="txn_123456"
)

print(deposit.amount, deposit.status)
```

### By Reference

```python theme={null}
deposit = monei.transaction.get_deposit(
    reference="ref_ABC123"
)

print(deposit.amount, deposit.status)
```

***

## Get Transaction by ID

```python theme={null}
transaction = monei.transaction.get_transaction_by_id("txn_123456")

print(transaction)
```

**Endpoint**

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

***

## Get Transaction by Reference

```python theme={null}
transaction = monei.transaction.get_transaction_by_reference("ref_ABC123")

print(transaction)
```

**Endpoint**

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

***

## Working with Response Objects

All methods return objects with attribute access:

```python theme={null}
# Get all transactions response
transactions = monei.transaction.get_all()
print(transactions.data.transactions)  # List of transactions
print(transactions.data.pagination)    # Pagination info
print(transactions.data.pagination.total)   # Total count
print(transactions.data.pagination.page)    # Current page
print(transactions.data.pagination.limit)   # Items per page

# Transaction by type response
credits = monei.transaction.get_transactions_by_type(TransactionType.CREDIT)
for tx in credits.transactions:
    print(tx.id)          # Transaction ID
    print(tx.reference)   # Transaction reference
    print(tx.amount)      # Transaction amount
    print(tx.status)      # Transaction status
    print(tx.created_at)  # Creation date

# Single deposit response
deposit = monei.transaction.get_deposit(id="txn_123456")
print(deposit.id)             # Deposit ID
print(deposit.amount)         # Deposit amount
print(deposit.status)         # Deposit status
print(deposit.reference)      # Deposit reference
print(deposit.payment_method) # Payment method used

# Transaction by ID response
transaction = monei.transaction.get_transaction_by_id("txn_123456")
print(transaction.id)          # Transaction ID
print(transaction.type)        # CREDIT or DEBIT
print(transaction.amount)      # Transaction amount
print(transaction.currency)    # Currency code
print(transaction.description) # Transaction description
```

***

# Response Structure

### UserTransactionsResponseDto

```python theme={null}
{
    "data": {
        "transactions": [TransactionDto],
        "pagination": {
            "total": int,
            "page": int,
            "limit": int
        }
    }
}
```

### TransactionDto

```python theme={null}
{
    "id": str,
    "reference": str,
    "type": "CREDIT" | "DEBIT",
    "amount": float,
    "currency": str,
    "status": str,
    "created_at": str
}
```

***

# Error Handling

All transaction service calls may raise an exception if the request fails.

```python theme={null}
from monei import MoneiError

try:
    transactions = monei.transaction.get_all()
    print(transactions.data.transactions)
except MoneiError as err:
    print(err.status_code)  # HTTP status code
    print(err.message)      # Error message
    print(err.code)         # Error code
```

***

## Service Overview

| Method                                    | Description                       |
| ----------------------------------------- | --------------------------------- |
| `get_all()`                               | Retrieve all user transactions    |
| `get_transactions_by_type(type)`          | Filter transactions by type       |
| `get_deposits()`                          | Retrieve credit transactions only |
| `get_deposit(id or reference)`            | Retrieve a single deposit         |
| `get_transaction_by_id(id)`               | Retrieve transaction by ID        |
| `get_transaction_by_reference(reference)` | Retrieve transaction by reference |

***
