# Onboarding

To onboard as a POS service owner, you would need to signup on via the mobile App. \
You can find the Flutterwave POS app at this [link](https://play.google.com/store/apps/details?id=com.flutterwave.pos).

Once you have completed signup, your credentials will enable you access the APIs below.

1. Login
2. Get Account Profile and Balance
3. Initiate Transfer
4. Initiate Bills Payments
5. Receive Notification on balance activity

### Login &#x20;

The Login API accepts valid credentials and returns an access token. This token is passed as authorization in the request header for subsequent requests. Tokens last for 1 hour before expiry.

## Login

<mark style="color:green;">`POST`</mark> `https://staging.moneywaveapp.com/app/v1/auth`

Returns authorization token

#### Request Body

| Name                                         | Type   | Description         |
| -------------------------------------------- | ------ | ------------------- |
| identifier<mark style="color:red;">\*</mark> | String | Email or username   |
| password<mark style="color:red;">\*</mark>   | String | Password credential |
| device\_id<mark style="color:red;">\*</mark> | String | Device ID           |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "status": "success",
    "data": {
        "name": "test user",
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTE2OTgsImlhdCI6MTY2OTA1Mzc0MCwiZXhwIjoxNjY5MDYwOTQwfQ.ZrK65oDZ4vAIpdQv-3--yxJ0_wH-gFk_oc_5grgYvm0",
    }
}
```

{% endtab %}
{% endtabs %}

### Account Profile & Balance

The Profile API returns key information about your account and also the current balance.

## Fetch Profile

<mark style="color:green;">`POST`</mark> `https://staging.moneywaveapp.com/app/v1/me`

Returns Profile and Balance

#### Headers

| Name                                            | Type   | Description         |
| ----------------------------------------------- | ------ | ------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Authorization token |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "status": "success",
    "data": {
        "user": {
            "id": 11698,
            "name": "test user",
            "email": "test user@email.com",
            "phonenumber": "08011122233"
        },
        "transactions": [],
        "wallet": {
            "Naira Wallet": {
                "id": 22,
                "name": "Naira Wallet",
                "balance": 4880,
                "enabled": true,
                "currency": "NGN",
                "createdAt": "2020-06-11T18:11:01.000Z",
                "updatedAt": "2022-11-15T12:36:27.000Z",
                "uref": "0"
            }
        },
        "businessName": "BlauPOS",
        "posId": "160816",
        "merchantCode": "ML11698",
        "merchantId": 13038,
        "flutterAccount": "7824013038",
        "verifiedcac": "verified",
        "verifiedaddress": "verified",
        "verifiedofficerent": "verified",
        "verifiedid": "verified",
        "verifiedemail": null,
        "devicepin": true,
        "hassecret": false,
        "posenabled": false,
        "pricing": {
            "funding": {
                "card": {
                    "p": 1.4,
                    "c": 2500
                },
                "banktransfer": {
                    "p": 0.7,
                    "c": 1500
                },
                "bankdebit": {
                    "p": 0.7,
                    "c": 1500
                },
                "ussd": {
                    "p": 0.7,
                    "c": 1500
                },
                "pos": {
                    "p": 0.5,
                    "c": 1500
                }
            },
            "spend": {
                "payout": {
                    "f": 10
                }
            }
        },
        "flutterBank": "WEMA BANK"
    }
}
```

{% endtab %}
{% endtabs %}

### Transfers

Request transfer to local banks.

## Initiate Transfer

<mark style="color:green;">`POST`</mark> `https://staging.moneywaveapp.com/app/v1/payout`

#### Headers

| Name                                            | Type   | Description         |
| ----------------------------------------------- | ------ | ------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Authorization token |

#### Request Body

| Name                                                          | Type   | Description                         |
| ------------------------------------------------------------- | ------ | ----------------------------------- |
| account\_number<mark style="color:red;">\*</mark>             | String | Account number                      |
| bank\_code<mark style="color:red;">\*</mark>                  | String | Bank Code                           |
| amount<mark style="color:red;">\*</mark>                      | String | Amount                              |
| currency<mark style="color:red;">\*</mark>                    | String | Currency                            |
| narration<mark style="color:red;">\*</mark>                   | String | Narration                           |
| custom\_sender\_phonenumber<mark style="color:red;">\*</mark> | String | Sender Phone number                 |
| ref<mark style="color:red;">\*</mark>                         | String | Transaction Reference               |
| pin<mark style="color:red;">\*</mark>                         | String | Device PIN                          |
| wallet\_uref                                                  | String | Wallet  user reference - Sub wallet |
| lock                                                          | String | Sub wallet lock code                |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Resolve account number

