Overview
- This functionality is mainly needed for exchange operations. The transaction may be initiated in one currency, on an account which is opened in another currency. Evseery account will be opened with a currency (which will be the base-currency for that account).
For any cross-currency operations (between different currencies) Mifos will first make an exchange operation automatically. Example, if a deposit (or withdrawal) is made in USD on a CDF account, Mifos will convert the USD amount to CDF as per the currency exchange rate applicable for the transaction date.
Then the corresponding CDF amount will be posted to the deposit account.
Mifos will need a provision to maintain daily or periodic exchange rates between various currencies. In Mifos, if no exchange rate is found for the current date, system will user the latest rate available that is available on or before the transaction date.
- Loans disbursements will always be done in the account currency (no change to what Mifos supports today), however, repayments can be done in different currency but in that case exchange operation is needed.
- For financial accounting process, a special Exchange Position account and Equivalent Exchange Position account will be maintained and corresponding amounts in source and target currency maintained in these accounts.
In the initial scope – Only deposits, withdrawals and repayments will be allowed in multiple currencies. Fees cannot be applied in multiple currencies. Also, loan disbursals will not be supported in any currencies other than the account currency.
Background and strategic fit
There are countries where the members may prefer to do transactions in currencies other than the base currency or the currency in which the account is opened.
Today, the currency conversions will need to be done outside Mifos and any record of the source currency will not be available in Mifos.
Requirements/User Stories
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Deposit in non-base currency to account opened in base-currency | As a bank officer, I wish to accept deposit of money in currency-X to an account opened in base-currency | Must Have | |
2 | Deposit in non-base-currency to account opened in another-currency which is not the base-currency | As a bank officer, I wish to accept deposit of money in currency-X to an account opened in currency-Y and currency-X and currency-Y are not the base-currency | Must Have | |
3 | Deposit in base-currency to account opened in another currency | As a bank officer, I wish to accept deposit of money in base-currency to an account opened in currency-X | Must Have | |
4 | Maintain Exchange Rates | As an operations manager – I wish to maintain the exchange rates between various currencies and the base-currency Add a new currency exchange rate (in relation to base-currency) for a given date Change an existing currency exchange rate (in relation to base-currency) for a given date Delete an existing currency exchange rate (in relation to base-currency) for a given date | Must Have | |
5 | Bulk Load of Exchange Rates | As an operations manager – I wish use an excel sheet to import the date-wise exchange rates applicable between various currencies and the base-currency | Good to Have | |
6 | Maintain Financial Accounts related for cross-currency transactions | As a head-accountant – I wish to setup the financial accounts that will be used for currency conversions | Must Have | |
7 | Enable / Disable Multi-Currency | As a head-accountant – I wish to enable multi-currency financial accounting for my organization – if not enabled, then the current functionality of not allowing cross-currency transactions will continue | Must Have | |
<similar use cases needed for loan transactions - repayments> | ||||
<similar use cases needed for withdrawal transactions> |
Business Rules
Base-currency must be defined in Mifos.
If accounting is enabled, then:
a) The following accounting configurations for Financial Activity Mapping should be specified:
Financial Activity: Currency Exchange Position Account
Financial Activity: Equivalent Currency Value Position Account
Financial Activity: Inter-Branch Currency Transfers
b) For the savings products, the following must be set:
Assets: Savings reference – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Assets: Savings reference per payment Type:
Payment Type 1 – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Payment Type 2 – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Etc.
c) For the loan products, the following must be set:
Assets: Fund Source – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Assets: Fund Source per payment Type:
Payment Type 1 – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Payment Type 2 – Base-currency, Currency 1, Currency 2, Currency 3 etc.
Etc.
Business Flow:
- Deposits, Withdrawals and Repayments can be done in any currency other than the account currency
- If transaction is done in the same currency as the account currency, no change in processing
- If account is in base-currency and transaction is done in another currency
- Convert amount in transaction-currency to the base-currency
- If account is in another currency and transaction is done in base-currency
- If account is in currency X and transaction is done in currency Y and base-currency is different
Attributes
Attributes to be captured for exchange rate:
Attribute | Description | Notes |
---|---|---|
Base Currency |
Attributes to be captured for exchange rate:
Attribute | Description | Notes |
---|---|---|
Exchange Rate Date | The Date for this exchange rate | Not Null |
Source Currency | From which currency | Not Null |
Target Currency | To which currency | Not Null |
Exchange Rate Type | A type which describes to which type of transactions this rate is applicable. If Null, then this rate will be applicable for all transactions. | Nullable. 'Buy' or 'Sell' |
Exchange Rate | The actual exchange rate | Not Nullh |
Attributes to be captured for transactions:
Attribute | Description | Notes |
---|---|---|
Original Currency | The actual currency in which this transaction was initiated | Nullable |
Original Amount | The actual amount (in actual currency) in which this transaction was initiated | Nullable |
Exchange Rate Applied | The exchange rate that was used to convert Original Amount to the actual currency of the transaction | Nullable |
Security and Permissions
New permissions needed for maintaining the exchange rates.
Mifos Functionality Enhancements
New Screens
New screens needed for searching, listing and maintaining Exchange rates.
Changes to Existing Screens
Changes/Enhancements to Batch Jobs
Changes/Enhancements to Accounting Entries
Accounting Entries for deposits:
a) Accept deposit of 100 in currency-X to an account opened in base-currency - (assuming 1 currency-X = 15 base-currency)
S.No. | Journal Entry | Dr | Cr |
1. | <Savings-reference-Asset-currency-X> Dr <Inter-Branch Currency Transfers> Cr | 100 |
100 |
2. | <Inter-Branch Currency Transfers> Dr <Currency Exchange Position Account-currency-X> Cr | 100 |
100 |
3. | <Equivalent Exchange Position Account-base-currency> Dr <Inter-Branch Currency Transfers> Cr | 1,500 |
1,500 |
4. | <Inter-Branch Currency Transfers> Dr <Savings-control-liability> Cr | 1,500 |
1,500 |
b) Accept deposit of 100 in currency-X to an account opened in currency-Y and currency-X and currency-Y are not the base-currency - ( assuming 1 currency-X = 15 base-currency and 1 base-currency = 0.5 currency-Y)
S.No. | Journal Entry | Dr | Cr |
1. | <Savings-reference-Asset-currency-X> Dr <Inter-Branch Currency Transfers> Cr | 100 |
100 |
2. | <Inter-Branch Currency Transfers> Dr <Currency Exchange Position Account-currency-X> Cr | 100 |
100 |
3. | <Equivalent Exchange Position Account- currency-Y> Dr <Inter-Branch Currency Transfers> Cr | 750 |
750 |
4. | <Inter-Branch Currency Transfers> Dr <Savings-control-liability> Cr | 700 |
750 |
Question: Should there be an accounting entry in the base currency? If yes, what are the entries?
c) Accept deposit of 150 in base-currency to an account opened in currency-X - (assuming 1 currency-X = 15 base-currency)
S.No. | Journal Entry | Dr | Cr |
1. | <Savings-reference-Asset-base-currency> Dr <Inter-Branch Currency Transfers> Cr | 150 |
150 |
2. | <Inter-Branch Currency Transfers> Dr <Currency Exchange Position Account-base-currency> Cr | 150 |
150 |
3. | <Equivalent Exchange Position Account-currency-X> Dr <Inter-Branch Currency Transfers> Cr | 10 |
10 |
4. | <Inter-Branch Currency Transfers> Dr <Savings-control-liability> Cr | 10 |
10 |
Similar accounting entries will be needed for withdrawals and loan repayments:
User interaction and design
Exception Handling
Reporting
APIs
Notes
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|
Should we have a base currency defined for the Mifos installation? | Yes. Only one base-currency will be defined in Mifos for a financial institution |
If a base currency is set, then how will it be used? For example: Base currency is set as CDF. Withdrawal of EUR 100 an account opened in USD. Then will the conversion happen directly, between EUR and USD or will EUR 100 be first converted to CDF and then the corresponding CDF amount converted to EUR? | If the exchange operation involve different currencies from the base currency ex : deposit of USD in Euro Account. This exchange operation will run in 2 times : first exchange from USD to Base currency and the exchange to base currency to Euro.
|
Should we maintain Buy and Sell rates for various currencies in relation to to the base-currency? Or should Mifos maintain only one conversion rate? | |
If Buy and Sell Rates are used, then how are they to be used? The Buy rate would be used for non-base-currency deposits and repayments from members The Sell rate would be used for non-base-currency withdrawals Is this correct? |
Out of Scope
a) For the loan products