Zero-based budgeting

Give every rupee a job before it leaves.

Kharcha is an envelope budget for real income: what you have, not what you expect. Assign this month's money until nothing is left over, then spend against the plan you made.

Ready to assign

Rs 14,000

RentRs 22,000
GroceriesRs 9,000
TransportRs 3,500
Emergency fundRs 0

Rs 14,000 still needs one.

What you get

Everything the month needs, nothing that guesses for you.

A month you can balance

Income lands in Ready to Assign and stays there until you put it in a category. The month view shows assigned, spent, and what is left, per category, as you go.

Accounts that match the bank

Checking, savings, credit card, and cash. Reconcile against a statement balance and Kharcha works out the adjustment for you.

Statement import

Drop in a PDF or spreadsheet from your bank or wallet. Rows are parsed, duplicates are flagged against what you already have, and nothing is written until you commit the batch.

Edits that keep the history

Changing a transaction writes a new version and keeps the old one, so last month's numbers do not quietly change under you.

Categories, groups, and labels

Group categories the way you think about them, then label them across groups — needs, wants, savings — and read spending by label.

Loans, kept honest

Loan accounts sit off-budget with their own schedule. Record disbursements and repayments, project an early payoff, and see interest separated from principal.

Reports that answer questions

Spending by category, income against expenses, per-category trend by month, assigned against actual, and spending by label — all over any date range.

Your currency, your names

Amounts are stored as whole minor units and shown with your currency's symbol. Nepali rupees by default, changeable in settings.

Talk to it

Connect ChatGPT or Claude and work your budget in a conversation: paste a statement, categorise what came out, ask where the money went.

How a month goes

Five moments, in the order they actually happen.

Salary day

Income arrives in Ready to Assign

Nothing is spent from it yet. It is the only pool that is allowed to sit uncategorised, and getting it to zero is the whole job.

Same evening

You assign it, down to zero

Rent, groceries, the emergency fund. Assigning is setting the month's total for a category, not adding to it, so a second pass never doubles anything.

All month

Spending lands against categories

Add transactions as you go, or import the statement in one batch at the end. Uncategorised expenses are called out, because they make the budget look richer than it is.

Overspent

You move money, not the goalposts

Groceries went over? Take it from somewhere that did not. The month stays balanced because the money came from a real place.

Month end

Reconcile, then start the next month

Match each account to its statement balance, take the adjustment if there is one, and carry the rest forward.

Kharcha in your chat window

Paste a statement into ChatGPT. Get a categorised month back.

Kharcha is a remote MCP server, so ChatGPT and Claude can read your budget and — with your say-so, every time — write to it. Nothing moves without you agreeing in the conversation.

YouHere is my Nabil statement for July. Put it in the checking account.
Kharchastage_transactions → 38 rows, 2 look like duplicates
Assistant36 rows are new. The two duplicates match transactions you already have on 12 and 19 July, so I have left them out. Nine rows are uncategorised — want me to file them?
YouYes, then commit it.
Kharchacategorize_import_rows → 9 filed · commit_import → 36 written