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

# Fund member wallet

> Initiate a payment to fund a member's wallet

Initiates a payment to fund a member's wallet (the member is identified by `id` in the path). The member's wallet is credited with `amount`, while the payer is charged `totalCharge` (`amount` plus the processor fee).

This is the member-scoped twin of the [organisation funding](https://getequity.io/docs/api-reference/endpoint/Wallet/fund-wallet.md). The wallet credited is the member's, not your organisation's. The member must already belong to your organisation — an accepted invitation — or the request is rejected with `403`.

There is no token purchase here. To fund and invest in one flow, use [Fund and Invest](https://getequity.io/docs/api-reference/endpoint/Members/fund-invest.md) instead.

When `paymentMethod` is `bank_transfer` and `currency` is `NGN`, the response returns a virtual account to transfer to. For every other payment method, the response returns a Flutterwave payment link to complete the payment.

**id** `string` *required*

The member's user ID.

```json theme={null}
{
    "amount": 1000000,
    "currency": "NGN",
    "redirectUrl": "https://google.com",
    "paymentMethod": "bank_transfer"
}
```

**amount** `integer` *required*

The amount to credit to the member's wallet. Must be ≥ 1.

**currency** `string` *required*

The funding currency. One of `NGN`, `USD`, `KES`, `GHS`, `ZAR`, `GBP`, `EUR`.

**redirectUrl** `string`

URL to redirect to after payment. Required unless `paymentMethod` is `bank_transfer`.

**paymentMethod** `string` *required*

The payment method to use. One of `card`, `bank_transfer`, `ussd`, `mobilemoney`. Defaults to `card`.

```json theme={null}
{
    "status": "success",
    "message": "Payment initiated successfully. Complete payment to fund this member's wallet.",
    "data": {
        "paymentMethod": "bank_transfer",
        "reference": "GETXN_FI_WX6FLTAVVNVGWG_PMCKDU_1",
        "email": "wilpat45677@yopmail.com",
        "virtualAccount": {
            "bankName": "Mock Bank",
            "accountNumber": "0067100155",
            "amount": "1002000.00",
            "note": "Mock note",
            "expiresAt": "2026-07-04 12:32:36 PM"
        },
        "amountToPay": 1002000,
        "amount": 1000000,
        "currency": "NGN",
        "fees": {
            "flutterwave": 2000,
            "total": 2000
        },
        "totalCharge": 1002000
    }
}
```

```json Payment link — card, ussd, mobilemoney theme={null}
{
    "status": "success",
    "message": "Payment initiated successfully. Complete payment to fund this member's wallet.",
    "data": {
        "paymentLink": "https://checkout.flutterwave.com/v3/hosted/pay/1a2b3c4d5e6f",
        "reference": "GETXN_FI_WX6FLTAVVNVGWG",
        "amount": 1000000,
        "currency": "NGN",
        "fees": {
            "flutterwave": 14000,
            "total": 14000
        },
        "totalCharge": 1014000
    }
}
```

```json Not your member — 403 theme={null}
{
    "status": "failed",
    "message": "This member does not belong to your organisation."
}
```

## After the payment

The payer comes back to your `redirectUrl` with the outcome appended as query parameters:

```
?status=successful&tx_ref=GETXN_FI_WX6FLTAVVNVGWG&transaction_id=10459445
?status=cancelled&tx_ref=GETXN_FI_KGBW0Y3O2W2GNN
```

That `status` travels through the browser, so treat it as a hint. Take the `tx_ref` and call
[`GET api/transactions/{reference}`](https://getequity.io/docs/api-reference/endpoint/Transactions/get-transaction) for the
real outcome, and to know whether the member's wallet has been credited yet.

The [`wallet.funded`](https://getequity.io/docs/api-reference/endpoint/Webhook/wallet-funded) webhook fires to your organisation once the credit is processed, with the member as the `user`.

## Errors

| HTTP | Message (example) | When |
| - | - | - |
| 400 | `child "Amount" fails because ["Amount" must be larger than or equal to 1]` | `amount` below 1, or not a number. |
| 400 | `child "Currency" fails because ["Currency" must be one of [NGN, USD, KES, GHS, ZAR, GBP, EUR]]` | Unsupported/invalid currency. |
| 400 | `child "Redirect URL" fails because ["Redirect URL" is required]` | `redirectUrl` omitted for a non-`bank_transfer` method. |
| 403 | `This member does not belong to your organisation.` | `id` is a real user, but not one of your members. |
| 404 | `This member does not exist.` | Invalid `id`. |
| 502 | `Failed to create virtual account` | Flutterwave rejected the virtual-account or payment-link call. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.