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

# Deposits

> How to fund your Monei Naira wallet through various deposit methods

## Overview

Your Monei Naira wallet can be funded through multiple methods. This guide covers all available deposit options, processing times, and best practices.

**What you'll learn:**

* Virtual account deposits
* Card payment deposits
* Bank transfer deposits
* USSD deposits
* Payment link generation
* Deposit confirmation and tracking
* Transaction limits
* Troubleshooting failed deposits

***

## Deposit Methods

Monei offers several ways to fund your Naira wallet:

<CardGroup cols={4}>
  <Card title="Virtual Account" icon="building-columns">
    Transfer to your dedicated virtual account number
  </Card>

  <Card title="Card Payment" icon="credit-card">
    Fund instantly with debit/credit card
  </Card>

  <Card title="Bank Transfer" icon="bank">
    Generate payment instructions for bank transfer
  </Card>

  <Card title="USSD" icon="phone">
    Deposit via USSD banking codes
  </Card>
</CardGroup>

***

## Virtual Account Deposit

The primary method to fund your Naira wallet is through your dedicated virtual account.

### Get Virtual Account Details

<CodeGroup>
  ```javascript Node.js theme={null}
  import MoneiSDK from 'monei-sdk';

  const monei = new MoneiSDK({
    apiKey: process.env.MONEI_API_KEY,
  });

  // Get or create virtual account
  const virtualAccount = await monei.account.getVirtualAccount();

  console.log('Account Number:', virtualAccount.accountNumber);
  console.log('Bank Name:', virtualAccount.bankName);
  console.log('Account Name:', virtualAccount.accountName);

  // If no virtual account exists, create one
  if (!virtualAccount.accountNumber) {
    const newAccount = await monei.account.createVirtualAccount({
      nin: 'your-nin-number', // Required for account creation
      reference: 'optional-reference'
    });
    
    console.log('New Account Created:', newAccount.accountNumber);
  }
  ```

  ```python Python theme={null}
  from monei import MoneiClient

  monei = MoneiClient(
      api_key=os.getenv('MONEI_API_KEY')
  )

  # Get virtual account details
  virtual_account = monei.account.get_virtual_account()

  print(f'Account Number: {virtual_account.account_number}')
  print(f'Bank Name: {virtual_account.bank_name}')
  print(f'Account Name: {virtual_account.account_name}')

  # Create if doesn't exist
  if not virtual_account.account_number:
      new_account = monei.account.create_virtual_account(
          nin='your-nin-number',
          reference='optional-reference'
      )
      print(f'New Account: {new_account.account_number}')
  ```

  ```bash cURL theme={null}
  # Get virtual account
  curl https://api.monei.cc/api/v1/wallet/virtual-account \
    -H "x-api-key: YOUR_API_KEY"

  # Create virtual account
  curl -X POST https://api.monei.cc/api/v1/wallet/virtual-account \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "nin": "your-nin-number"
    }'
  ```
</CodeGroup>

**Response:**

```json theme={null}
{
  "statusCode": 200,
  "message": "Virtual account retrieved successfully",
  "data": {
    "accountNumber": "9907581802",
    "bankName": "Indulge MFB",
    "accountName": "JOHN DOE - MONEI",
    "status": "active",
    "createdAt": "2024-01-01T00:00:00Z"
  }
}
```

### How to Deposit

<Steps>
  <Step title="Get Account Details">
    Retrieve your virtual account number from Monei
  </Step>

  <Step title="Make Bank Transfer">
    Transfer Naira from any Nigerian bank to your virtual account

    **Via Mobile App:**

    * Open your bank app
    * Select "Transfer"
    * Enter Monei virtual account number
    * Enter amount
    * Confirm transfer

    **Via Internet Banking:**

    * Login to internet banking
    * Add Monei account as beneficiary
    * Transfer funds

    **Via USSD:**

    * Dial your bank's USSD code
    * Follow prompts to transfer
  </Step>

  <Step title="Wait for Confirmation">
    Deposit is typically confirmed within seconds to 5 minutes

    * Instant for most banks
    * Up to 5 minutes during peak hours
    * Webhook notification sent when confirmed
  </Step>

  <Step title="Check Balance">
    Verify funds credited to your Monei wallet

    ```javascript theme={null}
    const wallet = await monei.account.me();
    console.log('Naira Balance:', wallet.nairaBalance);
    ```
  </Step>
