UNIFIED — модель аккаунта, а не только Spot wallet

Bybit Unified может объединять Spot assets, derivatives collateral и liabilities. Connector использует V5 wallet balance для UNIFIED и не утверждает, что отдельный Funding wallet включён. Показывайте provider и account scope, чтобы пользователь сравнивал одинаковую границу в Bybit.

Ключ Bybit должен оставаться read-only

Портфелю нужна видимость account/assets, но не SpotTrade, ContractTrade, transfers или withdrawals. Создайте отдельный ключ, проверьте readOnly и передавайте его только через server flow. При ошибке scope или IP restrictions показывайте конкретную ошибку, а не просите расширить permissions.

Wallet balance и availability не взаимозаменяемы

Bybit сообщает wallet balance, locked amount, borrow amount и account-level availability. Legacy free fields не сохраняют прежний смысл в Unified. Нормализованная модель отдаёт поддержанную семантику и не изобретает free quantity, способный исказить collateral или liabilities.

Централизуйте refresh и проверяйте partial results

Bybit sync должен идти через единый backend job path с bounded retry и provider-aware rate handling. После refresh читайте status и normalized balances, а не вызывайте Bybit из браузера. Performance может быть partial, если transfer history или исторические цены не покрывают Unified activity.

Account type объясняет многие расхождения

Убедитесь, что подключён нужный Unified account, и сравните liabilities вместе с положительными assets. Funding balance находится вне scope. Missing history, unsupported wallet и permission errors должны быть явными состояниями, а не общей arithmetic error.