Ethereum (Mainnet)

  • The ETH <> USD price is fetched from Kraken. If not found, then Binance is used.

  • For all other pairs of token <> ETH, on-chain oracles from Kyber are used.

  • In case no price can be fetched from Kyber, we check Uniswap V2, Sushiswap, Uniswap V1, in that order.

  • In case the above checks fail, there is a custom implementation to used to get prices specifically for LP tokens from Uniswap V2 pools, Balancer, Mooniswap and Curve as well as Yearn vault tokens.

  • In case still no fiat price could be found, the Coingecko is queried. If that fails as well, the asset won't have a fiat price on the Safe interface.

Ethereum Testnet (Rinkeby)

  • The ETH <> USD price is fetched from Kraken just like for mainnet.

  • Uniswap and Kyber on Rinkeby are used in a similar fashion like on mainnet.

  • Please note that Uniswap and Kyber have no real liquidity on Rinkeby, hence the final fiat value of assets can be very volatile.


  • Currently, only the native token (xDai) has a fiat value. The Kraken DAI <> USD oracle is used for this one. If this request fails, we fall back to 1 DAI = 1 USD.

Energy Web Chain and Energy Web Chain Testnet (Volta)

Did this answer your question?