Skip to main content
Below are two methods available to swap HBAR for tokens:
Consider the tokenโ€™s decimal places when determining the output amount.
The output values should be in the tokenโ€™s smallest unit. For the SAUCE token, which has 6 decimal places, an input of 123.45 SAUCE should be entered as 123450000 (123.45 multiplied by 10^6).
Ensure that the โ€œtoโ€ account has the output token id associated prior to executing the swap. Failure to do so will result in a TOKEN_NOT_ASSOCIATED_TO_ACCOUNT error.
When providing HBAR in the path array, use the Wrapped HBAR token id (WHBAR).

Swap Exact HBAR for Tokens

Swap an exact amount of HBAR for a minimum token amount Solidity function name: exactInput
Set the minimum output token amount (amountOutMinimum) with caution.A high minimum might lead to a swap failure due to insufficient liquidity or rapid price movements. Conversely, setting the minimum too low can expose you to significant slippage, potentially resulting in a financial loss as you might receive far fewer tokens than expected.
It is recommended to include refundETH in the multicall in case excess HBAR was sent to the contract.
The data passed to the โ€˜pathโ€™ parameter follows this format: [token, fee, token, fee, token, โ€ฆ], with each โ€˜tokenโ€™ in the route being 20 bytes long and each โ€˜feeโ€™ being 3 bytes long. Example, 0x0001F4 (500) for a 0.05% fee.

Code Overview

Resources:Note: The Hedera JavaScript SDK currently does not support passing complex contract function parameters. Instead, use Ethers.js or Web3.js to obtain the encoded function data and pass that data as a function parameter.
Typescript

Swap HBAR for Exact Tokens

Swap a maximum amount of HBAR to receive an exact tokens amount. Solidity function name: exactOutput
Ensure that the refundETH is included in the multicall so that any excess payable HBAR amount, up to the maximum amount, is refunded to the sender.
Set the maximum input token amount (amountInMaximum) with caution.A low maximum might lead to a swap failure if the required liquidity surpasses this limit or due to rapid price movements. Conversely, setting it too high can expose you to significant slippage, potentially leading to a financial loss as you might spend far more tokens than expected.
The data passed to the โ€˜pathโ€™ parameter follows this format: [token, fee, token, fee, token, โ€ฆ], but reversed (i.e. the first token in the array should be output token), with each โ€˜tokenโ€™ in the route being 20 bytes long and each โ€˜feeโ€™ being 3 bytes long. Example, 0x000BB8 (3000) for a 0.30% fee.

Code Overview

Resources:
Typescript