> For the complete documentation index, see [llms.txt](https://momojs.rewriteapi.cm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://momojs.rewriteapi.cm/reference/api-reference/client/collection.md).

# Collection

Represent Collection Client used for collection product

| Method                                                                                         |
| ---------------------------------------------------------------------------------------------- |
| *async* [`createAccessToken()`](#awaitcreate_access_token-authorization)                       |
| *async* [`getAccountBalance()`](#await-get_account_balance-authorization-target)               |
| *async* [`getAccountBalanceIn()`](#await-get_account_balance_in-currency-authorization-target) |
| *async* [`getBasicUserInfo()`](#awaitget_basic_user_info-msisdn-authorization-target)          |
| *async* [`askUserInfo()`](#awaitask_user_info-authorization-target)                            |
| *async* [`requestToPay()`](#await-request_to_pay-authorization-uuid-target-body-callback)      |
| *async* [`getWithdrawStatus()`](#await-get_withdraw_status-authorization-uuid-target)          |
| *async* [`withdraw()`](#await-withdraw-authorization-uuid-target-body-callback)                |
| *async* [`isActive()`](#await-isactive-account-account_type-authorization-target)              |

### *`await`*` ``createAccessToken( authorization )`

&#x20;  Method to create access token for collection user

#### Parameters :

* **authorization** (string) - a valid basic authentification token

#### Return

\[boolean, data]

{% tabs %}
{% tab title="data" %}

```json
{
  "access_token": "string",
  "token_type": "string",
  "expires_in": 0
}
```

{% endtab %}
{% endtabs %}

#### Return Type :

array

### *`await`*` ``getAccountBalance( authorization, target )`

Method to get balance for collection user

#### Parameters :

* **authorization** (string) - A valid bearer authentification token
* **target** (string) - The target environment

#### Return :

\[boolean, data]

{% tabs %}
{% tab title="data" %}

```json
{
  "availableBalance": "string",
  "currency": "string"
}
```

{% endtab %}
{% endtabs %}

#### Return Type :

array

### *`await`*` ``getAccountBalanceIn( currency, authorization, target )`

Method to get balance in specific currency for collection user

#### Parameters :

* **currency** (string) - A valid ISO4217 Currency
* **authorization** (string) - A valid bearer authentification token
* **target** (string) - The target environment

#### Return :

\[boolean, data]

{% tabs %}
{% tab title="data" %}

```json
{
  "availableBalance": "string",
  "currency": "string"
}
```

{% endtab %}
{% endtabs %}

#### Return Type :

array

### *`await`*` ``getBasicUserInfo( msisdn, authorization, target )`

Method to get basic user info without consent for collection user

#### Parameters :

* **msisdn** (string) - The number of the user
* **authorization** (string) - A valid bearer authentification token
* **target** (string) - The target environment

#### Return :

\[boolean, data]

{% tabs %}
{% tab title="data" %}

```json
{
  "given_name": "string",
  "family_name": "string",
  "birthdate": "string",
  "locale": "string",
  "gender": "string",
  "status": "string"
}
```

{% endtab %}
{% endtabs %}

#### Return Type:

array

### *`await`*` ``askUserInfo( authorization, target )`

Method to get user info with consent for collection user

#### Parameters :

* **authorization** (string) - A valld bearer authentification token
* **target** (string) - The target environment

#### Return :

\[boolean, data]

{% tabs %}
{% tab title="data" %}

```json
{
  "sub": "string",
  "name": "string",
  "given_name": "string",
  "family_name": "string",
  "middle_name": "string",
  "email": "string",
  "email_verified": true,
  "gender": "string",
  "locale": "string",
  "phone_number": "string",
  "phone_number_verified": true,
  "address": "string",
  "updated_at": 0,
  "status": "string",
  "birthdate": "string",
  "credit_score": "string",
  "active": true,
  "country_of_birth": "string",
  "region_of_birth": "string",
  "city_of_birth": "string",
  "occupation": "string",
  "employer_name": "string",
  "identification_type": "string",
  "identification_value": "string"
}
```

{% endtab %}
{% endtabs %}

#### Return Type :

array

### *`await`*` ``requestToPay( authorization, uuid, target, body, callback )`

Method to request a payment for collection user

#### Parameters :

* **authorization** (string) - A valid bearer authentification token
* **uuid** (string) - A valid UUID version 4
* **target** (string) - The target environment
* **body** (Object) - A dictionnary with full detail of the payment \[*see detail below*]

{% tabs %}
{% tab title="body" %}
According to [MTN MOMO API](https://momodeveloper.mtn.com/docs/services/collection/operations/RequesttoPay?#requesttab1)

```json
{
  "amount": "string",
  "currency": "string",
  "externalId": "string",
  "payer": {
    "partyIdType": "MSISDN",
    "partyId": "string"
  },
  "payerMessage": "string",
  "payeeNote": "string"
}
```

{% endtab %}

{% tab title="details" %}

```json
{
  "type": "object",
  "properties": {
    "amount": {
      "type": "string",
      "description": "Amount that will be debited from the payer account."
    },
    "currency": {
      "type": "string",
      "description": "ISO4217 Currency"
    },
    "externalId": {
      "type": "string",
      "description": "External id is used as a reference to the transaction. External id is used for reconciliation. The external id will be included in transaction history report. <br>External id is not required to be unique."
    },
    "payer": {
      "type": "object",
      "properties": {
        "partyIdType": {
          "enum": [
            "MSISDN",
            "EMAIL",
            "PARTY_CODE"
          ],
          "type": "string"
        },
        "partyId": {
          "type": "string"
        }
      },
      "description": "Party identifies a account holder in the wallet platform. Party consists of two parameters, type and partyId. Each type have its own validation of the partyId<br> MSISDN - Mobile Number validated according to ITU-T E.164. Validated with IsMSISDN<br> EMAIL - Validated to be a valid e-mail format. Validated with IsEmail<br> PARTY_CODE - UUID of the party. Validated with IsUuid"
    },
    "payerMessage": {
      "type": "string",
      "description": "Message that will be written in the payer transaction history message field."
    },
    "payeeNote": {
      "type": "string",
      "description": "Message that will be written in the payee transaction history note field."
    }
  }
}
```

{% endtab %}
{% endtabs %}

* **callback** ( \[Optional] string ) - The website receiving call back

#### Return :

\[boolean, data]

#### Retrun Type :

array

### *`await`*` ``getWithdrawStatus( authorization, uuid, target )`

Method to get a withdrawal status for collection user

#### Parameters :

* **authorization** (string) - A valid bearer authentification token
* **uuid** (string) - A valid UUID version 4
* **target** (string) - The target environment

#### Return :

\[boolean, data]

{% tabs %}
{% tab title="data" %}
According to [MTN MOMO API](https://momodeveloper.mtn.com/docs/services/collection/operations/RequestToWithdrawTransactionStatus?#response200tab3)

```json
{
  "amount": "string",
  "currency": "string",
  "financialTransactionId": "string",
  "externalId": "string",
  "payer": {
    "partyIdType": "MSISDN",
    "partyId": "string"
  },
  "payerMessage": "string",
  "payeeNote": "string",
  "status": "PENDING",
  "reason": {
    "code": "PAYEE_NOT_FOUND",
    "message": "string"
  }
}
```

{% endtab %}
{% endtabs %}

#### Return Type:

array

### *`await`*` ``withdraw( authorization, uuid, target, body, callback )`

Method to withdraw money for collection user

{% hint style="warning" %}
The library is taking in charge only Withdraw V2
{% endhint %}

#### Parameters :

* authorization (string) - A valid bearer authentification token
* uuid (string) - A valid UUID version 4
* target (string) - The target environment
* body (Object) - A dictionnary with full detail of the payment \[[*see detail below*](/reference/api-reference/body-details.md)]
* callback ( \[Optional] string ) - The website receiving call back

#### Return :

\[boolean, data]

#### Return Type :

array

### *`await`*` ``isActive( account, accountType, authorization, target )`

Method to check if an account is active for a collection user

#### Parameters :

* **account** (string) - The account target
* **account\_type** (string) - Specifies the type of the party ID. Allowed values \[msisdn, email, party\_code]. default set to msisdn
* **authorization** (string) - A valid bearer authentification token
* **target** (string) - The target environment

#### Return :

\[boolean, data]

#### Return Type :

array
