Browse docs

Multi-currency

AI Accounting records entries in any currency and rolls everything up into your organization's base currency for balances and reports.

Per-line currency and rate

Each journal entry line can carry its own currency (a 3-letter code, default USD) and exchange_rate (default 1.0, must be greater than zero):

json
{
"date": "2026-02-01",
"description": "Invoice paid in EUR",
"auto_post": true,
"lines": [
  { "account_id": "<CASH_EUR>",  "debit": 1000.00, "currency": "EUR", "exchange_rate": 1.08 },
  { "account_id": "<REVENUE>",   "credit": 1000.00, "currency": "EUR", "exchange_rate": 1.08 }
]
}

The exchange_rate converts the line's currency into your base currency. Here 1.08 means 1 EUR = 1.08 (base currency units).

How balances roll up

  • Entries still must balance in their own terms — total debits equal total credits.
  • Account balances and the reports are expressed in the base currency, using each line's exchange rate at the time it was recorded.

Rates are explicit

You supply the exchange rate per line — AI Accounting does not fetch live FX rates. This keeps the ledger deterministic and auditable: the rate that was used is the rate that's recorded.

Next