Target release
Epic
Document statusDRAFT
Document owner 
Designer
Developers
QA

Overview

  • This functionality is mainly needed for transactions that involve more than one currency.  The transaction may be initiated in one currency, on an account which is opened in another currency. Every 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 or loan account.

  • Mifos will have 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 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 posted to 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 Mifos users in 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.

It also helps to Mifos more suited for micro-finance or small/medium scale banking that involved multiple currencies.

Requirements/User Stories

#TitleUser StoryImportanceNotes
1Deposit in non-base currency to account opened in base-currencyAs a bank officer, I wish to accept deposit of money in currency-X to an account opened in base-currencyMust Have 
2Deposit in non-base-currency to account opened in another-currency which is not the base-currencyAs 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-currencyMust Have 
3Deposit in base-currency to account opened in another currencyAs a bank officer, I wish to accept deposit of money in base-currency to an account opened in currency-XMust Have 
4Maintain 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 
5Bulk Load of Exchange RatesAs an operations manager – I wish use an excel sheet to import the date-wise exchange rates applicable between various currencies and the base-currencyGood to Have 
6Maintain Financial Accounts related for cross-currency transactionsAs a head-accountant – I wish to setup the financial accounts that will be used for currency conversionsMust Have 
7Enable / Disable Multi-CurrencyAs 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 continueMust Have 
8Multi-Currency ReportingAs a financial analyst, I need to be able to display our operating currency (DOP) in another currency (USD) for monthly and quarterly reporting (gross portfolio, disbursements, savings balance, write-offs, principal repayments, income, etc.)Good to HavePosted by Esperanza (Dominican Republic)
 <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 cross-currency 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.

 

Transaction Flow: (this section is to be completed)

-          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:

AttributeDescriptionNotes
Base Currency  

Attributes to be captured for exchange rate:

AttributeDescriptionNotes
Exchange Rate DateThe Date for this exchange rateNot Null
Source CurrencyFrom which currencyNot Null
Target CurrencyTo which currencyNot Null
Exchange Rate TypeA 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 rateNot Nullh

Attributes to be captured for transactions:

AttributeDescriptionNotes
Original CurrencyThe actual currency in which this transaction was initiatedNullable
Original AmountThe actual amount (in actual currency) in which this transaction was initiatedNullable
Exchange Rate AppliedThe exchange rate that was used to convert Original Amount to the actual currency of the transactionNullable
 

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

System --> Configurations

     Add a new configuration "Allow Cross Currency Transactions" - Yes/No

Accounting --> Accounts Linked to Financial Activity

     Three more account types can be selected:

     - Cross-Currency Exchange Position Account - The account to which all amount in source currency will be posted

     - Cross-Currency Equivalent Exchange Position Account - The account to which all amount in target currency will be posted

     - Cross-Currency Inter-Branch Transfer Account - The account to which will be used if the currency exchange is across two branches (to confirm if this this account is to be used only if the transaction is across two branches)

Changes/Enhancements to Batch Jobs

None.

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)nge

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:

QuestionOutcome
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

In the initial scope – Only deposits, withdrawals and repayments will be allowed in multiple currencies. The following will not be supported

 

  • Fees applied and paid in other currencies other than the currency in which the account is opened
  • Loan disbursals in other currencies other than the currency in which the account is opened

a)      For the loan productssu