B2B platform for digital goods

Multi-Currency B2B Accounting 2026: ERPNext, Xero, QuickBooks for Digital Resellers

Multi-currency accounting guide for distributors: ERPNext, Xero, QuickBooks, USD reporting, and monthly FX revaluation.

Multi-Currency B2B Accounting 2026: ERPNext, Xero, QuickBooks for Digital Resellers

Multi-currency accounting is not "the bookkeeper reconciles in Excel". At $500k+ monthly turnover with USD procurement and RUB sales, FX revaluation mistakes burn 2โ€“5% of margin and create tax non-compliance. This article is a practical walk-through of production stacks for multi-currency accounting.

1. Architecture: "USD reporting + RUB receivables"

Standard setup for a Russian distributor:

  • Functional currency (primary) = RUB (locally compliant)
  • Presentation currency (reporting) = USD (for investors/management)
  • Foreign currency = USD (suppliers), USDT (some payments)

Each transaction is stored in three dimensions: original currency amount, functional currency amount (at the spot rate on the transaction date), and presentation currency amount (at the period's closing rate).

2. ERPNext โ€” the open-source choice

ERPNext supports multi-currency out of the box. Chart of accounts:

1100 - Bank Account (USD)              [foreign]
1110 - Bank Account (RUB)              [functional]
1120 - USDT Wallet (USDT)              [foreign]
1200 - Accounts Receivable             [functional]
2100 - Accounts Payable FoxReload      [foreign currency: USD]
5100 - Cost of Goods Sold              [functional]
6900 - FX Gain/Loss (Unrealised)       [functional]
6910 - FX Gain/Loss (Realised)         [functional]

Monthly closing job in ERPNext via the scripted scheduler:

# custom_app/erpnext/fx_revaluation.py
def monthly_fx_revaluation():
    closing_rate = get_rate('USD', 'RUB', closing_date())
    for acc in foreign_accounts(currency='USD'):
        balance_usd = acc.balance_in_currency('USD')
        revalued_rub = balance_usd * closing_rate
        diff = revalued_rub - acc.balance_in_base_currency()
        post_journal_entry(
            debit='6900 FX Unrealised',
            credit=acc.name,
            amount=diff,
            remarks=f'Monthly FX reval {closing_date()}'
        )

3. ERP comparison

Tool Multi-currency FX reval Cost (mid-tier) USDT
ERPNext (self-host) Full Built-in $50/mo infra Custom
Frappe Cloud Full Built-in $200โ€“500/mo Custom
Xero Full (Premium) Auto monthly $80/mo No
QuickBooks Online Limited (Plus+) Manual $90/mo No
Oracle NetSuite Full Auto $999+/mo Manual

Recommendation for FoxReload partners with $50kโ€“5M turnover: ERPNext (self-host or Frappe Cloud). Pick Xero if your primary jurisdiction is UK/AU/NZ. QuickBooks only for US-only operations with low FX volume.

4. FoxReload integration

Pull transactions for daily reconciliation:

curl -X GET "https://api.foxreload.com/v1/transactions?date=2026-05-17&format=csv" \
  -H "Authorization: Bearer $KEY" \
  -o transactions_2026-05-17.csv

Import into ERPNext via Data Import Tool or a Python script. Mapping:

FoxReload field ERPNext field
transaction_id voucher_no
wholesale_amount_usd debit_in_account_currency (USD)
commission_usd credit_in_account_currency (USD)
order_id reference_no
delivered_at posting_date

Cron every 6 hours: pull โ†’ diff โ†’ POST into ERPNext via REST API.

CTA

FoxReload exports transactions in CSV/JSON and supports webhook-driven sync for real-time accounting. Get access and connect your ERP to FoxReload in a day.

Frequently asked questions

Which ERP fits a B2B reseller buying in USD and selling in RUB?
ERPNext (or its enterprise fork Frappe Cloud). Native multi-currency in the chart of accounts, monthly FX revaluation, and custom USD reporting while the books stay in RUB. Cost: $50โ€“500/mo vs $5k+/mo for Oracle NetSuite.
What is FX revaluation and why is it needed?
Monthly re-valuation of foreign-currency balances at closing rate. Example: $100k payable on day 1 (USD/RUB 92.00 = 9.2M RUB), on day 31 (USD/RUB 95.00 = 9.5M RUB) โ€” 300k RUB unrealised FX loss hits P&L. Mandatory under IFRS/IAS 21 and US GAAP ASC 830.
Can I keep books directly in USDT?
Technically yes, fiscally it depends on jurisdiction. In Russia USDT is treated as a digital financial asset (DFA); in the EU as a crypto-asset under MiCA. ERPNext and QuickBooks have no native USDT currency โ€” you create a custom currency with manual rate updates.
How do I automate FoxReload transaction import into ERPNext?
FoxReload exposes CSV/JSON exports via GET /v1/transactions with a date filter. ERPNext has Data Import Tool for CSV or REST API for real-time sync. Standard setup: cron every 6 hours โ€” pull from FoxReload โ†’ POST to ERPNext.
Get FoxReload API access

Related articles