</Steps>

***

## Card Deposit

Fund your wallet instantly using a debit or credit card.

<CodeGroup>
  ```javascript Node.js theme={null}
  import MoneiSDK from 'monei-sdk';

  const monei = new MoneiSDK({
    apiKey: process.env.MONEI_API_KEY,
  });

  // Initiate card deposit
  const deposit = await monei.deposit.initialize(
      'CARD',
      {
          amount: 10000,
          reference: 'DEP-' + Date.now(),
          currency: 'NGN',
          card: {
              cardNumber: '5531886652142950',
              cvv: '564',
              expiryMonth: '09',
              expiryYear: '32',
              cardHolderName: 'JOHN DOE'
          },
          narration: 'Wallet funding'
      }
  );

  console.log('Status:', deposit.status);
  console.log('Reference:', deposit.reference);

  // Handle next action (OTP, PIN, 3DS)
  if (deposit.nextAction) {
    console.log('Action required:', deposit.nextAction.type);
    
    if (deposit.nextAction.type === 'requires_otp') {
      // Authorize with OTP
      const authorized = await monei.deposit.authorize({
        type: 'otp',
        reference: deposit.reference,
        otp: '123456'
      });
      
      console.log('Authorization status:', authorized.status);
    }
  }
  ```

  ```python Python theme={null}
  from monei import MoneiClient

  monei = MoneiClient(
      api_key=os.getenv('MONEI_API_KEY')
  )

  # Initiate card deposit
  deposit = monei.deposit.initialize(
      method='CARD',
      amount=10000,
      reference=f'DEP-{int(time.time())}',
      currency='NGN',
      card={
          'card_number': '5531886652142950',
          'cvv': '564',
          'expiry_month': '09',
          'expiry_year': '32',
          'card_holder_name': 'JOHN DOE'
      },
      narration='Wallet funding'
  )

  print(f'Status: {deposit.status}')
  print(f'Reference: {deposit.reference}')

  # Handle OTP authorization
  if deposit.next_action and deposit.next_action.type == 'requires_otp':
      authorized = monei.deposit.authorize(
          type='otp',
          reference=deposit.reference,
          otp='123456'
      )
      print(f'Authorized: {authorized.status}')
  ```

  ```bash cURL theme={null}
  # Initiate card deposit
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit?method=CARD \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "amount": 10000,
      "reference": "DEP-1234567890",
      "currency": "NGN",
      "card": {
        "cardNumber": "5531886652142950",
        "cvv": "564",
        "expiryMonth": "09",
        "expiryYear": "32",
        "cardHolderName": "JOHN DOE"
      },
      "narration": "Wallet funding"
    }'

  # Authorize with OTP
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit/authorize \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "otp",
      "reference": "DEP-1234567890",
      "otp": "123456"
    }'
  ```
</CodeGroup>

**Next Actions:**
Card deposits may require additional authorization:

| Type                         | Description       | Action               |
| ---------------------------- | ----------------- | -------------------- |
| `requires_pin`               | Card PIN required | Provide 4-digit PIN  |
| `requires_otp`               | OTP sent to phone | Enter OTP code       |
| `redirect_url`               | 3D Secure         | Redirect user to URL |
| `requires_additional_fields` | More info needed  | Provide AVS data     |

***

## Bank Transfer Deposit

Generate payment instructions for manual bank transfer.

<CodeGroup>
  ```javascript Node.js theme={null}
  // Initiate bank transfer deposit
  const deposit = await monei.deposit.initialize({
    method: 'BANK_TRANSFER',
    amount: 50000,
    reference: 'DEP-' + Date.now(),
    currency: 'NGN',
    narration: 'Wallet funding'
  });

  console.log('Account Number:', deposit.accountNumber);
  console.log('Bank Name:', deposit.bankName);
  console.log('Account Name:', deposit.accountName);
  console.log('Amount:', deposit.amount);
  console.log('Expires:', deposit.expiry_datetime);
  console.log('Note:', deposit.note);
  ```

  ```python Python theme={null}
  # Initiate bank transfer deposit
  deposit = monei.deposit.initialize(
      method='BANK_TRANSFER',
      amount=50000,
      reference=f'DEP-{int(time.time())}',
      currency='NGN',
      narration='Wallet funding'
  )

  print(f'Account Number: {deposit.account_number}')
  print(f'Bank Name: {deposit.bank_name}')
  print(f'Account Name: {deposit.account_name}')
  print(f'Amount: ₦{deposit.amount}')
  print(f'Expires: {deposit.expiry_datetime}')
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit?method=BANK_TRANSFER \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "amount": 50000,
      "reference": "DEP-1234567890",
      "currency": "NGN",
      "narration": "Wallet funding"
    }'
  ```
</CodeGroup>

**Response:**

```json theme={null}
{
  "statusCode": 200,
  "message": "Deposit initiated successfully",
  "data": {
    "reference": "DEP-1234567890",
    "amount": 50000,
    "currency": "NGN",
    "accountNumber": "1234567890",
    "bankName": "Wema Bank",
    "accountName": "MONEI/JOHN DOE",
    "expiry_datetime": "2024-02-14T23:59:59Z",
    "note": "Transfer exactly ₦50,000 to complete deposit",
    "status": "PENDING"
  }
}
```

***

## USSD Deposit

Deposit using your bank's USSD code (\*123#).

<CodeGroup>
  ```javascript Node.js theme={null}
  // Initiate USSD deposit
  const deposit = await monei.deposit.initialize({
    method: 'USSD',
    amount: 5000,
    reference: 'DEP-' + Date.now(),
    currency: 'NGN',
    ussd: {
      bankCode: '058' // GTBank code
    },
    narration: 'Wallet funding'
  });

  console.log('USSD Code:', deposit.nextAction.payment_instruction.ussdCode);
  console.log('Instructions:', deposit.nextAction.payment_instruction.instructions);
  ```

  ```python Python theme={null}
  # Initiate USSD deposit
  deposit = monei.deposit.initialize(
      method='USSD',
      amount=5000,
      reference=f'DEP-{int(time.time())}',
      currency='NGN',
      ussd={
          'bank_code': '058'
      },
      narration='Wallet funding'
  )

  print(f'USSD Code: {deposit.next_action.payment_instruction.ussd_code}')
  print(f'Instructions: {deposit.next_action.payment_instruction.instructions}')
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit?method=USSD \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "amount": 5000,
      "reference": "DEP-1234567890",
      "currency": "NGN",
      "ussd": {
        "bankCode": "058"
      },
      "narration": "Wallet funding"
    }'
  ```
</CodeGroup>

***

## Payment Link Generation

Generate a hosted payment link for customers to complete deposit.

<CodeGroup>
  ```javascript Node.js theme={null}
  // Generate payment link
  const paymentLink = await monei.deposit.generatePaymentLink({
    amount: 25000,
    reference: 'DEP-' + Date.now(),
    currency: 'NGN',
    redirectUrl: 'https://yourapp.com/payment/success',
    customization: {
      title: 'Fund Your Wallet'
    },
    customer: {
      email: 'customer@example.com',
      phoneNumber: '+2348012345678',
      name: 'John Doe'
    },
    narration: 'Wallet funding'
  });

  console.log('Payment Link:', paymentLink.link);
  // Share this link with customer
  ```

  ```python Python theme={null}
  # Generate payment link
  payment_link = monei.deposit.generate_payment_link(
      amount=25000,
      reference=f'DEP-{int(time.time())}',
      currency='NGN',
      redirect_url='https://yourapp.com/payment/success',
      customization={
          'title': 'Fund Your Wallet'
      },
      customer={
          'email': 'customer@example.com',
          'phone_number': '+2348012345678',
          'name': 'John Doe'
      },
      narration='Wallet funding'
  )

  print(f'Payment Link: {payment_link.link}')
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit/payment-link \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "amount": 25000,
      "reference": "DEP-1234567890",
      "currency": "NGN",
      "redirectUrl": "https://yourapp.com/payment/success",
      "customization": {
        "title": "Fund Your Wallet"
      },
      "customer": {
        "email": "customer@example.com",
        "phoneNumber": "+2348012345678",
        "name": "John Doe"
      },
      "narration": "Wallet funding"
    }'
  ```
