Importing CSVs into custom accounts

How to import Deposits, Withdrawals, Trades, Income, Mining, Gifts, Gambling, Purchases, Staking and Donations from any exchange.

Daniel Howitt avatar
Written by Daniel Howitt
Updated over a week ago

Recap aims to support all exchanges with Connected Accounts. This is the automatic import of all of your transaction history and real-time connections to your accounts via read-only APIs. See here for our connected account support.

If we don't currently support your exchange via our Connected Accounts, Recap allows you to import CSV transactions into a Custom Account with support for a wide range of transaction types.

In a rush? See an example in our Google Sheet or download the CSV template.

Before you start

Data resets on each import

To ensure that there are no complications when you upload a CSV to an existing Custom Account, we remove all previous CSV imports assigned to that Custom Account on every import. This is so you don't accidentally upload duplicates or have to manually work out which transactions you do and don't want to be included. You can think of the CSV file as the master record, always overriding data in an account.


As a general rule, ‘the sender pays the fees’ can be followed. Fees for deposits are inclusive, fees for withdrawals are exclusive. You should therefore add FeeAmount and FeeCurrency for your withdrawals but not deposits.

If you want to see how fees have been applied to a transaction, use the 'changed balances' section in the 'details' tab for any transaction.

CSV File Details

Required fields

  • Type - Airdrop, Deposit, Withdrawal, Trade, Income, Mining, Gift (gifts to or from), Spouse (gifts to or from your spouse or civil partner), Gambling (in or out), Purchase, Stake, Unstake, StakingReward, Donation, Fork, MarginGain, MarginLoss, LendingFee, Fee, FeeRebate, LoanPrincipal (loan acquisition), LoanPrincipalPayment (loan repayment), LoanCollateral (’Locking’ of loan collateral), LoanCollateralUnlocked and LoanInterest

    We've got a more detailed A-Z guide for each transaction type here.

  • Date - Date of the transaction as yyyy-mm-dd hh:mm:ss

    • If using excel you may need to adjust the calendar setting on your PC to format YYYY-MM-DD

Conditionally required fields

Depending on the activity type, there will be a few conditionally-required fields. To give a simple example - if you’re buying an asset or receiving an airdrop, you’ll need the InOrBuy pairs (InOrBuyAmount and InOrBuyCurrency). If you’re selling an asset or withdrawing some bitcoin to another wallet, you’ll need the OutOrSell fields (OurOrSellAmount + OutOrSellCurrency). More details about the specific conditionally-required fields per activity type can be found in the detailed sections for that type.

  • InOrBuyAmount - In or buy amount as a positive number or 0 [Required for Airdrop, Deposit, Trade, Income, Mining, Gift (from someone), Gambling (proceeds), Unstake, StakingReward, Fork (origin currency amount), FeeRebate, MarginGain, LoanPrincipal and LoanCollateral types]

  • InOrBuyCurrency - In or Buy currency, e.g. BTC [Required where InOrBuyAmount is specified]

  • OutOrSellAmount - Out or Sell amount as a positive number or 0 [Required for Withdrawal, Trade, Gift (to someone), Gambling (placement), Purchase, Stake, Fork (new currency amount) types, MarginLoss, LendingFee, LoanCollateralUnlocked and LoanPrincipalPayment]

  • OutOrSellCurrency - Out or sell currency, e.g. GBP [Required where OutOrSellAmount is specified]

Optional / Specialised fields

  • ValueAmount/ValueCurrency - Only used for receiving a Spouse gift, this is the amount and currency of the value of the gift. For example, if your spouse gifts you 1 BTC they bought for 5,000 GBP, you would use 5000 in the ValueAmount column and GBP in the ValueCurrency column

  • FeeAmount - Fee amount as a positive number, where a fee is applicable

  • FeeCurrency - Fee currency, e.g. GBP, BTC

Manually priced assets

Users can choose to override Recap's pricing engine with a manually entered asset price, this is useful when we are unable to price an asset or you'd like to use a manual price instead of ours. Special Note: Imported prices cannot be edited in Recap once imported. Users should re-import their CSV files if they wish to make adjustments to these prices.

  • PriceAmount - A manual price, for one unit of the asset [Required wherever PriceBaseCurrency and PriceQuoteCurrency are specified]

  • PriceBaseCurrency - The asset you wish to manually price (i.e BTC) [Required wherever PriceAmount and PriceQuoteCurrency are specified]

  • PriceQuoteCurrency - The currency you wish to use to price the base asset. This should always be the same as your tax currency - (i.e. GBP for HMRC, USD for IRS and ZAR for SARS). [Required wherever PriceBaseCurrency and PriceQuoteCurrency are specified]

We maintain this Google Sheet and regularly add notes as we get feedback and make improvements to our example dataset. You can download this as a sample CSV by clicking the button below:

Importing Your CSV Files

Now that you’ve prepared your CSV file with all the transactions in the format(s) shown above, you can set up a custom account in Recap and import your data.

  1. Sign in to Recap and head to the 'Accounts' screen

  2. Press the 'Add Account' button

  3. Choose 'Custom' and press 'Next'

  4. Give the account a name (you can always change this later)

  5. Scroll down to your new account, press the cog icon and choose 'Import Recap CSV'

  6. Select the file and press 'Import'

Did this answer your question?