Key Points
The Jupiter Ultra Swap API allows you to add integrator fees to the orders.Utilizes Referral Program and its accounts
Utilizes Referral Program and its accounts
The Ultra Swap Integrator Fees are governed by the Referral Program.It is required to create a valid referral account and it’s referral token accounts for the specific token mints to collect fees in. These accounts are initalized under the Jupiter Ultra Referral Project.
`feeMint` is decided by Ultra Swap
`feeMint` is decided by Ultra Swap
In the
/order
response, you will see the feeMint
field which is the token mint we will collect the fees in for that particular order.Since Jupiter will always dictate which token mint to collect the fees in, you must ensure that you have the valid referral token account created for the specific fee mint.The
feeMint
is based on a priority list, you can refer to this JSON file for the list.For example,- If the
inputMint=SOL
and theoutputMint=USDC
, thefeeMint
will beSOL
, as it is of highest priority. - If the
inputMint=USDC
and theoutputMint=SOL
, thefeeMint
will beSOL
, as it is of highest priority, regardless of side. - If the
inputMint=MEME
and theoutputMint=USDC
, thefeeMint
will beUSDC
, as the stablecoin has higher priority.
If the
referralTokenAccount
for the feeMint
is not initialized, the order will still return and can be executed without your fees. This is to ensure your user still receives a quote to proceed with the swap.For example, if the feeMint
is SOL
, but the referralTokenAccount
for SOL
is not initialized, the order will still return and can be executed without your fees.You can refer to if feeBps
tallies with what you specified in referralFee
, in this case, the feeBps
will default to Jupiter Ultra’s default fees.Integrator fee split
Integrator fee split
By default, Jupiter Ultra Swap incurs a 5 to 10 bps fee based on token mint.When you add integrator fee, Jupiter will take a flat 20% of your integrator fees.For example, if you plan to take 100bps, Jupiter will take 20bps for the fee split (there will be no Ultra base fee).
Check the `feeBps` field
Check the `feeBps` field
You can configure
referralFee
to be between 50bps to 255bps. The /order
response will show the total fee in feeBps
field which should be exactly what you specified in referralFee
.Do note that, the referral token account has to be created before calling /order
because during the request, we will check if the token account is initialized before applying your referral fee (if it is not applied, we will only apply our default fees).Token support
Token support
You can now take fees in SPL and Token2022 tokens. As long as
feeMint
is a Token2022 and you have the valid referral token account created for the specific fee mint, you can take fees in them.Limitations
JupiterZ does not support Integrator Fees
JupiterZ does not support Integrator Fees
JupiterZ does not support integrator fees and it will not be routed when referral params are passed in to get an order.
Step-by-step
1
Install additional dependencies or if you prefer, you can use the Referral Dashboard, a simple interface to create referral accounts.
2
Create
referralAccount
.3
Create
referralTokenAccount
for each token mint.4
Add
referralAccount
and referralFee
to Ultra Swap /order
endpoint.5
Sign and send the transaction via Ultra Swap
/execute
endpoint.6
Verify transaction and fees.
Full Code Example
Full Code Example
Dependencies
RPC Connection and Wallet Setup
RPC Connection and Wallet Setup
Set up RPC ConnectionSet up Development Wallet
Solana provides a default RPC endpoint. However, as your application grows, we recommend you to always use your own or provision a 3rd party provider’s RPC endpoint such as Helius or Triton.
You can paste in your private key for testing but this is not recommended for production.
- Either use your private key in the project directly, you can do it via a
.env
file. - Or set up your private key in the Solana CLI.
Create referralAccount
- You should only need to create the referral account once.
- After this step, you need to create the referral token accounts for each token mint.
Create referralTokenAccount
- You need to create the
referralAccount
first. - You need to create a
referralTokenAccount
for each token mint you want to collect fees in. - We don’t recommend creating a token account for every token mint, as it costs rent and most tokens might not be valuable, instead created token accounts for top mints to begin with (you can always add more later).
Usage in Ultra Swap
- After creating the necessary accounts, you can now add the
referralAccount
andreferralFee
to the Ultra Swap/order
endpoint. - From the order response, you should see the
feeMint
field, which is the token mint we will collect the fees in for that particular order. - From the order response, you should see the
feeBps
field, which is the total fee in bps, which should be exactly what you specified inreferralFee
. - Then, you can sign and send the transaction via the Ultra Swap
/execute
endpoint.
DANGERDo note that, during your request to
/order
, we will check if the specific fee mint’s referral token account is initialized. If it is not, the order will still return and can be executed without your fees. This is to ensure success rates and the best experience with Jupiter Ultra Swap.Hence, please verify the transaction when testing with a new referral token account, and always create the referral token account before calling /order
.Claim All Fees
- The
claimAllV2
method will return a list of transactions to claim all fees and are batched by 5 claims for each transaction. - The code signs and sends the transactions one by one - you can also Jito Bundle to send multiple at once, if preferred.
- When claiming fees, the transaction will include the transfer of the fees to both your referral account and Jupiter’s (20% of your integrator fees).