An interest rate represents the cost of capital for a borrower or the yield on investment for a saver, typically expressed as an annual percentage of the principal amount. Within the Treasury Management System, interest rates are the "engine" for financial accuracy. They are utilized across several critical modules:
Interest Rate Tables: These are your "Market Data" feeds (e.g., SOFR, EURIBOR, or T-Bill rates) that the system pulls daily to update valuations.
Interest Trade Agreements: The specific legal terms (spreads, day-count conventions like Actual/360) applied to a transaction.
Fixed vs. Variable Setups: The logic that tells the system to either use a static rate or "reset" the rate periodically based on the tables above.
Loan Calculations: The engine that uses the rate, principal, and time to generate your actual payment schedules or interest accrual journal entries.
The market for interest rates is driven by global financial activity, where specific benchmarks serve as the standard for pricing. SOFR (the replacement for LIBOR), Bloomberg, and Reuters (Refinitiv) are primary sources or providers of these market rate indices. In a Treasury Management System (TMS), the numerous market rates you monitor are categorized by an Index, which acts as the "source code" for calculating interest on your financial instruments.
In the navigation pane, go to: Modules > Treasury > Common > Exchange
In the navigation pane, go to: Modules > Treasury > Setup > Interest rate > Integration setup
Enter a Content type
Enter a Description
Enter a Name
Enter the URL URL is the URL where the data should be fetched.
For ninja it is from their website, it must end with "="
The country is dynamically added later
Interest fetch type (Integration type) can be Interest rate - Country , Interest rate - Name, or Swift code
Method must be Get
The Key is found on the API website. (For ninja it is from their website)
Key value is given after registration on API website and allows for calls to be made.
JSONProperty is the header of the sample JSON given by the API Website. (For ninja, it is from their website)
The mapping connects the destination F&O table to the JSON response received from the website. Ensure your configuration matches the screenshot above. The Country and rate_pct fields are mandatory for downstream logic to function correctly.
After the Integration setup is complete, the Interest rates can be fetched by running the Fetch daily interest rates batch job
Interest agreements (Trade agreements) can be used on Loans, Investments and Registers
Interest rate
Margin rate
Total interest rate
Total effective interest rate
Interest rate group
Interest rate Calculations
Interest rate = P x R x T
P = Principal amount (the beginning balance)
R = Interest rate (usually per year, expressed as a decimal)
T = Number of time periods (generally one-year time periods)
Interest agreements allow you to establish agreed-upon interest rates for a loan. Rates can be updated manually or automatically, and both fixed and variable interest rates are supported.
In the navigation pane, go to Modules > Treasury > Loans > Loans and open an existing loan.
When opening a loan, by default you will be taken to the Header form.
Click on the Lines form
Expand the Interest agreements FastTab
Complete the following fields:
Rate linked: select the tick box if this rate is linked to the interest rate table. This is used by the batch job to automatically create new interest rate agreements (Common > Periodic > Rate auto-updates on Interest agreements)
Rate name can be selected from drop down list as it was set up
Maturity - choose between various options, such as 12 Months, 1 Week, 2 Weeks, 6 Months, Overnight, etc.
Rate Auto-update tick box
Interest rate is a mandatory field. This is the interest rate negotiated with the institution and should be entered as a percentage
Margin rate (formerly known as the Bank spread) is the difference between the interest rate that a bank charges a borrower and the interest rate a bank pays a depositor. It is a percentage that tells someone how much money the bank earns versus how much it gives out
Total interest rate
Total effective interest rate
Interest rate group can be either fixed or variable
A fixed interest rate means that the agreed interest rate is applicable for the entire period of the loan
A variable interest rate means that the interest rate will fluctuate according to market conditions. When creating a new Interest rate, Variable interest rate should be the default.
If you select a variable interest rate, you will be able to add additional lines on the trade agreement.
When working with variable interest rate, ensure you enter a new start date for each line, but keep the end date for all new lines on the trade agreement the same.
Start date gets its value from the loan details header record. The first line of interest agreements start date is populated from the loan header.
When adding additional interest rate lines, from the second line, the start dates can be filled in.
The initial start date is populated from the Loan header
End date: The loan date together with the loan payment terms determines the number of payments that will be made and subsequently the number of statement lines that will be created.
The end date is part of the base data for the loan and is negotiated with the institution on creation of the first agreement. This means that the end date must be the same across all agreement versions.
The end date is automatically populated from the Loan header
Number of statement lines is a non-editable field that is calculated using the start to end dates and loan payment terms (interest calculation intervals)
Interest payment terms: options to choose from is Monthly, Quarterly, Half yearly and Yearly
Number of payments in loan (display field)
When a loan group has an interest rate linked, the interest rate will be populated to the Loan trade agreement. The user will not be able to manualy edit this interest rate on the Loan trade agreement
By executing a recurring batch operation, interest trade agreements that are tied to an interest rate can be automatically updated.
To automatically assign the latest interest rates to Loans as per the Interest rate table, go to Common > Periodic > Rate auto-updates on Interest agreements
Multi-Company selection: Use the Company selection control within the periodic job dialog to pick one or more legal entities for the processing run
Batch Efficiency: Select multiple legal entities simultaneously to run rate updates across companies within a single execution batch
Click the OK button to run the batch job
¶ Step 12: Update Interest rate groups participant rates
This job will update the interest rate table of all the participants with the interest rate table of the leader. Once run, this job will update all rates in the participating entities rate table.
In the navigation pane, go to Treasury > Common > Periodic > Update Interest rate groups participant rates
Running this job will update all the participant entities with the same interest rates as the Group leader
In the dialogue page, select the Interest rate group
Click on the OK button
Interest rates can be set up to update all interest rates across the respective legal entities, as configured on the Interest rate group page
To fetch the daily interest rates, go to: Treasury > Common > Periodic > Fetch daily interest rates
Users can enter a rate name and choose to run this in the background
This job has a parameter named Rate name
When ran, it loops through all rate names matching chosen option and fetches interest rates for the setup country/region that was set up on the Rate name
It then applies the logic below to populate the Interest rate form: (Treasury > Common > Interest rate)
When ran, it loops through all rate names matching chosen option and fetches interest rates for the relevant country/region that was set up on the Rate name.
When the Fetch daily interets rates job is run:
Fetch the interest rate for the from the API, using data as setup in Rate name form
Create a new record in the Interest rate table using the response received
Values from Rate names
Rate name = Rate name
Maturity = Maturity
Values from integration response
last_updated = Start date
rate_pct = Interest rate
central_bank = Central Bank (if provided)
Validation
Look at the latest record in the table for the same combination of Rate name, Maturity
If the rate of the identified record is equal to the rate returned by the API, do not create a new record
If a new record could not be created, give a warning message indicating New record has not been created – there has been no change to the interest rate