This module provides basic support for the management of cryptocurrencies.
- Cryptocurrencies are commonly considered property from a taxation standpoint.
- This means that every time that you receive or send cryptocurrencies, you are entering into a taxable transaction, and will need to report on the gain/loss resulting from the receipt/issue of the cryptocurrency.
- When you receive cryptocurrencies (in exchange for goods delivered, service rendered or because you mined it), that translates into taxable income to the recipient. The valuation should be based on the market value of the cryptocurrency at the time of receipt, and it can be provided by a third party (e.g. the exchange platform) or needs to be identified by you somehow.
- You have to retain the cost of the crytptocurrency for as long as you keep it.
- When you pay out cryptocurrencies (in exchange for goods or services purchased, or if you exchanged for another crypto or normal currency) this constitutes again a taxable transaction. In that case the gain/loss is computed as the difference between the cost of the cryptocurrency that you pay with, and the value of what you receive back, valued in your operating normal currency.
auto_awesome What this module does
AI-generated from the code · Odoo 14.0Track cryptocurrency holdings in Odoo: mark a currency as inventoried, record incoming and outgoing crypto moves, and let Odoo value outgoing crypto using FIFO and create the related journal entries automatically.
This module adds a cryptocurrency inventory on top of Odoo Accounting. On a currency (for example Bitcoin), you can tick 'Inventoried' and choose a 'Valuation Method' (First-in-First-Out) and an 'Inventory Account'. Once a currency is inventoried, Odoo treats it as a tracked asset rather than a simple foreign currency.
A new 'Currency Moves' menu appears under Accounting, with two lists: Currency Moves and Currency Move Lines. A currency move records a receipt or a send of crypto, with amount, date, journal and direction. Posting a receipt creates an incoming move line valued in company currency; posting a send consumes the oldest available incoming units (FIFO) and fails if there is not enough crypto on hand. Each move line automatically creates and posts a journal entry, and you can open those entries from the move line.
When a payment is posted with an inventoried currency, a currency move is created automatically; a 'Crypto moves' button on the payment form shows them. Internal transfers with crypto are blocked, and bank statements cannot use a crypto journal. The inventory account's currency must match the crypto currency, and you cannot change an account's currency while it is used as a crypto inventory account.
Depends on
Menus it adds
Models and fields (7)
- account.move · extends an existing modelres_currency_move_line_id
- res.currency · extends an existing modelrounding, inventoried (Inventoried), valuation_method (Valuation Method), inventory_account_id (Inventory Account)
- account.account · extends an existing model
- account.payment · extends an existing modelhas_currency_move_ids, res_currency_move_ids
- res.currency.move · new modeldate (Move Date), name, state, amount (Amount), line_ids (Currency move lines), direction (Direction), company_id (Company), journal_id (Account Journal), payment_id (Payment), currency_id (Currency), debit_account_id, credit_account_id
- account.bank.statement · extends an existing model
- res.currency.move.line · new modeldate (Payment Date), amount (Amount), move_id (Currency Move), quantity (Quantity), direction (Direction), company_id (Company), price_unit (Price Unit), currency_id (Currency), out_line_ids, remaining_qty (Remaing quantity), in_move_line_id (Incoming move line), account_move_ids (Journal Entries), company_currency (Company currency)
Text generated by AI (DeepSeek) from reading the Odoo 14.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/currency.
terminal Installation and usage
OCA documentation · Odoo 14.0Configuration
Source · Odoo 14.0- For the user that will do the configuration, make sure to activate the option 'Show Full Accounting Features' in the user profile.
- Activate the Multi-Currency in 'Invoicing / Configuration / Settings / Multi-Currencies.
- Create the cryptocurrency in 'Invoicing / Configuration / Accounting / Currencies'. Complete the following fields: 'Inventoried', 'Valuation Method'. Indicate the desired rounding factor.
- Add to the cryptocurrency an 'Inventory Account'. This Account must indicate in field 'Account Currency' the same currency.
- Create an Account Journal of type Bank associated to the payments of the crypto currency, in 'Invoicing / Configuration / Accounting / Journals'. Indicate in the 'Currency' field the cryptocurrency. In the 'Bank Account' you should indicate a new Account of type 'Expenses', with a name similar to 'Cryptocurrency X Gain/Loss'. The new Account must also refer to the cryptocurrency account. You should also use the same account to fill the fields 'Outstanding Receipts Account' and 'Outstanding Payments Account'. In order to be able to select the created account you need to add the Expense type in the field 'Allowed account types'.
Additional remarks:
- In case that your company currency is not EUR, make sure that the main company currency has no exchange rates. Go to 'Invoicing / Configuration / Accounting / Currencies' and for the company currency press the button 'Rates' and delete any rate listed.
- The maximum allowed decimal places associated to currencies has been increased to 18, that is what Ethereum cryptocurrency accepts as the maximum divisibility.
Usage
Source · Odoo 14.0- If you have negotiated your invoices with customers / suppliers using crypto currencies, you can indicate them in the corresponding invoice.
- When you receive/send payments you can indicate the cryptocurrency that you want to use for the payment. Once the payment has been posted you will be able to navigate to the associated currency moves.
- You cannot make internal transfers using cryptocurrencies.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.