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

# Quick Start

{% hint style="info" %}
This page gives a brief introduction to the library. It assumes you have the library installed, if you don’t check the [Installing](/introduction.md) portion.
{% endhint %}

## Get your API keys, Credential

For sandbox environement you just need to [Signup](https://momodeveloper.mtn.com/signup) if it's your first time to use MTN MOMO API or [Signin](https://momodeveloper.mtn.com/signin), then subscribe for a production to get your Credential

For production environement, API USER & API KEY & CREDENTIAL are provided by MTN. you need to [GO LIVE](https://momodeveloper.mtn.com/go-live), submit your document to get all live credential

## Quick Example

```python
import mobilemoney
import asyncio

#NOTICE : the library is working in both side (Production and Sandbox),
#for Production environement don't use the is_sandbox() method and
#make sure to replace credential correctly

async def main():
    subsciption_key = 'COLLECTION_OR_DISBURSEMENT_CREDENTIAL_MAKE_SURE_TO_REPLACE_IT_CORRECTLY'

    user = mobilemoney.Client()

    #switchh to sandbox env
    user.is_sandbox()

    #Creating user and getting Key in sandbox env using Collection credential
    uuid = user.get_reference_id()
    print(uuid)


    api_user = await user.create_api_user(uuid, subsciption_key)
    print('-------- creating api user----------')
    print(api_user)

    resp, api_user_details = await user.get_api_user(uuid, subsciption_key)
    print('-----------getting api user------------')
    print(api_user_details)

    resp, api_key = await user.create_api_key(uuid, subsciption_key)
    print('---------api key-----------')
    print(type(api_key))
    print(api_key)


    basic_auth = user.basic_token(uuid, api_key["apiKey"])
    print('------------Basic auth---------')
    print(basic_auth)

    #Initialising Collection product
    collect = user.collection(subsciption_key)

    #creating access token
    resp, access_token = await collect.create_access_token(basic_auth)
    print('---------creating access token-----------')
    print(access_token)

    #convert it to bearer token
    bearer_token = user.bearer_token(access_token['access_token'])

    #request to pay
    body = {
        "amount": "5",
        "currency": "EUR",
        "externalId": "45464546454",
        "payer": {
            "partyIdType": "MSISDN",
            "partyId": "87937389"
        },
        "payerMessage": "BUY THING",
        "payeeNote": "THANKS"
        }

    resp, req_to_pay = await collect.request_to_pay(bearer_token, user.get_reference_id(), api_user_details['targetEnvironment'], body)
    print('-----------------Request to pay-----------------')
    print(resp)
    print(req_to_pay)
    if resp:
        print('Successfull')
    else:
        print('Not worked')

    #withdraw
    resp, with_req = await collect.withdraw(bearer_token, user.get_reference_id(), api_user_details['targetEnvironment'], body)
    print('--------------req to withdraw------------------------')
    print(resp)
    print(with_req)



asyncio.run(main())
```

### Run the code

Save the file with a name like `momo_example.py` to avoid conflict with the Library, don't save it with `mobilemoney.py`

```
#windows
$ py -3 momo_example.py
#linux
python3 momo_example.py
```
