Skip to main content

Capital gains — FIFO STCG / LTCG

Indian residents are taxed on US-equity gains. This report gives them the per-transaction detail they need at year-end.

Why the ledger produces this

  • Indian tax code taxes capital gains from foreign / unlisted equity as STCG (short-term, held < 24 months) or LTCG (long-term, ≥ 24 months).
  • At year-end the customer needs a statement of every disposal (sell), the cost basis of what they sold (FIFO), and the classification.
  • The ledger has every buy and every sell — enough to compute this automatically.

The algorithm

FIFO — first in, first out. For each customer + instrument:

  1. Buys open lots in date order.
  2. Sells consume lots in the same order.
  3. Each disposal slice records: quantity sold, proceeds, cost basis, gain, holding period, STCG or LTCG.

Design decision — sub-ledger, not new GL accounts

Under Valura's omnibus custody model, a sale already balances with the gain flowing to the customer's cash wallet. So capital-gains tracking is a reporting layer on top of the balanced ledger — not new debit / credit lines. The trial balance is unchanged.

What the report shows

Per customer, per FY:

  • Realized gain — total, plus STCG / LTCG split
  • Per-disposal detail — every sell with the matched buy, cost basis, proceeds, gain, holding days, term
  • Open lots — unsold buys still on the books, with holding-period ticker (STCG → LTCG on day 730)

Firm-wide roll-up on top.

The forward-only caveat

Trade ingest is forward-only from the day sync started (ViewTrade doesn't have a historical-orders endpoint). A customer who bought before ingest and sells now will show an "oversell" warning — the ledger doesn't fabricate a zero-cost basis; it flags the gap so it can be filled by hand when a historical backfill lands.

INR conversion — best-effort caveat

Indian capital gains tax computes cost + proceeds in INR at the SBI TT buying rate on the acquisition and sale dates. USD figures are exact; INR figures need a daily TT rate table that's not yet wired. Follow-up.

The LTCG threshold

24 months (CAPITAL_GAINS_LTCG_DAYS = 730) — foreign / unlisted equity under Indian tax code. Configurable pending tax-counsel confirmation.

Where to see it

  • Frontend: /capital-gains (India book). Per-customer table, per- disposal detail, open lots, FY filter.
  • API: GET /v1/india/capital-gains?customer=&fy=.
  • Related: Schedule FA reuses this data for the foreign-asset statement.