<mark style="color:blue;">`GET`</mark> `https://staging.moneywaveapp.com/app/v1/account/resolve`

Returns Beneficiary Name

#### Headers

| Name                                            | Type   | Description         |
| ----------------------------------------------- | ------ | ------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Authorization token |

#### Request Body

| Name            | Type   | Description    |
| --------------- | ------ | -------------- |
| account\_number | String | Account Number |
| bank\_code      | String | Bank code      |
| currency        | String | Currency       |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "status": "success",
    "data": {
        "account_name": "JOHN GREENE"
    }
}
```

{% endtab %}
{% endtabs %}

### Bill Payments

Request Value added payments such as Airtime and Utility bill payments.

## Fetch available bill  payments / VAS

<mark style="color:blue;">`GET`</mark> `https://staging.moneywaveapp.com/app/v1/bill/category`

Returns an array of available bill payments

#### Headers

| Name          | Type   | Description   |
| ------------- | ------ | ------------- |
| Authorization | String | Authorization |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "status": "success",
    "data": {
        "default": [
            {
                "id": 1,
                "BillerCode": "BIL099",
                "Name": "MTN VTU",
                "DefaultCommission": 0.025,
                "Country": "NG",
                "IsAirtime": 1,
                "BillerName": "AIRTIME",
                "ItemCode": "AT099",
                "ShortName": "MTN VTU",
                "Fee": 0,
                "CommissionOnFee": 0,
                "RegExpression": "^[+]{1}[0-9]+$",
                "LabelName": "Mobile Number",
                "Amount": 0,
                "IsResolvable": 1,
                "GroupName": "MTN",
                "CategoryName": "Airtime",
                "IsData": null,
                "confluence_id": 1,
                "createdAt": "2020-03-04T10:27:09.000Z",
                "updatedAt": "2022-07-25T10:39:52.000Z",
                "deletedAt": null
            },
            {
                "id": 2,
                "BillerCode": "BIL099",
                "Name": "GLO Nigeria",
                "DefaultCommission": 0.03,
                "Country": "NG",
                "IsAirtime": 1,
                "BillerName": "AIRTIME",
                "ItemCode": "AT099",
                "ShortName": "GLO",
                "Fee": 0,
                "CommissionOnFee": 0,
                "RegExpression": "^[+]{1}[0-9]+$",
                "LabelName": "Mobile Number",
                "Amount": 0,
                "IsResolvable": 1,
                "GroupName": "GLO",
                "CategoryName": "Airtime",
                "IsData": null,
                "confluence_id": 2,
                "createdAt": "2020-03-04T10:27:09.000Z",
                "updatedAt": "2022-07-25T10:39:52.000Z",
                "deletedAt": null
            },
            {
                "id": 3,
                "BillerCode": "BIL099",
                "Name": "9Mobile",
                "DefaultCommission": 0.03,
                "Country": "NG",
                "IsAirtime": 1,
                "BillerName": "AIRTIME",
                "ItemCode": "AT099",
                "ShortName": "9mobile",
                "Fee": 0,
                "CommissionOnFee": 0,
                "RegExpression": "^[+]{1}[0-9]+$",
                "LabelName": "Mobile Number",
                "Amount": 0,
                "IsResolvable": 1,
                "GroupName": "9mobile",
                "CategoryName": "Airtime",
                "IsData": null,
                "confluence_id": 3,
                "createdAt": "2020-03-04T10:27:09.000Z",
                "updatedAt": "2022-07-25T10:39:52.000Z",
                "deletedAt": null
            },
            ...
        }
    }
}
```

{% endtab %}
{% endtabs %}

## Initiate Bill payment

<mark style="color:green;">`POST`</mark> `https://staging.moneywaveapp.com/app/v1/bill/order`

#### Headers

| Name          | Type   | Description        |
| ------------- | ------ | ------------------ |
| Authorization | String | Authorization code |

#### Request Body

| Name        | Type   | Description                         |
| ----------- | ------ | ----------------------------------- |
| country     | String | Bill payment  Country               |
| customerId  | String | Customer ID                         |
| billerName  | String | Biller Name - from bills.billername |
| shortName   | String | Short Name - from bills.name        |
| amount      | Number | Transaction amount                  |
| ref         | String | Transaction Reference               |
| balPassword | String | Balance password / Device pin       |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

### Notifications

Receive notification for  credit and debit activities on your balance.

A callback url is required for pushing notifications, please  see [here](/doc/notifications/funding.md) for additional information

### Status Checks

Verify transaction status and fetch full transaction information using the status check API.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://moneywave.gitbook.io/doc/pos/onboarding.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
