SBI TT Buying Rate for Income Tax Rule 115: What It Is and How to Fetch It
If you earn or pay income in a foreign currency and file an Indian tax return, the rupee figure is not up to you. Rule 115 of the Income-tax Rules, 1962 fixes the conversion rate: the telegraphic transfer (TT) buying rate of the State Bank of India on a specified date. Not the RBI reference rate, not your bank's actual conversion, not a market rate. This guide explains what that rate is, which date applies to each kind of income, and how to fetch it without opening SBI's PDF by hand.
What the TT buying rate is
Every business day SBI publishes a forex card rate sheet. For each currency it lists several buying and selling rates. The TT buying rate is the one SBI pays when it buys foreign currency that reaches the bank by telegraphic transfer, in other words an inward wire. It is the cleanest of the buying rates because no bill, cheque or cash handling is involved, which is why the rule picks it.
Rule 115 defines it in the same terms: the rate adopted by SBI for buying foreign currency that is made available to the bank through a telegraphic transfer. The Explanation to the rule is where that wording lives, and the rule covers any income “expressed in foreign currency” that has to be converted to rupees for the Income-tax Act.
Two things follow for anyone automating this:
- It is a bank quote, so it sits below the day's mid-rate. On 19 October 2026 SBI's TT buying rate for USD was
94.43while the RBI reference rate was94.7691, about 0.36% lower. - It can change during the day. SBI's board carries a time stamp (
19-10-2026 Time 9:16 AMon the day this was written). Record the stamp with the rate you use.
Which date applies: the specified-date table
Rule 115(2) gives a different “specified date” for each head of income. The practical version:
| Income | Specified date |
|---|---|
| Salaries | Last day of the month immediately before the month in which the salary is due, or is paid in advance or in arrears |
| Interest on securities | Last day of the month immediately before the month in which the income is due |
| House property; profits and gains of business or profession; other sources (except dividends and interest on securities) | Last day of the previous year, i.e. 31 March of the financial year |
| Dividends | Last day of the month immediately before the month in which the dividend is declared, distributed or paid |
| Capital gains | Last day of the month immediately before the month in which the asset is transferred |
There is an important proviso. Where tax has already been deducted at source on income payable in foreign currency, the specified date is the date on which the tax was required to be deducted. That connects Rule 115 to Rule 26, which tells the deductor to convert such payments at the SBI TT buying rate on the date the tax had to be deducted. Payroll teams paying non-resident consultants, and companies paying royalties or technical fees abroad, meet Rule 26 before they ever meet Rule 115.
Rule 115A, for non-residents computing capital gains on Indian shares or debentures under the first proviso to section 48, is the exception that uses an average of the TT buying and TT selling rates. If that is your case, you need both columns of SBI's sheet.
RBI reference rate or SBI TT buying rate?
Both are official in their own domain. They are not interchangeable.
| RBI / FBIL reference rate | SBI TT buying rate | |
|---|---|---|
| Who publishes | FBIL computes, RBI publishes, once a day at about 13:30 IST | State Bank of India, on its forex card rate sheet, with a time stamp |
| What it is | A mid-rate, no buy or sell side | A buying quote, below the mid |
| Currencies | USD, EUR, GBP, JPY, plus AED and IDR | About 21 currencies on the day of writing |
| Required for | FEMA reporting, RBI returns, most accounting policies under Ind AS 21, the services side of GST valuation | Income-tax conversions under Rule 115, TDS under Rule 26, Rule 115A averages |
So an export of services can legitimately show the RBI rate on the GST invoice and the SBI TT buying rate in the income-tax computation for the same receipt. The two numbers differ, and that is expected. The comparison of RBI, SBI and market rates goes through the other cases.
Fetch SBI's board as JSON
AllRatesToday collects SBI's published board from SBI's own website and serves it keyless:
curl https://allratestoday.com/api/open/bank-rates/in/sbi Trimmed to the fields that matter, the response on 19 October 2026 looked like this:
{
"bank": "sbi",
"name": "State Bank of India",
"quote_ccy": "INR",
"bank_updated_at": "19-10-2026 Time 9:16 AM",
"basis": "Telegraphic transfer",
"captured_at": "2026-10-19T21:09:17.484Z",
"rates": [
{ "ccy": "USD", "buy": 94.43, "sell": 95.28, "mid": 94.855,
"spread_pct": 0.896, "official": 94.7691, "vs_official_pct": 0.091 },
{ "ccy": "EUR", "buy": 105.17, "sell": 107.84, "mid": 106.505,
"spread_pct": 2.507, "official": 106.33, "vs_official_pct": 0.165 },
{ "ccy": "GBP", "buy": 125, "sell": 127.84, "mid": 126.42,
"spread_pct": 2.246, "official": 126.2928, "vs_official_pct": 0.101 }
]
} How to read it:
buyis the TT buying rate,sellthe TT selling rate, both in rupees per 1 unit of the currency (basisconfirms the board is the TT board).bank_updated_atis SBI's own time stamp on the sheet.captured_atis when AllRatesToday read it.officialis the RBI reference rate for that currency where one exists, andvs_official_pctis how far SBI's mid sits from it. Currencies the RBI does not publish shownull.
One currency at a time: add ?ccy=USD and the response carries buy, sell and mid at the top level instead of inside rates. The RBI reference rate itself is at https://allratestoday.com/api/open/central-bank/rbi, with rate_date and a rates array of base, quote and value.
Python
Convert a foreign receipt at the day's TT buying rate and keep the evidence fields next to the result:
import json, urllib.request
from decimal import Decimal, ROUND_HALF_UP
url = "https://allratestoday.com/api/open/bank-rates/in/sbi?ccy=USD"
board = json.load(urllib.request.urlopen(url))
tt_buying = Decimal(str(board["buy"])) # 94.43 on 2026-10-19
income_usd = Decimal("12000.00")
income_inr = (income_usd * tt_buying).quantize(Decimal("0.01"), ROUND_HALF_UP)
print(board["bank_updated_at"], tt_buying, income_inr)
# 19-10-2026 Time 9:16 AM 94.43 1133160.00
record = {
"rule": "Income-tax Rules, Rule 115",
"rate_source": "SBI TT buying rate",
"board_time": board["bank_updated_at"],
"captured_at": board["captured_at"],
"rate": str(tt_buying),
} Run it on the specified date, not on the day you file. The open endpoint carries the current board, so a script that runs every business day and stores the result gives you the month-end and year-end rates you will need later. Save SBI's own card rate PDF for the same day alongside it; the attribution.bank_url field in the response points at the sheet.
Google Sheets
The SBI board is JSON, so it needs a small Apps Script function. Open Extensions → Apps Script, paste this and save:
function SBI_TT_BUY(ccy) {
var url = "https://allratestoday.com/api/open/bank-rates/in/sbi?ccy=" + ccy;
var d = JSON.parse(UrlFetchApp.fetch(url).getContentText());
return [[d.buy, d.sell, d.bank_updated_at]];
} Then =SBI_TT_BUY("USD") in a cell fills three columns: TT buying, TT selling and SBI's time stamp. For the RBI reference rate no script is needed, because the daily table is also served as CSV:
=IMPORTDATA("https://allratestoday.com/api/open/central-bank/rbi?format=csv") The CSV columns are rate_date, base, quote, rate_type, value. Putting both on one sheet gives your accountant the Rule 115 figure and the RBI figure side by side for every month-end.
Keep SBI's sheet as the legal reference
Rule 115 names SBI, not any aggregator. Treat the endpoint as a convenience: it saves you opening a PDF every day and makes the number easy to put in code. The evidence an assessing officer would ask for is SBI's published card rate for the specified date, so archive that sheet (the link is in every response) and record the board time you relied on. If the two ever disagree, SBI's sheet wins.
FAQ
Is the SBI TT buying rate the same as the RBI reference rate?
No. The RBI reference rate is a mid-rate computed by FBIL once a day at about 13:30 IST. The SBI TT buying rate is State Bank of India's own quote for buying foreign currency that arrives by wire, and it sits below the mid-rate. On 19 October 2026 the USD figures were 94.43 (SBI TT buying) and 94.7691 (RBI reference).
Which rate does Rule 115 ask for?
The telegraphic transfer buying rate adopted by the State Bank of India on the specified date. The specified date depends on the head of income; the table in this article lists them.
Does the AllRatesToday endpoint replace SBI's card rate sheet?
No. SBI's published card rate remains the legal reference. The endpoint is a convenience copy of the board SBI publishes on its own website, with the capture time attached, so you can automate the lookup and then keep SBI's sheet as evidence.
Do I need an API key?
No. The SBI board and the RBI daily table are both keyless. Show a visible link back to allratestoday.com where you display the rates.
What if the specified date is a Sunday or a bank holiday?
SBI does not publish a card rate on days it is closed. The common practice is to use the last rate published before the specified date, but Rule 115 does not spell this out, so confirm the approach with your chartered accountant and record which day's rate you used.
Official rates for every filing
SBI's daily board and the RBI reference rate keyless. Dated RBI tables and history back to 2003 on paid plans.
See plans