Sonigra Bhavya Hemendrabhai created FINERACT-3019:
-----------------------------------------------------

             Summary: Disallow cross-currency account transfers to prevent 1:1 
arbitrage and GL desync
                 Key: FINERACT-3019
                 URL: https://issues.apache.org/jira/browse/FINERACT-3019
             Project: Apache Fineract
          Issue Type: Bug
          Components: Accounting, Loan
    Affects Versions: 1.15.0
            Reporter: Sonigra Bhavya Hemendrabhai
            Assignee: Sonigra Bhavya Hemendrabhai


h3. Description
In FINERACT-1355, {{DifferentCurrenciesException}} was introduced to prevent 
transfers between accounts with mismatched currencies until native FX 
conversion capabilities are implemented in Fineract.

However, currency parity validation was only added to direct Savings -> Savings 
transfers in {{AccountTransfersWritePlatformServiceImpl}}. The check was 
omitted for:
# Direct Savings -> Loan transfers (paying off loan debt from savings)
# Direct Loan -> Savings transfers (refunding loan to savings)
# Standing Instructions (recurring automated transfers executed via 
{{transferFunds}})
# Loan Top-up transfers ({{repayLoanWithTopup}})
# Overpaid Loan Refund transfers ({{refundByTransfer}})

h3. Impact
Because Fineract does not perform FX conversion or accept exchange rates on 
standard account transfers:
* A transfer of 100 JPY from savings to a 100 USD loan executes at 1:1 nominal 
value, wiping out 100 USD of loan principal while only deducting 100 JPY 
(~$0.65 USD).
* General Ledger entries post unbalanced multi-currency debits and credits 
(e.g., DEBIT 100 JPY to Savings Control, CREDIT 100 USD to Loans Receivable), 
corrupting the trial balance and balance sheet.
* In standing instructions, this occurs on a recurring automated schedule in 
the background.

h3. Expected Behavior
All transfer operations between accounts with different currencies must be 
disallowed and throw {{DifferentCurrenciesException}} before any withdrawal, 
deposit, or repayment transactions are executed.




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to