Contrasting Bitcoin as an Asset versus a Foreign Currency in the NetSuite Accounting System

This article is relevant if you want to determine the approach to account for digital (crypto) currency, such as bitcoin, in your NetSuite accounting system. For those that regularly read my articles, this post is more in depth.


I have been a blockchain enthusiast since 2011 when I realized that a computer science breakthrough was produced when Satoshi Nakomoto wrote his white paper, “Bitcoin: A Peer-to-Peer Electronic Cash System” in 2008.¬† (note, capital “B” is for Bitcoin the protocol and payment network. Lower case “b” is for bitcoin the currency).

In my mind, an emerging phenomenon in money, recording practices for property rights ownership and social ledger capacities is the natural evolution of globalization and our information age. Respectfully to those that are still wondering, our common sense around the notion of money, how value is created, and how trust is produced generally makes it challenging for bright individuals to understand how this technology works, why it is valuable, and why it would have any significant impact on human endeavors.¬† This article will not try to convince you of the merit of Bitcoin and emerging digital currency and related crypto-assets; as a number of people who know me and after a number of years strongly promoting the reason I feel this growing sector is very important, I now like to say “I’ll let the market produce education on my behalf”.

Differing Philosophies for Bitcoin Accounting Treatment

In 2012, I conceived of the mechanisms to account for bitcoin in the NetSuite ERP system. In my Systems Integration Practice, I architected the Bitcoin Transaction Coordinator¬†and make this available to any NetSuite customer.¬† Given my background in accounting, my experience in NetSuite, and my capacity to invent with software architecture, I boldly pushed to treat bitcoin as both a foreign currency and a payment method in the NetSuite accounting system.¬† In my mind, based on the full vision of Bitcoin white paper, the invention was designed to become a money [side note: historically, all monies voluntarily came into existence first as commodities and eventually into currency as their adoption for indirect trade became wide-spread; see Murray Rothbard, “What has Government Done to our Money”, II. Money in a Free Society, 3. Indirect Exchange].

Furthermore, in 2014, with help from another one of our senior consultants, I lead the creation of a Bitcoin Tranche Manager to produce the architecture for the implementation for Bitpay, the leading bitcoin payment processor.¬† Here again, we firmly used the “Bitcoin as a Foreign Currency” model. The tranche manager allowed our client to shape the gains and losses of their many bitcoin transactions.

I have written a number of reference articles about Bitcoin accounting:

However, not all individuals¬†hold that Bitcoin should be treated as money or a foreign currency and instead feel that it should be treated as an asset, like inventory. For some in the digital currency industry, they trade bitcoin and even fewer mine it into existence.¬† Their orientation is to think of it as a commodity versus something that is used more like a money.¬† Others listen to government declarations¬†for how the asset should be treated as their guide. I understand that orientation and respect that we don’t think of USD as a commodity like we might of when precious metals was money.

Referencing NetSuite and Bitcoin Work from Others

I have¬†seen others in the NetSuite community work to treat “Bitcoin as an Asset”.¬† For example, I watched Guillaume Savoie, Tech Lead at Big Bang ERP, give a presentation at the 2016 NetSuite SuiteWorld on how to treat Bitcoin as an Asset in NetSuite.

When I observe the work required to act with Bitcoin in this manner, it occurs unnatural to me. This is not to critique Guillaume as a professional but to consider that the orientation forces you to create many extra transactions in NetSuite to “get it right”.¬† For the purposes of this article, I am going to reference Guillaume’s presentation¬†to ground my thinking around the “Bitcoin as an Asset” approach.¬† Yet like all things in NetSuite, there are different ways to implement the specific model.

Contrasting the Asset versus Foreign Currency Accounting Problem

More recently, a prospective client came to me looking for leadership with Bitcoin and accounting. They have a strong orientation¬†for using “Bitcoin as an Asset” as they trade it for dollars in their business model. They see sales of bitcoin for dollars as income and that these bitcoin came at an acquisition cost; just like you would treat inventory.¬† As such, they sought to understand¬†how “Bitcoin as a Foreign Currency” would work for them.

Wallets as Bank Accounts to Hold Bitcoin and Foreign Exchange

First, in the “Bitcoin as a Foreign Currency” model, the key to understand the power of this approach, and especially the NetSuite accounting system, is that every transaction that involves bitcoin will be denominated in a foreign currency relative to your local currency (which I will say is USD for this article). Thus, the most important matter to understand is that for any one bitcoin transaction, we get two valuable pieces of information:

  1. Quantity: We know the number of bitcoin affected.
  2. USD Value: We know the USD economic equivalent of that transaction because it is always priced in bitcoin (BTC) to USD.

I can’t overemphasize¬†the meaning of this because it offers that we get all the other benefits of the accounting system such as the natural account, dimensions, and sub ledger capacities which help our reporting and day-to-day accounting operations while we get meaning economic information.