</CodeGroup>

**Use Cases:**

* E-commerce checkout
* Invoice payment
* Subscription renewal
* One-time payments
* Customer self-service deposits

***

## Deposit with Saved Payment Method

Use a previously saved payment method for faster deposits.

<CodeGroup>
  ```javascript Node.js theme={null}
  // Deposit with saved card
  const deposit = await monei.deposit.withPaymentMethod({
    amount: 15000,
    paymentMethodId: 'pm_abc123xyz',
    reference: 'DEP-' + Date.now(),
    currency: 'NGN',
    redirectUrl: 'https://yourapp.com/payment/success',
    narration: 'Wallet funding'
  });

  console.log('Status:', deposit.status);
  console.log('Reference:', deposit.reference);
  ```

  ```python Python theme={null}
  # Deposit with saved card
  deposit = monei.deposit.with_payment_method(
      amount=15000,
      payment_method_id='pm_abc123xyz',
      reference=f'DEP-{int(time.time())}',
      currency='NGN',
      redirect_url='https://yourapp.com/payment/success',
      narration='Wallet funding'
  )

  print(f'Status: {deposit.status}')
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.monei.cc/api/v1/wallet/deposit/payment-method \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "amount": 15000,
      "paymentMethodId": "pm_abc123xyz",
      "reference": "DEP-1234567890",
      "currency": "NGN",
      "narration": "Wallet funding"
    }'
  ```
</CodeGroup>

[Learn more about payment methods →](/naira-wallet/payment-methods)

***

## Check Deposit Status

Track the status of your deposit by reference.

<CodeGroup>
  ```javascript Node.js theme={null}
  // Get deposit status
  const status = await monei.deposit.getStatus('DEP-1234567890');

  console.log('Status:', status.status);
  console.log('Amount:', status.amount);
  console.log('Reference:', status.reference);

  if (status.status === 'COMPLETED') {
    console.log('Deposit successful!');
  } else if (status.status === 'FAILED') {
    console.log('Deposit failed:', status.failureReason);
  }
  ```

  ```python Python theme={null}
  # Get deposit status
  status = monei.deposit.get_status('DEP-1234567890')

  print(f'Status: {status.status}')
  print(f'Amount: ₦{status.amount}')

  if status.status == 'COMPLETED':
      print('Deposit successful!')
  elif status.status == 'FAILED':
      print(f'Deposit failed: {status.failure_reason}')
  ```

  ```bash cURL theme={null}
  curl https://api.monei.cc/api/v1/wallet/deposit/status/DEP-1234567890 \
    -H "x-api-key: YOUR_API_KEY"
  ```
</CodeGroup>

**Deposit States:**

| Status       | Description                     |
| ------------ | ------------------------------- |
| `PENDING`    | Initiated, awaiting payment     |
| `PROCESSING` | Payment received, processing    |
| `COMPLETED`  | Successfully credited to wallet |
| `FAILED`     | Deposit failed or reversed      |

***

## Supported Banks

Your virtual account accepts transfers from all Nigerian banks:

<Tabs>
  <Tab title="Commercial Banks">
    * Access Bank
    * GTBank (Guaranty Trust Bank)
    * First Bank of Nigeria
    * UBA (United Bank for Africa)
    * Zenith Bank
    * Fidelity Bank
    * Union Bank
    * Stanbic IBTC
    * Sterling Bank
    * Wema Bank
    * And all other commercial banks
  </Tab>

  <Tab title="Microfinance Banks">
    * Kuda MFB
    * Rubies MFB
    * VFD MFB
    * Mint MFB
    * And other licensed MFBs
  </Tab>

  <Tab title="Digital Banks">
    * OPay
    * PalmPay
    * Moniepoint
    * Carbon
    * FairMoney
    * And other digital banks
  </Tab>
</Tabs>

<Info>
  Transfers from all Nigerian bank accounts are supported, including savings, current, and domiciliary accounts.
</Info>

***

## Deposit Confirmation

### Automatic Confirmation

Most deposits are confirmed automatically:

<CodeGroup>
  ```javascript Node.js theme={null}
  // Check deposit status
  const deposits = await monei.transactions.getDeposits({
    status: 'pending',
    limit: 10
  });

  deposits.forEach(deposit => {
    console.log('Amount:', deposit.amount);
    console.log('Status:', deposit.status);
    console.log('Reference:', deposit.reference);
    console.log('Time:', deposit.createdAt);
  });

  // Get specific deposit
  const deposit = await monei.transactions.getDeposit({depositId});
  console.log('Deposit Status:', deposit.status);
  ```

  ```python Python theme={null}
  # Check deposit status
  deposits = monei.transactions.get_deposits(
      status='pending',
      limit=10
  )

  for deposit in deposits:
      print(f'Amount: ₦{deposit.amount}')
      print(f'Status: {deposit.status}')
      print(f'Reference: {deposit.reference}')

  # Get specific deposit
  deposit = monei.wallet.get_deposit(deposit_id)
  print(f'Status: {deposit.status}')
  ```

  ```bash cURL theme={null}
  # Get pending deposits
  curl https://api.monei.cc/api/v1/wallet/deposits?status=pending \
    -H "x-api-key: YOUR_API_KEY"

  # Get specific deposit
  curl https://api.monei.cc/api/v1/wallet/deposits/{depositId} \
    -H "x-api-key: YOUR_API_KEY"
  ```
</CodeGroup>

### Deposit States

| Status       | Description                                  | Action Required         |
| ------------ | -------------------------------------------- | ----------------------- |
| `pending`    | Transfer initiated, waiting for confirmation | Wait (usually \< 2 min) |
| `processing` | Bank confirming transfer                     | Wait                    |
| `completed`  | Funds credited to wallet                     | None                    |
| `failed`     | Transfer failed or reversed                  | Check bank, retry       |
| `expired`    | Confirmation timeout                         | Contact support         |

***

## Webhook Notifications

Receive real-time notifications when deposits are confirmed:

<CodeGroup>
  ```javascript Node.js (Express) theme={null}
  import express from 'express';

  const app = express();
  app.use(express.json());

  app.post('/webhooks/monei', (req, res) => {
    const event = req.body;
    
    // Verify webhook signature
    const signature = req.headers['x-monei-signature'];
    if (!verifySignature(event, signature)) {
      return res.status(401).send('Invalid signature');
    }
    
    // Handle deposit events
    if (event.type === 'deposit.completed') {
      console.log('Deposit confirmed!');
      console.log('Amount:', event.data.amount);
      console.log('Reference:', event.data.reference);
      console.log('New Balance:', event.data.newBalance);
      
      // Update your application
      // - Notify user
      // - Update database
      // - Trigger actions
    }
    
    res.status(200).send('OK');
  });

  app.listen(3000);
  ```

  ```python Python (Flask) theme={null}
  from flask import Flask, request
  import hmac
  import hashlib

  app = Flask(__name__)

  @app.route('/webhooks/monei', methods=['POST'])
  def monei_webhook():
      event = request.json
      signature = request.headers.get('x-monei-signature')
      
      # Verify signature
      if not verify_signature(event, signature):
          return 'Invalid signature', 401
      
      # Handle deposit events
      if event['type'] == 'deposit.completed':
          print(f"Deposit confirmed!")
          print(f"Amount: ₦{event['data']['amount']}")
          print(f"Reference: {event['data']['reference']}")
          
          # Update application
          # - Notify user
          # - Update database
      
      return 'OK', 200

  if __name__ == '__main__':
      app.run(port=3000)
  ```
</CodeGroup>

**Webhook Event:**

```json theme={null}
{
  "type": "deposit.completed",
  "timestamp": "2024-02-14T10:30:00Z",
  "data": {
    "id": "dep_abc123",
    "amount": 50000,
    "currency": "NGN",
    "reference": "TRANSFER-123456",
    "accountNumber": "9907581802",
    "senderBank": "GTBank",
    "senderAccountNumber": "0123456789",
    "senderAccountName": "SENDER NAME",
    "newBalance": 150000,
    "completedAt": "2024-02-14T10:30:00Z"
  }
}
```

[Learn more about webhooks →](/security/webhooks)

***

## Deposit Limits

