> For the complete documentation index, see [llms.txt](https://moneywave.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://moneywave.gitbook.io/doc/pos/onboarding.md).

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