Get Income Statement
API to retrieve the historical income statement (profit and loss) data for a company identified by its ISIN. The response groups income data by category (Revenue, Operating profit, Net profit), each with historical values and period-over-period percentage changes. You can filter by statement type (consolidated or standalone) and reporting frequency (yearly or quarterly). All monetary values are in Indian Rupees (Crore).
Path Parameters
| Name | Required | Type | Description |
|---|---|---|---|
| isin | true | string | International Securities Identification Number (ISIN) of the company. Example: INE002A01018. |
Query Parameters
| Name | Required | Type | Description |
|---|---|---|---|
| type | false | string | Financial statement type. Allowed values: consolidated, standalone. Default: consolidated. |
| time_period | false | string | Reporting period. Allowed values: yearly, quarterly. Default: yearly. |
| fs | false | boolean | When set to true, the response includes a detailed line-item breakdown in the full_statement field. |
Request
curl --location 'https://api.upstox.com/v2/fundamentals/INE002A01018/income-statement?type=consolidated&time_period=yearly&fs=true' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {your_access_token}'
For additional samples in various languages, please refer to the Sample code section on this page.
Responses
- 200
- 4XX
Response Body
{
"status": "success",
"data": {
"type": "consolidated",
"time_period": "yearly",
"units_in": "crore",
"income_statement": [
{
"category": "revenue",
"history": [
{ "value": 1086181, "period": "Mar 2026", "change": "+10.53%" },
{ "value": 982671, "period": "Mar 2025", "change": "+7.15%" },
{ "value": 917121, "period": "Mar 2024", "change": "+3.1%" },
{ "value": 889569, "period": "Mar 2023" }
]
},
{
"category": "operating_profit",
"history": [
{ "value": 123162, "period": "Mar 2026", "change": "+16.17%" },
{ "value": 106017, "period": "Mar 2025", "change": "+1.61%" },
{ "value": 104340, "period": "Mar 2024", "change": "+10.95%" },
{ "value": 94046, "period": "Mar 2023" }
]
},
{
"category": "net_profit",
"history": [
{ "value": 95610, "period": "Mar 2026", "change": "+18.35%" },
{ "value": 80787, "period": "Mar 2025", "change": "+2.74%" },
{ "value": 78633, "period": "Mar 2024", "change": "+6.13%" },
{ "value": 74088, "period": "Mar 2023" }
]
}
],
"full_statement": [
{
"particular": "Revenue",
"history": [
{ "period": "Mar 2025", "value": 964693 },
{ "period": "Mar 2024", "value": 901064 },
{ "period": "Mar 2023", "value": 877835 },
{ "period": "Mar 2022", "value": 695963 }
]
},
{
"particular": "Other Income",
"history": [
{ "period": "Mar 2025", "value": 17978 },
{ "period": "Mar 2024", "value": 16057 },
{ "period": "Mar 2023", "value": 11734 },
{ "period": "Mar 2022", "value": 14943 }
]
},
{
"particular": "Total Revenue",
"history": [
{ "period": "Mar 2025", "value": 982671 },
{ "period": "Mar 2024", "value": 917121 },
{ "period": "Mar 2023", "value": 889569 },
{ "period": "Mar 2022", "value": 710906 }
]
},
{
"particular": "Total Expenses",
"history": [
{ "period": "Mar 2025", "value": 876654 },
{ "period": "Mar 2024", "value": 812781 },
{ "period": "Mar 2023", "value": 795547 },
{ "period": "Mar 2022", "value": 631883 }
]
},
{
"particular": "Profit Before Tax",
"history": [
{ "period": "Mar 2025", "value": 106017 },
{ "period": "Mar 2024", "value": 104340 },
{ "period": "Mar 2023", "value": 94046 },
{ "period": "Mar 2022", "value": 82154 }
]
},
{
"particular": "Tax",
"history": [
{ "period": "Mar 2025", "value": 25230 },
{ "period": "Mar 2024", "value": 25707 },
{ "period": "Mar 2023", "value": 20376 },
{ "period": "Mar 2022", "value": 15970 }
]
},
{
"particular": "Profit After Tax",
"history": [
{ "period": "Mar 2025", "value": 80787 },
{ "period": "Mar 2024", "value": 78633 },
{ "period": "Mar 2023", "value": 73670 },
{ "period": "Mar 2022", "value": 66184 }
]
},
{
"particular": "EPS - Basic",
"history": [
{ "period": "Mar 2025", "value": 51.47 },
{ "period": "Mar 2024", "value": 51.45 },
{ "period": "Mar 2023", "value": 98.59 },
{ "period": "Mar 2022", "value": 92 }
]
},
{
"particular": "EPS - Diluted",
"history": [
{ "period": "Mar 2025", "value": 51.47 },
{ "period": "Mar 2024", "value": 51.45 },
{ "period": "Mar 2023", "value": 98.59 },
{ "period": "Mar 2022", "value": 90.86 }
]
}
]
}
}
| Name | Type | Description |
|---|---|---|
| status | string | A string indicating the outcome of the request. Possible values: success, error. |
| data | object | Income statement data for the requested statement type and time period. |
| data.type | string | Financial statement type. Possible values: consolidated, standalone. |
| data.time_period | string | Reporting period. Possible values: yearly, quarterly. |
| data.units_in | string | Unit of monetary values. Value: crore. |
| data.income_statement | array | Income statement categories with historical values ordered by reporting period (most recent first). |
| data.income_statement[].category | string | Income statement category. Possible values: revenue, operating_profit, net_profit. |
| data.income_statement[].history | array | Historical values for the income statement category. |
| data.income_statement[].history[].value | number | Value for the period (in Crore). Negative values indicate a loss. |
| data.income_statement[].history[].period | string | Reporting period label, e.g., Mar 2026. |
| data.income_statement[].history[].change | string | Period-over-period percentage change, e.g., "+10.53%". Absent for the oldest period in the series. |
| data.full_statement | array | Detailed line-item breakdown of the income statement. Present only when fs=true is passed. |
| data.full_statement[].particular | string | Label for the income statement line item, e.g., Revenue, Other Income, Total Revenue, Total Expenses, Profit Before Tax, Tax, Profit After Tax, EPS - Basic, EPS - Diluted. |
| data.full_statement[].history | array | Historical values for the line item across reporting periods. |
| data.full_statement[].history[].period | string | Reporting period label, e.g., Mar 2025. |
| data.full_statement[].history[].value | number | Monetary value for the period (in Crore). |
Error codes
| Error code | Description |
|---|---|
| UDAPI1206 | Invalid ISIN - The provided ISIN is invalid. |
| UDAPI1207 | Invalid type - Allowed values: consolidated, standalone. |
| UDAPI1208 | Invalid time period - Allowed values: yearly, quarterly. |
Sample Code
- Python
- Node.js
- Java
- PHP
import requests
url = 'https://api.upstox.com/v2/fundamentals/INE002A01018/income-statement'
params = {
'type': 'consolidated',
'time_period': 'yearly',
'fs': 'true'
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {your_access_token}'
}
response = requests.get(url, params=params, headers=headers)
print(response.json())
const axios = require('axios');
axios.get('https://api.upstox.com/v2/fundamentals/INE002A01018/income-statement', {
params: { type: 'consolidated', time_period: 'yearly', fs: 'true' },
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer {your_access_token}'
}
}).then(response => console.log(response.data))
.catch(error => console.error('Error:', error));
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetIncomeStatement {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://api.upstox.com/v2/fundamentals/INE002A01018/income-statement?type=consolidated&time_period=yearly&fs=true"))
.header("Accept", "application/json")
.header("Authorization", "Bearer {your_access_token}")
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = 'https://api.upstox.com/v2/fundamentals/INE002A01018/income-statement?' . http_build_query([
'type' => 'consolidated',
'time_period' => 'yearly',
'fs' => 'true'
]);
$headers = [
'Accept: application/json',
'Authorization: Bearer {your_access_token}'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_errno($ch) ? print('Error: ' . curl_error($ch)) : print($response);
curl_close($ch);
?>
Loading...