Кросс-валютные операции

Когда валюта операции не совпадает с валютой счёта — inCash должен знать курс, чтобы понять сколько списать или начислить.

Когда возникает кросс-валютность

В одной из трёх ситуаций:

  1. Расход / доход в чужой валюте (например, оплатили в USD со счёта в UZS).
  2. Перевод между счетами в разных валютах (с USD-карты на UZS-кассу).
  3. Операция в валюте отличной от базовой компании — даже если валюта операции совпадает со счётом, для корректного P&L нужен курс к базовой.

Что заполнять в модалке

При создании операции в чужой валюте появляется блок «Конвертация» с двумя полями:

  • Курс — 1 единица базовой валюты = N единиц валюты операции.
  • Сумма в валюте компании — автоматически рассчитывается, можно править.

Поля связаны двусторонне: вводите курс — пересчитается сумма; вводите сумму — пересчитается курс. Это удобно когда вы знаете либо одно, либо другое.

Пример: расход в UZS со счёта USD

  • Базовая валюта компании: USD.
  • Счёт «Карта 8325»: USD, баланс 1 000 USD.
  • Расход: 1 280 000 UZS (например, аренда), курс 12 800.

Что произойдёт:

  • amount = 1 280 000 UZS.
  • exchangeRate = 12 800 (1 USD = 12 800 UZS).
  • amountInCompanyCurrency = 1 280 000 / 12 800 = 100 USD.
  • Баланс «Карта 8325» уменьшится на 100 USD → 900 USD.
  • В P&L расход пойдёт как −100 USD.

Пример: перевод USD → UZS

  • Перевод 100 USD с USD-карты на UZS-кассу.
  • Курс: 12 800.

Что произойдёт:

  • На USD-карте: списание 100 USD.
  • На UZS-кассе: зачисление 1 280 000 UZS (= 100 × 12 800).
  • В отчётах перевод не считается доходом / расходом — баланс компании в целом не меняется.

Логика выбора курса

inCash сначала проверяет, задали ли вы курс прямо в операции. Если нет — использует фиксированный курс компании (если задан в Настройках → Компания), иначе — рыночный курс с FX-API. Подробно: Приоритет курсов.

Что важно проверить

  • Направление курса. Поле «Курс» — это сколько единиц операционной валюты в одной единице базовой. Не наоборот. Если базовая USD, операция UZS, и в банке висит «1 USD = 12 800 UZS» — введите 12 800, не 0,000078.
  • Стейблкоины. Для USDT/USDC рыночного курса нет, нужно либо ввести вручную, либо настроить фиксированный в компании.

См. также: Как читать курс в журнале.