Step by Step: Accounting for Bitcoin as Foreign Currency

This article is relevant if you are interested in understanding how to account for Bitcoin using foreign currency concepts.


While in a number of conversations with business people on how the Bitcoin Transaction Coordinator for NetSuite works, accounting questions frequently come up.  Many folks are naturally concerned about the tax implications of their bitcoin trades. I try not to comment specifically on this because the situation is different depending on the country you reside and your tax status. 

However, what I can say is the that Bitcoin Transaction Coordinator for NetSuite treats Bitcoin transactions as a foreign currency. In doing so, the full capacities of the accounting platform become available to account for the economic performance including bookkeeping for both realized and unrealized gains and losses. If it were not for tax considerations, I believe this would be the best practice to account for Bitcoin transactions as it appropriately allows business people to make financial reporting assessments which steer profitable action.

Accounting Scenario

In order to demonstrate the accounting, I have created a fictitious transaction as follows:

  1. Invoice in Local Currency (USD): We will start with an invoice denominated in USD. However, in practice, we may start with a Sales Order — we also could have denominated the transaction in Bitcoin. A Sales Order approach simply means that we will recognize revenue when we ship goods or deliver services. The delivery of services is usually signified by creating an Invoice which is a demand for payment. We elected to denominate in USD because most business people have indicated that today’s volatility in Bitcoin has them more comfortable pricing in USD.  The Bitcoin Transaction Coordinator can work in both modes and with pricing updates every 15 minutes, this flexibility allows organization to shape their internal Bitcoin payment policies.
  2. Customer Deposit in Bitcoin:  The Transaction Coordinator automatically accepts Bitcoins as Customer Deposits. Deposits can be applied to invoices to satisfy outstanding customer obligations (accounts receivable).
  3. Bitcoin Balances: In our example case, the Bitcoin is actually going to be held versus sold off for USD. This provides an opportunity to account for gains and losses as the market price changes. In some cases, organizations will trade out of Bitcoin to minimize currency risk.  I do not show that accounting in this article.

We will look at each transaction element and assess the financial statement impact. We will provide screen shots to aid your understanding.  Click each one to expand full view into a separate window.

Invoice Creation

The invoice will be for a shipment of an air-purifier system in USD.  The assumption is that we have already delivered the good. We are only seeking to satisfy the obligation via a Bitcoin payment. Remember, the typical flow is to produce a Sales Order, get the Bitcoin payment, and then deliver goods.  We are jumping to invoice as our first step.

Bitcoin Transaction Request

After creating the invoice, the Bitcoin Transaction Coordinator for NetSuite will allow you to make a Bitcoin Payment Request. This request will generate an email to the customer with details on the quantity of Bitcoin required and the unique payment address. In practice, this request is an agreement between the business and the customer to satisfy the obligation. The longer the customer takes to pay the obligation, the more currency risk is being exposed to both parties. In practice, we recommend policies to satisfy the obligation within one day.

Income Statement / Balance Sheet Impact at Time of Invoice

At this point, we will review the general ledger and income statement to understand the impact. The NetSuite system is accounting for both sales and the cost of goods sold. Everything should appear as expected. In addition, the balance sheet effect also reflects the current state of affairs. Under this scenario, the inventory balance sheet account becomes negative because we are isolating out our transaction independently from other transactions. Normally, inventory balances are not negative.

Customer Sends Bitcoin and Deposit is Created

The customer sends the total Bitcoin as requested. The NetSuite system will generate a Customer Deposit. In addition, the Bitcoin Transaction Coordinator for NetSuite will also account for the transaction fees leaving a net amount of Bitcoin on the balance sheet which should match perfectly to the organization’s Bitcoin wallet.


Note, the Bitcoin Transaction Coordinator makes the assumption that the Bitcoin Exchange Rate at the time of the delivery is the same price as when the Bitcoin delivery request was made. Technically, this should be floating. However, the implementation did this because of the following assumptions: 1) a deposit must happen quickly else each party experiences currency risk if the transaction is not closed timely. And 2) the accounting would have confused the average listener as concepts such as realized gains and losses would have immediately entered the picture. While less than technically correct, the effects wash out during currency revaluation events noted below.

Apply Customer Deposit to Invoice

NetSuite does not have a mechanism to apply customer deposits denominated in one currency to be applied to an invoice transaction in another currency. However, the Bitcoin Transaction Coordinator supplies a Multi-Currency Deposit Application to effectively apply foreign currency payments to local currency invoices. This utility conveniently produces the supporting transactions to satisfy the accounting between currencies.

We can now see the balance sheet effect of the deposit and the net effect on the income statement.


Currency Revaluation and Gains and Losses

The transaction is now complete as the goods have been delivered and the monies have been accounted for. In this scenario, the business is holding Bitcoin. Over time, the exchange rate for Bitcoin changes which will either increase or decrease purchasing power. When accounting for changes in purchasing power, we recognize gains or loses either as realized or unrealized depending on the nature of the transaction.

Realized gains and losses are accounted for when you agree to transact at one exchange price, time passes, the price changes, and then you fulfill on your obligation. Because you agreed to a particular price before fulfillment, and you settle obligations at a different time, you can recognize immediately a gain or loss when as you settle the transaction. This is where one party in the transaction gains and the other loses — hence the nature of currency risk.

In our example case, since we are effectively saying that the Bitcoin deposit and invoice (fulfillment) happen at the same time, we are not recognizing gains or losses. In real life, time does pass between accepting Bitcoin and fulfilment and the NetSuite accounting system will appropriately take into account these concerns.

Once you are holding a foreign currency, you can reevaluate your purchasing power at a given point in time, typically at the end of a financial statement reporting period (e.g., end of month or year). In this revaluation event, you recognize unrealized gains or losses. NetSuite has a nice function to create the end of period journal entry to post the gain or loss to the income statement.  See screen shots for more detail.


Following Period Currency Revaluation Effects

NetSuite conveniently posts a reversing entry in the following period to remove the effects of currency revaluation. The idea is that an ongoing end of period practice is developed to recalculate the currency gains and losses. The differences between the opening gain (loss) balance and ending gain (loss) balance is the net gain (loss) posted to the income statement.



By accounting for Bitcoin as a foreign currency, the weirdness in using the virtual currency disappears. As Bitcoin becomes more widely adopted, these practices will become more common. Fortunately, NetSuite and the Bitcoin Transaction Coordinator make accepting Bitcoin extremely simple.

If you have any questions or would like to learn more, contact us.

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

| Tags: , , , | Category: Accounting, NetSuite | 1 Comment

One Comment

  1. Posted February 2, 2017 at 3:00 am | Permalink

    Definitely great post about bitcoin for newbie and advance account holder.

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>