Skip to main content

Bkper Exchange Bot

Multi-currency accounting: easily track currency valuations over time to gain clear insight into your FX gains and losses.

Updated yesterday

The Exchange Bot keeps the balance values of accounts in multiple currencies in sync with every transaction. This avoids the need for manual replication or batch processes.

The Exchange Bot can calculate your unrealized FX gains and losses at any moment from the perspective of any currency in which you are operating, lowering risk and strengthening your FX decisions.

Multiple Currency Accounting

Create a Bkper book for each currency you operate in with a name and currency suffix (MyBusiness USD, MyBusiness EUR, MyBusiness JPY) and place all books together in a collection with the name of the books without the suffix (MyBusiness).

Install the Exchange Bot on all books in the collection and set the properties on these books that are required for the Exchange Bot to function properly.

Transactions mirroring

Once the Exchange Bot is installed and properties are set on the books in a collection, transactions are mirrored in other currencies according to the exchange rate at the moment of the transactions.

Apply transaction properties to change the standard behavior of the Exchange Bot. This is relevant for international wires and when actual rates differ from the Exchange Bot rates. (see bellow)

FX Gains and Losses

The context menu (More) on books where the bot is installed has an Exchange Bot menu option that runs the exchange update process. This process calculates and records foreign exchange gains or losses on your assets according to real-time rates.

The standard behavior for the Exchange Bot is to record exchange differences in liability accounts with the same name as the permanent account plus the EXC suffix. These accounts are automatically created by the bot and don't need to be added manually.

Behavior in conjunction with the Stock Bot is different for accounts that have the stock_exc_code set on their parent group. For assets traded by the Stock Bot, unrealized and realized FX gains and losses are recorded in incoming-type accounts due to their trading nature.

Overview

Exchange Bot Status

Gray: working properly

Red: error

No icon: not installed

Exchange Bot Flow

  • Post a transaction in a book of one currency (USD).

    Example: 100 USD Bank account >> Accounts Payable

  • This post event triggers the Exchange Bot.

    The Exchange Bot determines in which other currencies this transaction must be mirrored.

  • The Exchange Bot fetches the current exchange rates for the other currencies.

  • The Exchange Bot posts the same transaction in the other book(s) but in the currency of that book (EUR).

    Example: 98.50 EUR Bank account >> Accounts Payable

Installation

Books and Collection

Create the currency books (at least two currencies).

Add all currency books to one Bkper collection.

Install the Exchange Bot on all currency books in the collection.

Note: If your books are already in a collection for the Portfolio Bot (or any other bot), you do NOT need to create another collection. You can use the same collection.

Accounts

Create a chart of accounts in your books that represents all your assets and liabilities. When you work with US dollars and euros, create accounts for all your assets and liabilities in both currencies in both books.

For example, if you have a City Bank account in the USA and a Deutsche Bank account in Europe, create both accounts in both the USD and EUR books. The balance of the European bank account in the USD book is represented in USD value, and vice versa—the City Bank balance value is represented in euros in the EUR book.

Note: Exchange gain and loss accounts (realized and unrealized) are created by the Exchange Bot when you run Exchange Gain/Loss from the context menu (see below).

Groups

Although optional, you can create groups for each currency you work with and place all accounts that must be mirrored to other currencies in that group. This makes it easier to manage which accounts are mirrored into other currencies. See the group configuration below.

Configuration

Book Properties

Set these properties in all currency books in the collection.

The exchange code is required in each currency book in the collection:

In a US dollar book:

exc_code : USD

In a euro book:

exc_code : EUR

In a Japanese yen book:

exc_code : JPY

Group Properties

Group properties are optional for the Exchange Bot since it generally matches accounts by their names between different currency books. Add all accounts that operate in one currency to a group with the exc_code to ensure they are replicated in the correct currencies.

In a USD group:

exc_code : USD

Transaction Properties

Transaction properties are optional but can be used to override fetched exchange rates. It's common to encounter different exchange rates than those fetched automatically. In these cases, you need to override the fetched exchange rate.

exc_code : USD 
exc_amount : 1200

The exchange code specifies which currency to override, and the exchange amount indicates the correct amount. For example, if you send money from a European bank to a USD account, you indicate that the exchange rate to override is for USD and that the exact amount in euros was 1200.

Find all configuration settings for the Exchange Bot here

Exchange Operations

Regular Transactions

Regular transactions in any currency are mirrored in other currencies with the exchange rate applied.

You: Post a transaction in the USD book.

05/06/2025 100 Citi Bank >> Expense

The Exchange Bot listens to the post event.

Exchange Bot: On each post event, it checks for the exc_code:USD on either the accounts or the group that the accounts belong to.

When it finds the exc_code, it posts the transaction in the other currency books:

In the EUR book:

05/06/2025 101.12 Citi Bank >> Expense

In the JPY book:

05/06/2025 14,615.60 Citi Bank >> Expense

International Wire Transfers

You: Post an international wire transfer from EUR to USD in the EUR book.

05/06/2025 5,000.00 Bank of Europe >> Citi Bank exc_amount: 5408.75 exc_code: USD

Exchange Bot: On each post event, it checks for the exc_code:USD and the exc_amount on the transaction properties.

When it finds these transaction properties, it posts the transaction in the specified currency book with the exc_amount and adds properties to the mirrored transaction:

In the USD book:

05/06/2025 5,408.75 Bank of Europe >> Citi Bank 
exc_amount: 5,000.00 e
xc_code: EUR
exc_rate: 1.08175

In the JPY book:

05/06/2025 808,696.57 Bank of Europe >> Citi Bank 
exc_amount: 5,000.00
exc_code: EUR
exc_rate: 161.739313539692

Exchange Bot Operations

Calculate Unrealized Results

The Exchange Bot calculates currency gains and losses in all currencies across all books in your collection and posts the results.

How to run the calculation:

Open any book in your collection and select Exchange Bot from the More menu. Set your calculation date and click Gain/Loss to start the process.

Note: First-time users will need to authenticate the Exchange Bot.

What happens next:

The Exchange Bot will:

  • Create unrealized results accounts (with "EXC" suffix) if they don't exist

  • Post gain/loss transactions to each currency book based on exchange rate differences on the calculation date

Example: In your USD book, you'll see the exchange results for any accounts you have in euros, Japanese yen, or other currencies.

Note: When used together with a Portfolio Bot, the Exchange Bot will also calculate and post realized gains and losses from portfolio operations.

Multi Currency Accounting Template

Note: You have to put the books into a collection for the Exchange Bot to work

Did this answer your question?