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

# User Services

> Retrieve and manage user profile information, KYC status, and deposit limits using the Monei Python SDK.

# Overview

The `monei.user` service allows you to manage the authenticated user's profile, verify KYC status, and retrieve account limits.

This service provides:

* Retrieve current authenticated user
* Update user profile
* Check KYC verification status
* Get deposit limits

> **Note**: All methods return response objects with attributes accessible via dot notation (e.g., `user.id`, `kyc.status`).

***

## Get Current User

Retrieve details of the authenticated user.

```python theme={null}
user = monei.user.get_current_user()

print(user.id)
print(user.email)
print(user.status)
```

***

## Update User

Update a user's profile information.

```python theme={null}
updated_user = monei.user.update_user(
    user_id="user_123",
    first_name="John",
    last_name="Doe"
)

print(updated_user)
```

***

## Get KYC Status

Check the user's KYC verification status.

```python theme={null}
kyc = monei.user.kyc_status()

print(kyc.status)
print(kyc.level)
```

***

## Get Deposit Limits

Retrieve the user's deposit limits based on KYC level.

```python theme={null}
limits = monei.user.get_deposit_limit()

print(limits)
```

***

## Working with Response Objects

All methods return objects with attribute access:

```python theme={null}
# Get current user response
user = monei.user.get_current_user()
print(user.id)           # User ID
print(user.email)        # Email address
print(user.first_name)   # First name
print(user.last_name)    # Last name
print(user.status)       # User status
print(user.created_at)   # Account creation date

# Update user response
updated_user = monei.user.update_user("user_123", first_name="John", last_name="Doe")
print(updated_user.id)         # User ID
print(updated_user.first_name) # Updated first name
print(updated_user.last_name)  # Updated last name
print(updated_user.updated_at) # Last update timestamp

# KYC status response
kyc = monei.user.kyc_status()
print(kyc.status)      # pending | verified | rejected
print(kyc.level)       # KYC level (0, 1, 2)
print(kyc.submitted_at) # When KYC was submitted
print(kyc.verified_at)  # When KYC was verified (if verified)

# Deposit limits response
limits = monei.user.get_deposit_limit()
print(limits.daily_limit)    # Daily deposit limit
print(limits.monthly_limit)  # Monthly deposit limit
print(limits.used_today)     # Amount used today
print(limits.used_this_month) # Amount used this month
print(limits.remaining_today) # Remaining daily limit
```

***

***

# Error Handling

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

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

try:
    user = monei.user.get_current_user()
    print(user.email)
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_current_user()`                          | Retrieve authenticated user profile |
| `update_user(id, first_name, last_name, ...)` | Update user profile                 |
| `kyc_status()`                                | Get KYC verification status         |
| `get_deposit_limit()`                         | Retrieve deposit limits             |

***

## Notes

* All methods require a properly configured `MoneiClient` instance with authentication
* User ID is required for update operations
* KYC status affects deposit limits and available features
* All responses are strongly typed objects with attribute access
* Deposit limits are returned in kobo (1 NGN = 100 kobo)

***
