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.
Fees
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 - The Date of the transaction. We support multiple different date formats, but to avoid ambiguity, we recommend using yyyy-mm-dd hh:mm:ss, e.g. 2021-01-01 23:42:20. When uploaded into Recap, this date will represent a date according to the timezone of your web browser. To eliminate any confusion regarding time zones, consider using an ISO standard date and time format like 2021-01-01T23:42:20Z, where the time zone is explicit.
Supported date formats:
ISO8601 standards where the timezone is explicit:Full UTC: 2020-10-06T17:41:28Z
With Offset: 2020-10-06T17:41:28-09:00
Local date and time formats reflect the timezone settings of your web browser.Local Date Only: 2011-12-03
Local DateTime: 2011-12-03T10:15:30
YYYY-MM-DD HH:mm:ss: 2016-03-11 08:24:43
DD-MM-YYYY HH:mm: 06-10-2020 17:41
DD/MM/YYYY HH:mm: 06/10/2020 17:41
YYYY/MM/DD HH:mm:ss: 2020/10/06 17:41:28
Month DD, YYYY HH:mm AM/PM: January 15, 2021 12:53 AM
Day Mon DD YYYY HH:mm:ss: Mon Oct 31 2017 14:53:18
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.
Sign in to Recap and head to the 'Accounts' screen
Press the 'Add Account' button
Choose 'Custom' and press 'Next'
Give the account a name (you can always change this later)
Scroll down to your new account, press the cog icon and choose 'Import Recap CSV'
Select the file and press 'Import'