Reconciling Bitcoin Holdings

Next, we need to think seriously about accounting and reconciling our bitcoin holdings. The bitcoin wallet is analogous to a bank account. It is conceivable that when working with bitcoin, you will have multiple wallets; Each of these wallets, just like bank accounts, should regularly be reconciled.  The full benefit of the NetSuite bank account reconciliation module becomes available to you under the foreign currency method.

In contrast, Guillaume’s presentation makes no mention of this real world reconciliation concern. From what I can gather, he is suggesting to use a different item code which could route to a different¬†general ledger account. In Guillaume’s design, he offers the simple solution of using multiple items to hold bitcoin by vocation:

  1. Bitcoin Items for Operating Expenses
  2. Bitcoin Items for Paying Suppliers

Bitcoin is Fungible

But what really throws this off is that bitcoin is fungible — meaning,¬†bitcoin¬†can¬†most easily move between wallets and be used for a wide array of purposes. If you make it a different item for each wallet or perhaps vocation, you break the fundamental tenet of good item design: that all items are indeed distinct. The bitcoin elements are indeed the same thing. In Guillaume’s model, when you want to use bitcoin for different purposes, you effectively need to produce inventory adjustments to move it around.¬† This model sits funny with me.¬† Something tells me we need to look closer and square off on the concern for bitcoin wallet management.

The point here for all “Bitcoin as an Asset” enthusiasts is to think carefully how you are going to reconcile your bitcoin wallets. Are you actually prepared to invent a reconciliation method that mimics a stock ledger count approach when you really could have the formal Blockchain be the real authority for the movement of bitcoin to contrast against your NetSuite transaction ledger? Are you seriously going to consider a NetSuite implementation¬†which¬†won’t get you the benefits of basic account reconciliation?

Financial Tracking of Bitcoin as Inventory

In Guillaume’s presentation, he offers to track Bitcoin as normal inventory items.¬† He needs to fool the NetSuite accounting system to cancel out the affects of Income and COGs accounts by routing these to effectively the same accounts (NetSuite prevents pointing the same account for income and COGS, so¬†Guillaume uses a Bitcoin COGS 1 and a Bitcoin COGS 2 with intention to net them at report time).¬† ¬†Guillaume wants these values to net to zero for his reporting.¬† I suspect there can be other treatments (which the article will later suggest), but the point is, the approach is already showing that we need to do something unnatural in the accounting system.

By contrast, with the “Bitcoin as a Foreign Currency” approach, we simply do not have this concern. We are tracking bitcoin in our wallets which is our real world method for holding them and we will act with them in various ways, like we act with cash.

Buying or Acquiring Bitcoin

In Guillaume’s presentation, he offers to use a purchase order, item receipt or vendor bill, or record a standalone bill to acquire bitcoin. When suggesting to “Write a check with the right Bitcoin item“,¬†this offers¬†that you better know exactly what you are going to do with that specific Bitcoin batch because we just qualified them.

I do like this approach for one good reason: if I want to buy bitcoin, I can use a purchase order to indicate my intent.

In contrast, to acquire bitcoin in the foreign currency approach, we can use a NetSuite bank transfer to move USD from one cash account to the appropriate bitcoin wallet account.  Here is the accounting:

Direct Purchase of 3 Bitcoin using NetSuite Bank Transfer

Dr Bitcoin Hot Wallet Account: 3 BTC (exchange rate 4,000USD/1BTC)

Cr USD Bank Account: 3BTC (NetSuite will automatically make this 12,000USD)

Generating Bitcoin via Mining

In Guillaume’s presentation, he offers to produce an inventory adjustment by selecting the Outside Services expense account as the credit to record the reward for mining. The inventory adjustment then brings in more bitcoin on the target item and you have to come up with a value. While Guillaume does not go into where the value came from, I guess we could use the average cost of the inventory being tracked.

In contrast, here is how we would book the fortunate result of being awarded bitcoin by mining when it is treated as a foreign currency:

Mining 12.5 Bitcoin into Existence using a NetSuite Cash Sale

Dr Bitcoin Mining Wallet: 12.5 BTC (exchange rate 4,000USD/1BTC)

Cr Mining Income Earned: 12.5 BTC (NetSuite will automatically make this 50,000USD)

In my mind, we have a very natural mechanism to record the fruits of our efforts using native transactions.

Earning Bitcoin for Services

Let’s now consider the use case where we are going to perform services and agree to be paid in Bitcoin. We have two situations:

  1. Earning Bitcoin Directly
  2. Earning Bitcoin Indirectly

Earning Bitcoin Directly

In this use case, you agree to work for a specific number bitcoin (assume .5) but you won’t be paid immediately.¬† We denominate in bitcoin foreign currency:

Dr Accounts Receivable: .5 BTC (exchange rate 4,000USD/1BTC)

Cr Services Income: .5 BTC (NetSuite will automatically make this 2,000 USD)

Let’s now say that you are paid a few days later but the price of Bitcoin changed to (4,100USD/1BTC):

Dr Bitcoin Wallet: .5 BTC @ 4,100USD/1BTC

Cr Accounts Receivable: .5 BTC

NetSuite will automatically produce the following USD transaction:

Dr Bitcoin Wallet: 2,050 USD

Cr Accounts Receivable: 2,000 USD
Cr Realized Gain on Foreign Exchange: 50 USD

Earning Bitcoin Indirectly

The more likely case is that you agree to work for USD but you are willing to be paid in Bitcoin. This is a standard practice in my organization.

Using a standard NetSuite invoice, we will book a receivable in local currency:

Dr Accounts Receivable: 2,000 USD

Cr Services Income: 2,000 USD

We agree to be be paid with bitcoin and we later agree to the number of bitcoin that are needed to satisfy the obligation. Thus, we establish a price. Using NetSuite native functionality, here is what to do:

a. Record the payment in USD terms as it is deemed satisfied:

Dr Undeposited Funds: 2,000 USD

Cr Accounts Receivable: 2,000 USD

b. Deposit the funds into the bitcoin wallet:

Dr Bitcoin Wallet: .5 BTC @ 4,000USD/1BTC

Cr Undeposited Funds: .5 BTC

At this point, you may be asking, but wait, the market rate for Bitcoin was 4,100 USD.  No matter: for this transaction, we agreed to be satisfied at 4,000USD/1BTC. We later will account for the differences in bitcoin exchange market rates. It is important to see that we just recorded our acquisition cost at 2,000 USD, not 2,050 USD and we have support for it.

Selling Bitcoin for Currency and Adjusting the Value

Back to Guillaume’s presentation, he offers that you can use an invoice and set the price to record the sale of bitcoin items.¬† In his model, he would like to keep the income and COGs account equal but they will vary for different prices. Here Guillaume is suggesting to adjust the bitcoin value by using a NetSuite Inventory Worksheet to effectively modify the underlying value of the holdings at the date of the transaction. He suggests then using a Gain/Loss account for the change in value.

I see concerns here:

  1. Recognizing Profit / Loss on Sale: this approach gets at the “Bitcoin as Asset” proponents want. By letting the ledger system indicate the rate, and letting the inventory ledger indicate the cost, we can effectively see the transactional profit / loss on sale. However, Guillaume is taking a different approach trying to net them to zero. I am a bit confused on his intent because the differences in the two amounts represent the realized gain/loss on the transaction.
  2. Modifying Inventory Value: using the NetSuite inventory worksheet to adjust the value of the bitcoin is effectively “marking them to market”. While you can do this, you will lose the benefits of holding your specific bitcoin acquisition cost; furthermore, you have the burden of daily updates to the inventory ledger in this manner.

I suspect that we could implement the asset approach in a different manner from Guillaume’s model.¬† However, the illustration allows us¬†to¬†see the concepts come forth using the inventory method.

In contrast, using the foreign currency method, we want to produce this accounting to record selling bitcoin for currency:

Dr Cash in USD
Dr Mining Fee in BTC (Guillaume made no mention of this concern in his presentation)

Cr Bitcoin Wallet in BTC

To produce this using native NetSuite transactions, we can do it in two steps:

Record Sale of Bitcoin to Buyer using NetSuite Bank Transfer

Assuming we are selling .25 Bitcoin at 4,000USD/1BTC

Dr Cash: 1,000 USD

Cr Bitcoin Wallet: .25 BTC at 4,000USD/1BTC

NetSuite’s bank transfer interface easily allows you to indicate the number of dollars received and the number of bitcoin you have used to back into the exchange rate.

We now need to record the Bitcoin payment processing fees (called mining fees) as an expense. This can easily be done using a write check function. Ideally, we can use the exchange rate that was provided to us in the previous step.

Dr Mining Fee in BTC

Cr Bitcoin Wallet in BTC

Considerations for Reporting Profitability in Sales

Under this foreign currency approach, it is not immediately easy to see the profitability in the sale of the Bitcoin.¬† The “Bitcoin as an Asset” proponents appropriately ask, “how do¬†I see profitability in my Bitcoin sales?”.

We must now ask some questions which gets into interesting accounting / economic philosophy:

  1. Did my bitcoin sales at a specific price result in margin because of my superior ability to markup and trade?
  2. Did the larger market for trading of bitcoin result in passive margin and hence, when I sold it, it was really simply fair market value being realized?
  3. Shall I separate my gross margin on sales work (from which I had control) from market phenomenon (from which I had no control) on the specific sale? Consider a Bitcoin ATM company that marks up the rate they sell bitcoin a few percent to cover their selling costs. If deliberate in the design of your accounting, these earned elements certainly could be identified.
  4. Do I want to shape the amount of gain / loss in my selling efforts because there are different tax treatments? As a side note, for US tax purposes, if you treat the asset as inventory, then sales are considered ordinary gains and losses. Whereas, if you treat bitcoin as a capital asset, it is subject to long-term and short-term tax treatment.

