India Public Finance·Portal

India Public Finance

Public budgets.
Usable data.

Budget figures sit across thousands of PDF pages. We turn those pages into structured tables, retain the source references, and check the accounting relationships. Researchers can then compare spending and explain what the budget means.

Research preview. Amounts are shown in ₹ crore at current prices. Karnataka covers 2018-19 to 2026-27; the state comparison also includes Tamil Nadu.

Budget pages become structured data Printed tables connect to an account hierarchy and a reusable grid of records. This is a symbolic illustration. SOURCE PAGESACCOUNT STRUCTUREREUSABLE DATA
Keep the account, the amount, and the source together.
Worked examplesPython, R and DuckDB SQL

Start with a research question

Use the companion repository's prepared table to reproduce an analysis, inspect its assumptions, and adapt the code to your question.

01

Which departments spend the most?

Rank departments by actual expenditure in 2024-25. Learn to group account entries by demand and convert lakh to crore.

02

How much of the health budget is spent?

Compare budget estimates, revised estimates and actual expenditure over time. The example combines Medical and Public Health with Family Welfare.

03

What share goes to salaries, pensions and interest?

Classify expenditure by account code and calculate its share of total spending. Read the salary-code exclusions before extending the definition.

04

How have departmental allocations changed?

Compare demand totals across years and examine changes in rank. Separate financial years from document years to avoid repeated amounts.

Explore an example

Health spending, year by year

Follow the same financial year across its budget estimate, revised estimate and actual expenditure. This example uses revenue heads 2210 and 2211. It excludes capital expenditure.

View the Python analysis

Loading the worked example...

A page from Karnataka's 2024-25 expenditure budget showing account codes and financial columns

Working with the data

From a budget page to your first calculation

The illustrated guide explains account levels, financial columns and the rows that can be added together. Then run a short Python example using the repository's prepared data.

From the companion repository folder

python3 examples/src/python/hello_budget.py
Data accounts as printed

What the explorer contains

Each document year contains four financial columns: actual expenditure from two years earlier, the previous budget estimate, the revised estimate, and the new budget estimate. The data package retains account codes and source page references so researchers can examine the figures in context.

Coverage and validation Karnataka, 2018-19 to 2026-27

What a pass means

Each check compares an extracted total with the sum of its detail rows. A pass means that the difference falls within the specified tolerance. Errors can still remain in figures that add up correctly. A source-page comparison is needed to establish whether the extraction is accurate.

Explore search by code or name
Loading Karnataka data...
Account head

The source tables record Karnataka amounts in lakh. The explorer divides them by 100 and displays nominal ₹ crore. Open a row to see the account levels beneath it. A dash means that the selected document does not print that figure.

Questions to take further

Separate prevention and public-health programmes from clinical services within head 2210. Compare revenue spending with capital head 4210. These are research extensions that need a documented classification and source checks.

SQL reproduce a demand total

Calculate a total from the package

This query adds object-head entries by demand from a Karnataka package CSV. It excludes summary rows to avoid counting the same expenditure twice. Results are in lakh. Divide by 100 to convert them to crore.

Method from source document to account table

1. Read and map

Identify the source's account levels, financial columns, units and links between detail tables and summaries.

2. Define the record

Specify the account path, amount, year, unit and source. Keep detail rows, totals, blanks and zeros distinct.

3. Extract and check

Extract source-linked records and reconcile the totals. Trace each failed check back through the processing steps.

4. Support research

Provide reusable tables, worked examples and source references. Report the checked scope and the errors that remain.

Related paper: Information Extraction From Fiscal Documents Using LLMs.

Citation

xKDR. India Public Finance Portal. Karnataka state budget data, 2018-19 to 2026-27. https://github.com/xKDR/india-public-finance-portal

ContributeSources, corrections and research

Contribute to the database

Help extend the archive or improve an existing record. Start with the source document and describe the change so another researcher can check it.

For a data correction, include the state, account code, financial year, measure, unit and source page. Show the recorded value and the proposed correction.

Open a contribution issue

The repository is public. Reports open a tracked issue that maintainers can check against the source PDF.

Add a budget source
Identify the state, year and expenditure volume. Include the official URL or PDF, its units and any missing pages. New layouts need their own field mapping.
Correct a record
Cite the source page and explain the discrepancy. Keep the original value and the proposed change visible. A total that adds up is not sufficient evidence for a correction.
Improve extraction or validation
Provide the page, expected records and a reproducible failure. Test the rule with a correct sample and deliberate errors, such as a changed digit, a dropped row or a swapped year.
Add a worked analysis
State the question, input version, row selection and units. Include code and expected results. Follow the example specification so others can reproduce the calculation.

Proposed corrections need source evidence and review before they enter a new data release. Report unresolved differences rather than changing an amount to make a check pass.

India Public Finance Portal is a project of xKDR. Data, code and this site are public on GitHub.