### KYC Tier Limits

| KYC Tier   | Single Deposit | Daily Limit | Monthly Limit |
| ---------- | -------------- | ----------- | ------------- |
| **Tier 1** | ₦200,000       | ₦200,000    | ₦2,000,000    |
| **Tier 2** | ₦500,000       | ₦500,000    | ₦5,000,000    |
| **Tier 3** | ₦2,000,000     | ₦2,000,000  | ₦20,000,000   |

<Info>
  Upgrade your KYC tier to increase deposit limits. [Learn more →](/account-management/user-account#kyc-verification)
</Info>

### Check Current Usage

<CodeGroup>
  ```javascript Node.js theme={null}
  // Get deposit limits and usage
  const limits = await monei.user.getDepositLimit();

  console.log('KYC Tier:', limits.tier);
  console.log('Daily Limit:', limits.dailyLimit);
  console.log('Deposited Today:', limits.dailyUsed);
  console.log('Remaining Today:', limits.dailyRemaining);
  console.log('Monthly Limit:', limits.monthlyLimit);
  console.log('Deposited This Month:', limits.monthlyUsed);

  // Check if amount is within limits
  const amount = 100000;
  if (amount > limits.dailyRemaining) {
    console.log('Amount exceeds daily remaining limit');
    console.log('Maximum you can deposit today:', limits.dailyRemaining);
  }
  ```

  ```python Python theme={null}
  # Get deposit limits
  limits = monei.user.get_deposit_limit()

  print(f'Daily Limit: ₦{limits.daily_limit}')
  print(f'Used Today: ₦{limits.daily_used}')
  print(f'Remaining: ₦{limits.daily_remaining}')

  # Check amount
  amount = 100000
  if amount > limits.daily_remaining:
      print(f'Exceeds limit. Max: ₦{limits.daily_remaining}')
  ```
</CodeGroup>

***

## Processing Time

### Expected Processing Times

| Scenario                           | Processing Time     |
| ---------------------------------- | ------------------- |
| **Standard Transfer**              | Instant - 2 minutes |
| **Peak Hours (8am-10am, 4pm-6pm)** | instant - 5 minutes |
| **Weekend/Holiday**                | instant - 5 minutes |
| **Large Amounts (>₦500K)**         | instant - 5 minutes |
| **First-time Sender**              | instant - 5 minutes |

<Note>
  Most deposits are confirmed instantly. Delays beyond 30 minutes are rare.
</Note>

### What Affects Processing Time

* Bank processing speed
* Network congestion
* Transaction amount
* First-time deposits (additional verification)
* Weekend/holiday processing
* Compliance checks (large amounts)

***

## Troubleshooting

<AccordionGroup>
  <Accordion icon="clock" title="Deposit Not Showing">
    **Problem:** Transferred funds but balance not updated

    **Steps to resolve:**

    1. **Wait 5-10 minutes**
       * Most deposits confirm within this time

    2. **Check deposit history**
       ```javascript theme={null}
       const deposits = await monei.wallet.getDeposits({
         startDate: 'today',
         status: 'all'
       });
       ```

    3. **Verify transfer details**
       * Correct account number
       * Correct bank name
       * Amount sent

    4. **Contact support**
       * Provide transaction reference
       * Bank name and timestamp
       * Screenshot of debit alert
  </Accordion>

  <Accordion icon="circle-xmark" title="Deposit Failed">
    **Problem:** Deposit shows as failed

    **Common causes:**

    * Insufficient funds in source account
    * Transfer limit exceeded
    * Invalid account number
    * Bank system error

    **Solutions:**

    * Check your bank account for reversal
    * Funds typically reversed within 24 hours
    * Retry with correct details
    * Contact your bank if no reversal
  </Accordion>

  <Accordion icon="exclamation-triangle" title="Wrong Amount Credited">
    **Problem:** Different amount credited than sent

    **Possible reasons:**

    * Multiple transfers combined
    * Bank charges deducted
    * Currency conversion applied

    **Action:**

    * Check deposit history for breakdown
    * Contact support with transaction reference
    * Provide bank statement
  </Accordion>

  <Accordion icon="ban" title="Deposit Rejected">
    **Problem:** Deposit rejected due to compliance

    **Reasons:**

    * Source account name mismatch
    * Suspicious transaction pattern
    * KYC verification required
    * Sanctioned entity

    **Resolution:**

    * Complete KYC verification
    * Contact support for clarification
    * Provide source of funds documentation
    * Funds will be reversed if rejected
  </Accordion>
</AccordionGroup>

***

## Best Practices

<CardGroup cols={2}>
  <Card title="Save Account Details" icon="bookmark">
    Add Monei virtual account as a saved beneficiary in your bank app
  </Card>

  <Card title="Use Reference" icon="tag">
    Add a unique reference to track deposits easily
  </Card>

  <Card title="Monitor Limits" icon="chart-line">
    Track daily and monthly usage to stay within KYC tier limits
  </Card>

  <Card title="Enable Webhooks" icon="webhook">
    Set up webhooks for instant deposit notifications
  </Card>
</CardGroup>

***

## Deposit History

### View All Deposits

<CodeGroup>
  ```javascript Node.js theme={null}
  // Get deposit history
  const deposits = await monei.transactions.getDeposits({
    page: 1,
    limit: 20,
    startDate: '2024-01-01',
    endDate: '2024-02-14',
    status: 'completed' // 'pending', 'failed', 'all'
  });

  console.log('Total Deposits:', deposits.total);
  console.log('Page:', deposits.page);

  deposits.data.forEach(deposit => {
    console.log('\nDeposit:');
    console.log('  Amount:', deposit.amount);
    console.log('  From:', deposit.senderBank);
    console.log('  Reference:', deposit.reference);
    console.log('  Status:', deposit.status);
    console.log('  Date:', deposit.completedAt);
  });
  ```

  ```python Python theme={null}
  # Get deposit history
  deposits = monei.transactions.get_deposits(
      page=1,
      limit=20,
      start_date='2024-01-01',
      end_date='2024-02-14',
      status='completed'
  )

  print(f'Total: {deposits.total}')

  for deposit in deposits.data:
      print(f'\nAmount: ₦{deposit.amount}')
      print(f'From: {deposit.sender_bank}')
      print(f'Reference: {deposit.reference}')
      print(f'Date: {deposit.completed_at}')
  ```

  ```bash cURL theme={null}
  curl "https://api.monei.cc/api/v1/wallet/deposits?page=1&limit=20&status=completed" \
    -H "x-api-key: YOUR_API_KEY"
  ```
</CodeGroup>

### Export Deposit Statement

<CodeGroup>
  ```javascript Node.js theme={null}
  // Export deposits as CSV/PDF
  const statement = await monei.transactions.exportDeposits({
    startDate: '2024-01-01',
    endDate: '2024-02-14',
    format: 'pdf' // or 'csv'
  });

  console.log('Download URL:', statement.downloadUrl);
  console.log('Expires:', statement.expiresAt);
  ```

  ```python Python theme={null}
  # Export deposits
  statement = monei.transactions.export_deposits(
      start_date='2024-01-01',
      end_date='2024-02-14',
      format='pdf'
  )

  print(f'Download: {statement.download_url}')
  ```
</CodeGroup>

***

## Fees

<Tabs>
  <Tab title="Deposit Fees">
    **Virtual Account Deposits:**

    * No fees charged by Monei
    * Your bank may charge transfer fees
    * Check with your bank for applicable charges
  </Tab>

  <Tab title="Bank Charges">
    **Common Bank Fees:**

    * Same bank transfer: Usually free
    * Other bank transfer: ₦10 - ₦50
    * USSD transfer: ₦6.98 per transaction

    **Note:** These are bank charges, not Monei fees
  </Tab>
</Tabs>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Payouts" icon="arrow-up" href="/naira-wallet/payouts">
    Learn how to send Naira to bank accounts
  </Card>

  <Card title="Payment Methods" icon="credit-card" href="/naira-wallet/payment-methods">
    Explore all payment methods and options
  </Card>

  <Card title="Transactions" icon="list" href="/transactions/management">
    View and manage all your transactions
  </Card>

  <Card title="Security" icon="shield" href="/security/webhooks">
    Set up webhooks for deposit notifications
  </Card>
</CardGroup>
