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 completed orders for daily reconciliation:
curl -X GET "https://public-api.foxreload.com/api/orders/?statuses=completed&limit=200&offset=0" \
-H "X-API-Key: $KEY"
Import into ERPNext via Data Import Tool or a Python script. Mapping:
| FoxReload field | ERPNext field |
|---|---|
id |
voucher_no |
totalPrice (per item) |
debit_in_account_currency (USD) |
id (order) |
reference_no |
createdAt |
posting_date |
Cron every 6 hours: pull → diff → POST into ERPNext via REST API.
CTA
FoxReload exposes order history via GET /api/orders/ (paginated) for scheduled reconciliation. Get access and connect your ERP to FoxReload in a day.
