Cross-Currency Transactions
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
# | 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 | |
8 | Multi-Currency Reporting | As 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 Have | Posted 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:
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
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:
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
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