Skip to main content

How to Handle Manual P2P Crypto Transactions on KoinX (with TDS & Reporting)

This guide is for users in India. It covers P2P crypto trades settled in INR, TDS under Section 194S, and how to reconcile these transactions in KoinX for accurate tax reporting.

What is a Manual P2P Trade?

A manual P2P trade is a direct crypto-for-INR transaction between two people, outside of a centralised exchange’s order book. Common examples:
  • You send crypto from your wallet to a buyer, and they pay you INR via UPI, IMPS, or NEFT.
  • You pay someone INR, and they send crypto directly to your exchange wallet or personal wallet.
Because these trades bypass an exchange, KoinX cannot automatically identify them as a buy or sell. Depending on the direction of the trade, they will appear differently and need to be fixed in different ways.

Scenario 1: You Sold Crypto via P2P (Outgoing)

You sent crypto from your wallet to a buyer and received INR in return. On KoinX, this outgoing movement will appear as a Withdraw since KoinX has no context of the INR settlement.

How to fix it

Step 1: Check the auto-fetched transaction yet First check whether this withdrawal is linked to any deposit on another wallet you own. If it is an internal transfer between your own wallets, deleting it will cause mismatches. If it is genuinely a P2P sale and not an internal move, proceed to Step 2. Step 2: Delete the auto-fetched Withdraw or Transfer Go to Transactions, find the entry, and delete it to prevent a duplicate record. Step 3: Manually add a Sell transaction Add a new transaction with the following details:
  • Type: Trade
  • Label: Sell
  • Date: Date of the P2P trade
  • Asset: The crypto you sold (e.g., USDT, BTC)
  • Quantity Sold: The amount you sent
  • INR Received: The gross INR amount credited to you before TDS
  • TDS Deducted: If the buyer withheld 1% TDS, enter that amount here
  • Transaction Hash (optional): On-chain TxID for audit trail
  • Note (optional): e.g., “Manual P2P sale: 1 USDT for ₹100 via UPI, ₹1 TDS deducted by buyer”
KoinX will now treat this as a taxable sale and calculate your capital gains correctly.

Scenario 2: You Bought Crypto via P2P (Incoming)

You paid someone INR and they sent crypto to your wallet or exchange. On KoinX, this incoming crypto will appear as a Deposit since KoinX has no record of the INR you paid. When KoinX sees a deposit, it automatically picks up the fair market value of the crypto at that point in time. This may be different from the actual price you paid in the P2P trade. If left uncorrected, your cost basis will be wrong, which means your capital gains will also be off when you eventually sell. How you fix this depends on whether the wallet or exchange where you received the crypto is already connected to KoinX.
Use this if: The wallet or exchange where you received the crypto is already connected to KoinX, and the deposit is auto-fetched. This is the easier approach and works well for most users who do not need to build a complete transaction trail. Step 1: Find the auto-fetched Deposit transaction Go to Transactions and find the deposit that corresponds to your P2P buy. Step 2: Edit the price Click the three-dot menu and select Edit. Enter the exact INR amount you actually paid to acquire the crypto. This overrides the fair market value KoinX picked up automatically and sets the correct cost basis for your trade. That is all you need to do for this option.

Option 2: Add manual transactions (complete transaction trail)

Use this if: The wallet or exchange where you received the crypto is not connected to KoinX, or you want to build a complete trail of the transaction from the P2P trade through to the final deposit. Step 1: Set up the wallet in KoinX If the wallet where you received the crypto is not connected to KoinX, you will need to add it. Go to Integrations, add the particular wallet where the funds were originally received. Step 2: Add a Buy transaction Under the wallet you just created (or the relevant connected wallet), manually add a Buy with the following details:
  • Type: Trade
  • Label: Buy
  • Date: Date of the P2P trade
  • Asset: The crypto you received
  • Quantity Bought: Amount of crypto you received
  • INR Paid: The gross INR amount you paid before TDS
  • Note (optional): e.g., “Manual P2P buy: 1 USDT for ₹100 via UPI, ₹1 TDS deducted by me”
Step 3: Add a Withdraw transaction (only if the crypto moved to another exchange) If after receiving the crypto you transferred it to another exchange or wallet, you need to record that movement. Add a Withdraw with:
  • Type: Withdraw
  • Date and time: A timestamp slightly before the Deposit time on the receiving exchange
  • Asset and Quantity: Same as the Buy above
KoinX will automatically match this Withdraw with the auto-fetched Deposit on the receiving exchange as an internal transfer. If the crypto did not move anywhere after the P2P trade and stayed in the same wallet, you only need the Buy transaction from Step 2. No Withdraw is needed.
For automatic internal transfer matching to work, go to Tax Settings → Internal Transfer Settings and check that the time window and amount difference thresholds are configured correctly. The Withdraw timestamp must fall within the matching window before the Deposit time.

Understanding TDS in P2P Trades

Under Section 194S of the Income Tax Act, 1% TDS applies on crypto purchases in India.
SituationWho deducts TDS
You are selling cryptoThe buyer deducts 1% TDS and pays you the net amount
You are buying cryptoYou deduct 1% TDS from the amount you pay the seller
If TDS was deducted by the buyer on your sale: Enter the TDS amount in the TDS field when adding your Sell transaction. KoinX will include it in your TDS summary and Form 26AS reconciliation. If no TDS was deducted: You may be responsible for self-assessment. Check with your CA for the right approach based on your situation.
Do not manually subtract TDS from the INR amount when entering the transaction. Always enter the gross INR value and use the dedicated TDS field. Manually adjusting the amount will lead to incorrect capital gains calculations.

Common Issues

Check that the Withdraw timestamp is before the Deposit timestamp, and that the time gap between them falls within your Internal Transfer Settings time window (default is 120 minutes). Also check that the amounts are within the allowed difference threshold (default is 5%).
Relabelling changes the category but does not add the INR sale value or TDS. You need to manually add a Sell transaction with the correct details and delete the original auto-fetched entry.
Do them one at a time. Match each trade to its corresponding on-chain transaction before moving to the next. If you are unsure, reach out to our support team and we will help you work through it.

Summary

ScenarioWhat KoinX showsWhat you need to do
You sold crypto via P2PWithdraw or TransferDelete it, add a Sell manually with INR
amount and TDS
You bought crypto via P2PDepositKeep the Deposit, add a Buy and a
Withdraw so KoinX maps it as an internal transfer
Last modified on April 11, 2026