How to calculate your Bitcoin gains and taxes with Luno


This is a work in progress. Please send me feedback if you have any questions, updates or spot any mistakes. I’ll update this and the demo spreadsheet as things evolve.

Odds are that if you’re an early Bitcoin adopter – tinkering, investing or otherwise getting involved in the industry, anytime before October 2017 – your digital tokens have probably increased quite a bit in value. And, unless you really have HODL nerves of steel and managed to ignore all the sensational and panic-inducing news, you probably sold some of it (hopefully for a handsome gain).

Many people, myself included, found themselves in a peculiar situation: we made some money (not crazy amounts, but enough to start worrying about our tax compliance status), and even if we don’t always love paying over taxes, it’s a whole lot easier to do so than going to jail.  The problem for most of us is that we’re just not sure how much (or little) exactly we’ve made.

This article is probably of most use to people in South Africa, where I’m from, but people from Luno’s other countries of operation –Malaysia, Nigeria, Indonesia, Britain and the Eurozone–  may also find it useful. I’ll include some extra information on how to make those calculations if you’ve also traded on other platforms at a later stage.

This is going to be a long piece. Grab yourself a cup of coffee and follow through until the end. ☕️


Step one: Hire a professional

I’ll start with a big disclaimer: this article is not legal, financial or tax advice. These are my personal opinions and experience. You should, like me, employ an accounting and/or tax professional to help you stay compliant. It’s all good and well to read informative articles about how to treat a wound, but you would still see a medical professional if it was severe enough.

Every person’s situation, income and therefore tax treatment are technically unique. You might fall into a higher or a lower tax bracket due to other circumstances (like age and income). You might need to register for provisional filing – where you need to file more than once per year – or maybe you can get away by just doing so once a year. You might be eligible to make certain deductions. You might need to pay capital gains tax (unlikely) or income tax (very likely). Get a professional with experience in digital currencies to help you make sense of your tax affairs.

Since so many people asked: I have been very happy with the South African Business Accounting Network. I filled out a form on their site stating my accounting needs and they matched me with a professional accountant that I’ve used for years now (she’s unfortunately at-capacity and not looking for more clients). Since it’s a network of accountants, results might vary, but you can always ask for a replacement. My favourite part was that all of their accountants were able to meet in person or –even better for me– online and that I have been able to do everything via email ever since.

Download your statements

You can now export your trading statements for a defined period of time, on each of your digital and local currency wallets, which makes the whole process a whole lot easier. This is, at the time of writing, only available from the Luno website (not the mobile app).

Luno wallet statements

  1. Navigate to your Luno account, select Wallets > BTC wallet > Transactions > Download statement
    (Or go here:
  2. Select the time range. The South African tax year runs from the first day of March until the last day of February each year, so I’ll select that.
  3. Repeat this process for each of the wallets you have. These may include your local currency wallets (ZAR, EUR, MYR, NGN, IDR and SGD) and your digital currency wallets (BTC, BCH and ETH).
  4. If the files are in .ZIP format, you’ll need to extract them first to get the .CSV (comma separated value) files

Import and fix your statements

You are welcome to use any other spreadsheet tool (MS Excel, Apple Numbers, LibreOffice). I simply use Google Sheets because it’s easier to share things with my accountant this way.

The Luno statements have most of the information we require, but there are a few (annoying) things we’ll need to manually calculate. These include the transaction types (so that we can filter for all “Bitcoin send” transactions, for instance), and the local currency value of the fees we incurred (since these may be tax deductible).

(Note: you can compare your spreadsheet with this demo sheet).

Importing your BTC wallet statement

  1. Navigate to
  2. Create a new blank spreadsheet
  3. Give the spreadsheet a snappy title (top of page)
  4. Rename the tab (at the bottom of the page) to BTC
  5. Navigate to cell A1 in the current tab
  6. Click File > Import > Upload
  7. Upload your first .CSV file (not the .ZIP ones)
  8. Select “Replace data at selected cell” (cell A1)

Google sheets should give you something that looks like this:
Bitcoin trading sheet

Making sense of the BTC transaction descriptions

As mentioned above, Luno doesn’t have a field for what transaction type you completed. They give a text description of each transaction (like “Sold 0.000596 BTC/ZAR @ 17,219”) but not a field that just says “Sell” for all transactions where you sold some BTC. So, let’s add them manually.

  1. Select all the data in the sheet
  2. Click the add filter button (or select Data > Filter in Google Sheets)
  3. Select the filter dropdown caret on the Description column
  4. Select Filter by condition > Text starts with > Bought > OK
    Google sheets filter
    This will only show you a list of all your BUY transactions.
  5. Insert a column to the right of Description and call it Transaction
  6. Copy-and-paste BUY into all the visible fields down. This will allow you to filter the Transaction column in future to isolate only your BTC purchases.
    BUY transactions

Here’s a quick animation, if you’re still confused:


Repeat this process for your SELL transactions, by changing the filter in the Description column to text that starts with “Sold”. I’ll call this transaction SELL:
SELL transactions
Keep checking your Description field (you might have to disable and reenable the Filter by clicking it twice) and add a transaction type for each line.

Note that If you entered a description in your Luno transaction, say, when you sent money to a hardware wallet and you gave it the description “Savings to Trezor”, it won’t start with the “Sent Bitcoin to xxx” text string. Yes, you will need to manually review all of your transactions. Not ideal.

You may end up, like me, with following transaction types:

  • BUY
  • SELL
  • SENT

The most important things are buys and sells (acquisition and disposal of an asset in a local/fiat currency) and the relevant fees you might be able to deduct (some charged in a local currency, others in digital currency which we’ll need to convert to local currency). I completely disregard reserved and released payments. Deposits, withdrawals, send, and receive transactions aren’t taxable events if it’s just the movement of your own capital or trading stock, but it’s probably still good to know how much you’ve moved around in the year. If other people sent you crypto in exchange for goods or services rendered (i.e. as a payment for something you did or sold) or vice versa (you paying them), then you will need to separately mark those send and receive transactions, as they could be considered income or expenditure.

Repeat for all other currency statements

Add additional tabs at the bottom of the page by clicking the plus button for all of the wallets you have on Luno. Give it the name of your second currency wallet (say, ETH, ZAR, MYR, EUR etc.) and repeat the process we did on our BTC wallet above by a) adding the trading data, b) filtering the description field and c) adding a transaction type for each transaction.

Add tab

Once done, we’ll be able to filter for the transaction types on each wallet.

Fix the date

Luno trading statements give very detailed timestamps, which is handy if you’re an active trader, but can make for tricky filtering if you’re using a big time range. Since I do quarterly (or annual) accounting, I simply change the format to show the month. Note that this still retains the detailed timestamp when you click on the date, it just displays it in a bit more accountant-friendly format.

  1. Select all of the fields in the Timestamp column (column C)
  2. Format > Number > More formats > More date and time formats
  3. Select the “Aug-1930” (MMM-YYYY) format (or similar) and click apply

Filtered date

You’ll now be able to play around with the data even more, by filtering, say, only the BUY transactions in March, 2017.  If you want to earn your Bitcoin black belt, you’ll need to learn how to use pivot tables, however. So…

Let’s pivot!

Select all the fields in your first wallet tab (say, your BTC wallet’s tab) by hitting CTRL-A twice.

Select Data > Pivot table. You’ll be taken to a new tab where we’ll create the pivot table.

Use the following:

  • Add Transactions as the Rows
  • Add Currency as the Columns
  • Add Balance delta as the Values (summarised as Sum — meaning they are added together)

Pivot details

Optionally, you can add a filter on Timestamp to show only a certain month, instead of data on your entire year of trading. Again, look at my demo sheet to see how it should look.

Fix the fees

You should now see a summary of your BTC trades that might look like this:

Fees pivot

This is already a nice summary of our trades. This only solves half of our accounting problems, since all the values are in BTC. It’s great to know that you bought a total of, say, 4.12 BTC over the past year, but you still don’t know what you paid (in your local currency for it).

Let’s take it step by step:

First, we need to focus on the fees. It’s nice to see a summary of the fees you paid, but again, they are levied in BTC and you can’t do proper accounting in digital currency, you’ll need to get a fair price for it in your local currency. You can also, depending on your tax situation, deduct fees as a trading expense from your trading income – speak to your accountant.

Go back to the tab with the BTC trades and filter in your Transaction column for the transaction types that incurred a fee and hit OK:

Fees filter

You’ll notice the sheet has a column for “Value” (column M on my sheet) provided by Luno, which shows a text summary of what the fee was that you paid, calculated as the amount of BTC at the exchange rate at the time of trading. This is what it shows on three hypothetical trading fee transactions:

Fee values in spreadsheet

This means I paid an equivalent of ZAR 1.52, ZAR 124.44 and ZAR 0.06 in fees on those three dates. But since they’re in text format (with other information in the field), I can’t easily add them up.

Add a column to the right of “Value” and call it “Trim” (you might need to disable your filter first). Use the following formula to trim out the trailing space and bracket (basically, everything after the local currency amount), where field M20 is our Value column, below:


Your Trim column should look like this:

Trim field

Now, give column O the title of Prepend, where we’ll remove the prepended currency information. Since they are all 5 characters (one tilde, three for “ZAR” and one for the trailing space), we can use the formula:


Prepend field

Note that you might need to change the data in Prepend to numbers, since Google Sheets might still read it as text.

Create (yet another) column called “Local currency value” (column P). Copy all the fields in Trim and using paste special to paste the values only in the Local currency value column:

Paste special

You will also need to reformat it as number by selecting all the fields in Local currency value and selecting Format > Number > Number.

It should now look something like this:

Local currency value

If you only have a handful of these “Value” descriptions, you might find it faster to just write or copy them out manually, rather than using these formula hacks of mine 👆.

Pivot your fees

Note that this is how to create a pivot just for your fees. My demo sheet has these incorporated into a single view, but it is still useful to know how to do it.

Since we added some columns (N, O and P) it’s a good idea to go and remove the filter and make sure it is applied on all the new fields.

Select all the data in the sheet once more and click Data > Pivot table again.

Set your pivot table up with the following parameters:


  • Transactions as the Rows
    Pivot of fees


  • Balance delta and Local currency value as the Values
  • Optionally add a filter to only show the relevant transactions, by excluding blank values for Local currency value
    Remove zero values

You should now see the summary of the fees in local currency you can (probably) deduct from your trading income. Note that you might want to manipulate your data to show your local currency values as negative numbers (since it was an expense you paid, you’ll deduct it).

Fee pivot final

The SUM of Balance delta will show the amount of BTC you paid in fees. The SUM of Local currency value will show how much that BTC was worth in local currency at the time of the trade.

Note that there isn’t (at time of writing) an easy way to see the local currency value of your BTC deposit fees (0.0002 BTC at the time of writing). You might have to use the average BTC/ZAR exchange rate on the date the deposit fees were charged, if you had a large amount of these. Since I had very few deposits, I’m just disregarding them, since it’s too much of a headache for me to calculate and deduct these trivial amounts.

In summary

Add the sum of what you received in local currency, like when you sold digital currency, received promo amounts of money or got paid for selling goods or providing a service (income) and deduct from that the sum of what you paid to acquire it, the purchase price, trading fees, deposit fees and so on (expenses). The difference between the two is either a reportable income/loss (or capital gains/loss).

Demo sheet

As mentioned (many times) above, I created a demo spreadsheet to show you what the completed document might look like. Have a look at it and fiddle with the formulas. Click on File > Save a copy to edit it with your own info.

Completed demo sheet


Some final thoughts

Again, speak to a tax professional, but here are a few things I’ve found from conversations with tax professionals in different countries:

  • Generally speaking, if you buy something – anything – and sell it at a higher price, you will be taxed on the gains. Discuss your situation with your tax professional. Disagreeing with what happens with the taxes you pay is a political discussion. Not paying taxes is a very different legal (or criminal) discussion.
  • This article focused on trading gains, but trading losses are also reportable. You might be able to offset other income tax (say,  income tax paid from your salary) when you incurred trading losses. Ask your accountant.
  • You may end up with a scenario where you sold more crypto in a tax year than you have bought (e.g. sold 2 BTC for a lot of local currency but you didn’t buy any or bought a small amount). If you’ve never accounted for those, you will need to repeat the same thing for the previous tax year (i.e. go and figure out the purchase price of the asset). If you don’t do that, your bookkeeping will show that you sold 2 BTC (for a lot of money, I hope) but that there is no acquisition price (in other words: zero) which translates into a large taxable gain. Go figure out what the purchase price of your crypto was.
  • You may also end up with a scenario where you bought exclusively in a tax year (or just bought more than you sold). This will likely mean that you will see a large trading loss carried over to the next year. When you sell in the following tax year(s), you will already have accounted for the purchase of your crypto and the losses from this year will be carried over and deducted from your gains in the following year.
  • Some countries allow you to do inventory management using either first-in-first-out (FIFO) or last-in-first-out (LIFO) methods of pricing. You’ll probably have to use FIFO, but ask your accountant. If, for instance, you bought your first 1 BTC on 1 January 2015 at $100, your second 1 BTC on 1 January 2017 at $10,000 and then sold 1 BTC on 2 January 2017 at $10,001, you probably can’t claim that you only made $1 in trading gains as per LIFO (“selling yesterday’s bitcoin today” $10,001 – $10,000) but that you made $9,901, as per FIFO (“selling my old bitcoin today” $10,001 – $100).
  • Sending and receiving money you own (say, between your cheque account and your savings account, even if at different banks) are not taxable events. Sending and receiving your own digital currency, say, between your Luno wallet and your hardware wallet or another exchange, are not considered taxable events. Somewhat related: note that it seems the South African Reserve Bank isn’t comfortable with digital assets being sent from a South African platform (like Luno) to an international one (like Binance).
  • Local currency (ZAR, EUR etc.) deposits and withdrawals from your bank account to a shares trading platform (EasyEquities, RobinHood etc.) are not taxable events. Making deposits and withdrawals to and from Luno are not considered taxable events.
  • The date when you bought and sold assets (like Bitcoin) are important events when it comes to calculating gains or losses (and therefore taxes). When you purchase Bitcoin you incurred an expense (the cost of the digital currency including the fees to acquire it). When you sell that Bitcoin, you may realised an income or a loss (minus the trading fees). The difference between these income and expenses is how much you made (or lost) and how much income tax you need to pay.
  • When you trade on equity trading platforms, there are certain deductions you might be able to make (which add to the cost of acquiring and/or disposing the asset and reduces the taxes you need to pay). Trading fees are generally considered deductible. Speak to your tax professional about these and about other fees like custodial fees (keeping your digital currency securely stored) or transactional fees (fees levied by banks, digital currency platforms or the Bitcoin network for sending and receiving money or making deposits and withdrawals).
  • Generally speaking, If you purchase and sell equities on a trading platform with the goal of realising short term gains (usually seen as anything less than three years in South Africa), income tax rates will apply. If you bought some equities with a “get it and forget it” mindset and sold it more than three years later (without any other active trading in-between), capital gains tax (or CGT) will apply. CGT is usually at a lower tax rate than income tax. Speak to a tax professional if you really think you can prove that CGT applies to you (if you bought Bitcoin in 2013 and sent it to a hardware wallet and you didn’t touch it for many years before disposing of it, you might have a case). Odds are that if you are reading this, you are a trader or speculator and that income tax will apply.
  • If you bought Bitcoin and used it to buy something (say a car), that date will be considered the disposal of your Bitcoin.  It is still considered a taxable event. These probably fall under the Sars “barter rules”. You will need to price the disposal of the BTC at a “fair market value”, which will probably be the price that Bitcoin was trading at at that exact time. This might be easy to calculate on a big ticket item like a car or a house, but it can quickly become a nightmare if you made lots of small daily purchases buying coffees using Bitcoin.
  • If you are a Bitcoin miner in South Africa, you will need to pay income tax. Again, please read SARS’s stance on the tax treatment of cryptocurrencies.
  • If you purchase or dispose of items in a foreign currency –say, buying software with US dollars overseas and selling it locally in South African rand– Sars allows you to use spot rates at either the end of the day of the transaction or the average rate at the end of the month of the transaction. You should, however, use the one or the other exchange rate consistently throughout your books. With the recent rand-to-dollar volatility, many businesses make their calculations using both the daily and monthly rate and see which one has the best tax advantage for them. This probably doesn’t apply to Bitcoin, which is a) incredibly volatile (so the exchange rate changes by a big amount each day, week and month) and b) unlike big local currencies like USD and EUR, the Bitcoin exchange rate isn’t provided by Sars. I suggest that you use the exchange rate at the exact time of transacting as provided by the Luno trading statements.
  • If you traded on other Bitcoin platforms in a currency pair that isn’t your home currency (say, trading the BTC-USD pair on Coinbase) you probably still have to pay income tax on the income derived. Speak to your tax professional. You’ll need to calculate the acquisition price (trading buys), the disposal price (trading sells) and relevant deductions (fees) into South African rand, the currency where you have a tax liability.

Did you make some money with digital currency and paid your taxes? Did you experience any issues? Did you spot an error in this article? Please let me know in the comments below, or send me a private message, above 🙏

Thanks for reading!


About the author

Werner van Rooyen

Formerly Business Development and Marketing at Luno (where we went from eight nerds in a tiny office to hundreds of people spread over three continents) and before that Marketing at PayFast. Currently investing, paragliding, and doing research, mostly in Mexico.


  • Werner
    One question, if you exchange bitcoin for eth is that a taxable event or only when you sell it back to ZAR. I need some clarity of exchanging one crypto currency for another.

    Thank you

    • Ah, that’s an excellent question, Christo. It also doesn’t seem to be one of the four scenarios Sars outlines in their statement on tax treatment of cryptocurrencies.

      (Disclaimer: all this is my opinion and not advice)

      My guess (and, ahem, steer clear of anyone’s advice when they’re guessing, including me, ask a qualified accountant instead) is that Sars might see it as a taxable event (the two cryptocurrencies still have a rand-value, even if there isn’t an invoice or a receipt for them that is rand-denominated), meaning you’ll have to account for the transactions at the fair market value at the time of acquisition and disposal and then use that as your taxable gain, income or loss.

      Actually, thinking about it a bit longer, they should even out, right? Let me sketch a scenario: say you sold 1 BTC (which you bought for R5,000 a year ago, but it’s currently worth R10,000) for 10 ETH on Mar 1 you will have acquired 10 ETH of trading stock at a fair-market value of R10,000 and then on Oct 1 you sold your ETH for 2 BTC (worth R20,000) again you would have disposed of your 10 ETH trading stock at a fair-market value of R40,000. You are now just holding the 2 BTC.

      So, the acquisition and selling price of the two crypto-pairs should logically always even out:

        1 BTC was acquired for -R5,000 and disposed of for R10,000.
        10 ETH was acquired for -R10,000 and disposed of for R40,000.
        2 BTC was acquired for -R40,000

      This means you still only had an acquisition cost of -R5,000 for your crypto trading stock (which is worth a lot more now). When you sell your 2 BTC (at current value for 2xR20,000=R40,000) you would have incurred a gains of R35,000. But if you’re just sitting on your trading stock (or trading it for other cryptocurrencies), there doesn’t seem to be a taxable event yet.

      Update. I checked with an accountant and here was their input:
      I don’t think this triggers a taxable event.
      If we were to take it into account:

        When one crypto-currency is swapped for another (e.g. selling BTC to buy ETH), we could translate this to a ZAR value at that date.
        This would then be the selling price of the BTC, but would also be the purchase price of the ETH at the same date.
        When the ETH is eventually sold, this “purchase price” would be a deduction, so the net effect of the “non-cash” transaction is zero in any case.

      Hope this helps? I suggest reaching out to more accountants (and fewer unqualified crypto-enthusiasts like me, hah!) and please let me know if they agree with my thoughts above.


  • What happens if you buy bitcoin and send to someone who will trade it for you after some time that person tell you that the profit is on but you have to pay R 20 000 to upgrade your account and be able to get your profit?

  • I have an issue. I invested in Luno and now when I must make withdrawal of my returns, they say I must pay inter bank taxes of R1000 .

    • That is false. If someone is telling you to pay taxes on your gains, you probably signed up with a scam, gave them money and now they’re trying to scam you out of more money. The only way to buy digital currency with Luno, is if you have an account with Luno. If you have an account with Luno (you can try to sign in or do a password reset at and you deposited money to Luno and then used that money to buy digital currency, well, that digital currency will show in your Luno account. Please be careful and make sure you are only working directly with Luno.

  • Werner

    Thank you for the very helpful info.
    How would you calculate your cost if BC was purchased in a different currency than Rand? I.e I bought BC in Euros , send that BC to my luno account and sold for Rands.


    • Hey, thanks for the message! Note that my input is my personal opinion/research, I always advise people to get a tax professional to help them out.

      Sars requires you to convert foreign currencies to rand according to their average exchange rates. This can either be a) the exchange rate at the end of the day, the spot rate or b) the exchange rate average for that month, as provided by Sars and you can download from their site.

      Personally, I get the exchange rate history (per day) between, say, ZAR and EUR and put it in a spreadsheet tab (if you get audited, they will want to see what exchange rates you used for your calculations). Then I convert all non-ZAR transactions (like 1 BTC bought with 10,000 EUR) into ZAR, according to the exchange rate on that day. I use the VLOOKUP formula to match the date on say, the CSV export of my EUR/BTC transactions with the exchange rate between EUR/ZAR on the date of the transaction. (If you don’t have a lot of transactions, you could just manually do it).

      In your case it would be (with simplified numbers):
      Bought one BTC: -EUR 10,000
      Minus trading fees: -EUR 10 (things like taker fees, deposit/withdrawal fees)
      Total cost: -EUR 10,010
      Total EUR cost converted into total ZAR cost: -ZAR 200,200
      (👆 at the spot rate on the day the trade happened or the monthly average in which the trade happened)
      Sold one BTC: +ZAR 230,000
      Minus trading fees: -ZAR 2,300
      Total income: +ZAR 227,720
      Difference between acquisition and disposal
      +ZAR 227,720 – ZAR 200,200 = ZAR 27,520

      That ZAR 27,520 is your gain in ZAR then even though it was in different currencies (it could, of course, also be a loss). The sum of all your gains (or losses) in ZAR, is what should be declared.

      I know that some people/companies first crunch the numbers with the spot exchange rate on the day of the transaction, then they run the numbers with the Sars average monthly exchange rate, since sometimes their taxable gains are lower with the one or the other. You’re allowed to pick the one that’s easiest (or, in fact, most beneficial) to you, but you’re not allowed to use the spot rate for some transactions and the monthly average for others.

      I also spoke to a tax professional about just using the average fiat-crypto exchange rate for a month (say, the average exchange rate between EUR and BTC in January 2020 — like you could for ZAR-EUR according to Sars’ rules) and they said that I shouldn’t even consider it, due to the wild fluctuations of crypto each month. It will just look like you’re trying to manipulate your books in your own favour (at the expense of the country’s revenue services). So, now I just use the daily exchange rate for all calculations (be it ZAR-BTC or ZAR-EUR etc.).

      Hope this helps.

      • Hey. Thanks for the quick response.
        I have one more question regarding the spot rate to used in my calculations. Am i correct in using the closing spot Sell rate quoted by an authorized dealer e.g Std Bank for a specific day. There is a big difference between SARS average rates and the bank selling rates on a specific day . Using SARS rates bring my cost down leading to higher profits,leading to higher taxes. Using the banks spot selling rates for a specific day does the opposite.

        • Yeah, that’s the reason why companies run both numbers — sometimes it’s more beneficial to use the daily forex spot rates, sometimes it’s more beneficial to use the Sars-provided monthly average. I asked my accountant originally which exact daily spot rates to use. I used Oanda’s EUR-ZAR and USD-ZAR at the time and was also uncertain about which “official” one to use and they indicated that the ones I was consistently using (be it, Bloomberg, Standard Bank, Google finance etc.) should be fine.

          I have since moved over to Google Finance (since I use Google Sheets) and it’s much faster to pull in the FX rates with a formula. In your case, paste this in Sheets to see the EUR-ZAR forex rates for the last year. You might need to fiddle with the format or copy it to a plain text file and reimport it to use the =VLOOKUP feature to match a crypto-EUR transaction date with the relevant ZAR-EUR exchange rate, but it should have the rates.
          =GOOGLEFINANCE("CURRENCY:EURZAR", "price", DATE(2019,3,1), DATE(2020,2,29), "DAILY")


  • Hi Werner – thanks for your good efforts at demystifying cryptocurrency. What would your view be on SARS treatment of cryptocurrency donations (private – between family members) ?

    • Hey Pieter, thanks for the kind words. I’ll start by saying this isn’t tax or legal advice, only my opinions, you should always seek professional counsel. That out of the way, I know that Sars is crystal clear about donations — of any kind, cryptocurrency or otherwise. The short of it is that if you are tax resident you need to pay a 20% donation tax (up until R30m donated, then it becomes 25%) on anything you give away.

      There are some notable exclusions/discounts to take note of:

      • R100,000 per tax year can be given away tax free (so don’t donate more than this in total — the sum of crypto plus other assets — to family members per year)
      • You can donate to a spouse tax free.
      • There are some tax benefits when donating to a registered NPO (very few of which will/can accept crypto, so best use normal fiat currency) and won’t eat into your R100,000 allowance

      Hope this helps!

  • Hi Werner, thanks for all the info

    From what I understand, in the end SARS will tax you on the total gain/loss for the year?

    Say I deposited R2000 into my Luno account and started trading daily, making small gains/losses. Over a year I say have a net profit of R1000. I then withdraw the R3000, and pay tax only on the R1000 gain?

    I understand that they then will want to see the whole transaction log for each transaction if I’m audited

    • I should start by saying that if you made any significant gains, talk to an accountant (they’re surprisingly affordable and useful).

      My inputs, however: Yes that’s how I understand it, SARS doesn’t/shouldn’t care how much you deposit or withdraw, they care about taxable gains/losses.

      The easiest way to calculate your gains/losses (and what will be asked for by your accountant AND when you get an audit) is to add all your expenses in ZAR (cost of buying of crypto assets, fees for buying and selling the assets) and add up all your income (income from selling crypto assets, asset forks, promo referral amounts). The difference between the two should be a taxable gain or a taxable loss. If you disposed of an asset in the current tax year (say, you sold 1 BTC this year for +R800,000), but you bought it in the current or any previous tax year (say, you bought it for -R750,000), the R50,000 will be added to your taxable income.

      If you traded like in the above example, you might not have to pay (or file for) income tax if you had no other income since the tax threshold is higher (the amount of income you need before needing to pay tax). Also note that if you are actively trading (anything, it can be crypto or cars or whatever) then you’ll most likely be liable for income tax rates. If you bought something (anything, again like crypto or a car) a long time ago, left it for a while and then decided to sell it, you’ll most likely be liable for capital gains tax (again, you get a big annual exclusion, and the rates are different).

  • Hey, let’s say I only buy Bitcoin and I send it to a professional to trade it on my behalf and they send me profit in Bitcoins, if I cash that out into my local currency will I have to pay taxes on it?

    Same applies with forex trading if a professional is trading on my behalf and they send me profits do I have to pay taxes? If so how do I pay them?

    • If you’re making money (either through a broker or by yourself) you need to declare gains/losses. The bigger problem is that if you say you plan to “send it to a professional to trade” odds are REALLY high that you are going to get scammed out of your money. I have been following the industry since pretty much the beginning, I have heard so many stories over the years of people sending money to someone to “trade on their behalf” and all of them (I mean it, 100% of them) lost their money. Beware.

  • Hi Werner, great practical article to get us started with tax calculations, thanks man!

    I am trying to wrap my head around the complex task of calculating using FIFO. I can imagine that many are in the same boat as me in that we started playing around in 2017 with little bits here and there because it was so easy to trade (and fun!), and then stagnated when the market crashed, only to start up again later.

    So like you mention, some years you bought more, some years sold more. The problem for me is working out the purchase price as I didn’t buy and sell in whole numbers. My guess, for simplicity sake, is that if say I bought 1 BTC in 2017 for R1000, and then sold 0.2 BTC in Mar 2018, another 0.5 BTC in July 2018, and finally 0.2 BTC in Sept 2018, then for my tax calculations, the purchase price for all 3 sales must be based on this first 1 BTC? Now since I have only accounted for 0.9 BTC of the 1 BTC, I must still use 0.1 BTC purchase price against the next sale. To complicate things more, if say I bought another 0.1 BTC now in March 2019, and then decided to sell all my remaining crypto in May 2019 i.e. all 0.2 BTC, in terms of FIFO, I now have two purchase prices to look at, the 0.1 BTC remaining for the first 1 BTC I bought, and now this latest 0.1 BTC purchase price??!

    Am I over complicating things, have I got this FIFO thing wrong? (and for most of us this is way worse, as there are lots of sales and purchases, and in much smaller denominations of BTC!)


    • Hey Shaun!
      Yeah, I don’t think you need to over-complicate it :-p

      Just have a deeper dive into the article and create a sheet that sums things up as follow:
      YEAR 1 Total income (meaning all sales of crypto) in ZAR and Total expenditure (all purchases and fees) in ZAR
      Y2 Income and expenditure
      Y3 Income and expenditure

      For each tax year, you’ll have a certain balance of crypto (“trading stock”) that goes up and down each year. These form part of your assets (but in SA you don’t need to declare asssets with normal tax filing, the same way that you don’t declare the value of your car or your house each filing season). The only things to focus on are the money you spent (fees and purchases) and the money you got (sales) and that might translate into a taxable gain (on which you’ll probably need to pay income tax) or a loss (which may be offset against other income or carried over to the next year’s trading gains).

      Other than a solid spreadsheet and patiently working through it, a good accountant will be a good spend of money. I got mine on Best of luck!

About me

Werner van Rooyen

Formerly Business Development and Marketing at Luno (where we went from eight nerds in a tiny office to hundreds of people spread over three continents) and before that Marketing at PayFast. Currently investing, paragliding, and doing research, mostly in Mexico.