In my observation, each organization has their own treatment considerations. What is a fundamental concern is to find older acquisitions to effectively match the amounts and determine the gain/loss; although averaging methods reduces the matching effort burden.

Matching Bitcoin Sales with Acquisitions

Under the “Bitcoin as an Asset” approach, you definitely¬†can use the inventory ledger to match up transactions and contrast income to costs. Guillaume did not really offer specific thinking though he does make mention of average cost. I probably would suggest using Lot Based Inventory methods so that we can hold cost layers. Yet, in day-to-day NetSuite usage, Lot Based Inventory invites challenging requirements to identify the specific lot as you transact — not always something easy to know for the average bookkeeper.

Under the “Bitcoin as a Foreign Currency” approach, there is no native NetSuite offer. While we could create a matching table that helps us link all the outbound bitcoin to the inbound bitcoin, the key point is that we would need to do some work (ah, a future innovation for the community). This transaction pattern matching is common in stock trading systems. The good news is that it is easy to get all your bitcoin transactions out of NetSuite. Because every single Bitcoin wallet transaction is priced and qualified by nature, we know exactly the information needed to derive our margin calculation. I would propose that at the end of¬†each accounting period, when the shape of margin is calculated per policy, we book an entry to record realized gains / losses to drive our financial reporting.

Adjusting Bitcoin Value for Market Prices

Under the “Bitcoin as an Asset” approach, Guillaume offered to use a NetSuite inventory adjustment. I already shared that I think this is cumbersome.¬† In addition, it “marks them market” which obscures our book value requirements for subsequent margin analysis previously discussed.

Under the “Bitcoin as a Foreign Currency”, we leverage NetSuite’s built-in capacity to hold a daily foreign exchange rate (our Bitcoin Transaction Coordinator automatically feeds the daily exchange rate). Then, we use NetSuite’s built-in Revalue Open Currency Balances feature which will automatically record a reversing unrealized gain/loss entry to mark them to market.¬† We don’t ever lose the book value of these assets under this approach.

Using Bitcoin for Payments

What’s ironic is that proponents for “Bitcoin as an Asset” will also want to use their bitcoin to pay for goods and services. In practical use, it then is closer to a money when they do this. Guillaume offers that we need to create inventory adjustments to a bank clearing account to get bitcoin to act as money.

There is not much to say here if we are treating bitcoin as a foreign currency. While there may be some nuance in moving between traditional government backed currencies and digital currency, the whole point is that it is the same treatment you would use if you were using Euros to pay a bill in USD.  See my article, Best Practice: How to Pay a NetSuite Vendor Bill with Foreign Currency.

Bitcoin Financial Reporting

Under the “Bitcoin as an Asset” approach, the bitcoin will be held as a USD balance in the inventory account. When reviewing your balance sheet, you will know the USD value but you will not know the quantity of bitcoin. You will need to run an inventory ledger to get that information.

Under the “Bitcoin as Foreign Currency” approach, we can expose both the USD and foreign currency information on the balance sheet and see exactly the number of bitcoin held; just like we would see the number of other foreign currencies.

Summary Consideration

I am bias to the “Bitcoin as a Foreign Currency” method of accounting given all the investments I have made to understand and offer solutions under this method. The key questions under the “Considerations for Reporting Profitability in Sales” section must be answered for anyone who is going to work with Bitcoin or digital currency in their NetSuite accounting system.¬† Don’t forget to ask how you are going to reconcile your Bitcoin wallets.¬† My instinct is that many conflate market phenomenon and results based on their own efforts.¬† Yet, I suspect some don’t care.

Nonetheless, there will be a day-to-day impact in the use of digital currency in your NetSuite accounting system.¬† My instinct is that the “Bitcoin as Foreign Currency” allows us to leverage many of the NetSuite built-in tools; and the same power of the platform that allowed me to create and deliver the Bitcoin Transaction Coordinator can be used to further automate the business model.

If you are looking for leadership in digital currency and the NetSuite platform, let’s have a conversation.

Be Sociable, Share!

Marty Zigman

Holding all three official certifications, Marty is Southern California's NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. He is a former Deloitte & Touche CPA and has held CTO roles. For over 25 years, Marty has produced leadership in ERP, CRM and eCommerce business systems. Contact Marty to set up a conversation.

More Posts - Website - Twitter - Facebook - LinkedIn - Google Plus - YouTube

| Category: Accounting, NetSuite, Strategy | Leave a comment

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>