Skip to content

GoosenA/ipb-python-wrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipb-python-wrapper

Python wrapper for Investec Programmable Banking

Investec Open API

This package is a wrapper for the Investec OpenAPI. More information on the API is available here.

Prerequisites

  • Python 3.7 or later

Installation

Requires python 3.7 or above. Available via pypi package manager

pip install investec-openapi-wrapper

Usage

Authorization

The Account Information and Programmable Card API endpoints are protected by the OAuth 2.0 Authorization Framework. More information is available here

from personal_banking_client import PersonalBankingClient
client = PersonalBankingClient(credentials_path=file_path)

where the credentials file looks as follows:

{
    "client_id": "test", 
    "secret": "test"
}

Personal Banking Client

The Account Information API allows Investec SA Private Banking clients to access their account and transactional information (read-only) via an API. More information is available here

get_accounts

Lists all the users accounts.

accounts = client.get_accounts()

Example Response

{"accounts": 
    [{
        "accountId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
        "accountNumber": "xxxxxxxxxxx", 
        "accountName": "Mrs J Smith", 
        "referenceName": "Investec (Main)", 
        "productName": "Private Bank Account", 
        "kycCompliant": True, 
        "profileId": "xxxxxxxxxxxxxx"
    }]
}

get_account_balance

Get the current balance for the specified account

balance = client.get_account_balance('account_id')

Example Response

{
    "accountId": "xxxxxxxxxxxxxxxxxxxxxxxxx", 
    "currentBalance": 1000.00, 
    "availableBalance": 11000.00, 
    "currency": "ZAR"
}

get_account_transactions

Lists all transactions for a specified account. Optional additional fields allow the user to specify a date range to filter transactions for.

transactions = client.get_account_transactions('account_id')

start_date = datetime.today()-timedelta(days=1)
end_date = datetime.today()
transactions = client.get_account_transactions('account_id', from_date = start_date)
transactions = client.get_account_transactions('account_id', to_date = end_date)
transactions = client.get_account_transactions('account_id', from_date = start_date, to_date=end_date)

Example Response

{"transactions": 
    [
        {
            "accountId": "xxxxxxxxxxxxxxxxxxxxxxxxxx", 
            "type": "CREDIT", 
            "transactionType": None, 
            "status": "POSTED", 
            "description": "Interest Value Date 01Jan23", 
            "cardNumber": "", 
            "postedOrder": 0, 
            "postingDate": "2023-01-03", 
            "valueDate": None, 
            "actionDate": "2023-01-01", 
            "transactionDate": "2023-01-01", 
            "amount": 100.00, 
            "runningBalance": 11000.00
        }  
    ]
}

transfer_multiple

Transfer funds between two internal accounts. The account IDs can be retrieved using the get_accounts function.

transfer_details = [{
        "beneficiaryAccountId": "destination account ID",
        "amount": "1.01", # in Rand
        "myReference": "Reference for source account",
        "theirReference": "Reference for destination account"
}]
response = client.transfer_multiple('account_id', transfer_details)

pay_multiple

Pay multiple benificiaries. Benificiary details can be retrieved using the get_beneficiaries function.

payments_details = [{
        "beneficiaryId": "Beneficiary ID",
        "amount": "1.01", # in Rand
        "myReference": "Reference for source account",
        "theirReference": "Reference for beneficiary"
}]
response = client.pay_multiple()

get_beneficiaries

Get a list of beneficiaries.

beneficiaries = client.get_beneficiaries()

Example result:

[{
    "beneficiaryId": "xxxxxxxxxxxxxxxxxxx", 
    "accountNumber": "xxxxxxxxxx", 
    "code": "xxxxxx", 
    "bank": "Some bank", 
    "beneficiaryName": "Some beneficiary", 
    "lastPaymentAmount": "500.00", 
    "lastPaymentDate": "21/03/2023", 
    "cellNo": 00000000000, 
    "emailAddress": "[email protected]", 
    "name": "Some beneficiary", 
    "referenceAccountNumber": "Their reference", 
    "referenceName": "My reference", 
    "categoryId": "xxxxxxxxxxxxxx", 
    "profileId": "xxxxxxxxxxxxxx"
}]

get_beneficiary_categories

Get a list of configured beneficiary categories.

beneficiary_categories = client.get_beneficiary_categories()

Example Result

[{
    "id": "xxxxxxxxxxxxxx", 
    "isDefault": "true", 
    "name": "Not Categorised"    
}]

Build pypi package

python -m build
python -m twine upload dist/*

About

Python wrapper for Investec Programmable Banking API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages