Jupiter is the largest decentralised exchange (DEX) on the Solana blockchain, offering a wide range of trading options.
In this article, we’ll explain how Koinly currently handles Jupiter limit trades and highlight some important points to keep in mind. Please note that while many features are fully supported, some are still being improved.
What’s supported
1. Limit orders
Executed trades - When you place a limit order and it gets executed, Koinly imports the individual fills as trades. If multiple fills occur within one minute of each other, they’ll be aggregated into a single trade for simplicity.
Partial fills - If your order is only partially executed, Koinly will import the executed fills while ignoring the unfilled portion.
2. Cancelled trades
If you place a trade and cancel it before it executes, Koinly won’t import the transaction, as no trade took place. You might still notice small movements of SOL for rental fees, which are not yet ignored in the system, but we may add this support in the future.
ℹ️ Rental fees are small amounts of SOL used temporarily to cover the cost of system resources when placing a trade. These fees are automatically returned if the trade is cancelled.
Other supported features
Regular swapping - Standard swaps on Jupiter are fully supported, and all swap transactions are imported and categorised correctly.
Liquidity pooling (LPing) - Transactions related to liquidity pools are also fully supported and tracked accurately in Koinly.
Current limitations
Koinly supports most of Jupiter’s core functionality, however there are a few limitations to keep in mind:
1. Missing fills
Some fills may not be imported if you have a large account or place orders with more than 25 individual fills. This is due to limitations in the Jupiter API and will be resolved once Jupiter updates their system.
2. Open orders and withdrawals
If you have an open limit order when syncing your Solana wallet with Koinly, you may notice that the associated withdrawal transaction (for the "spending token") appears. You’ll need to delete this transaction manually for now, as Koinly will not automatically ignore it.
This is a temporary issue caused by Jupiter’s API migration from v1 to v2. Once the migration is complete, we’ll be able to fix this issue so that open orders are handled correctly.
Features not yet supported
1. Dollar-Cost Averaging (DCA)
DCA trades are not fully supported yet, as Jupiter doesn’t currently provide an API endpoint for this feature. Once it becomes available, we will add support for DCA trading.
Until then you will need to continue tagging/merging these transactions manually.
See our article How to merge transactions manually
ℹ️ Dollar-Cost Averaging (DCA) is a strategy where users make regular, equal investments into an asset over time to mitigate market volatility. Futures trading involves contracts to buy or sell an asset at a predetermined price in the future.
DCA Workaround:
Tag withdrawal as "Add to Pool"
Edit deposits into trades from pool wallet (add manually what was sold)
2. Futures Trading
Futures trading is also not fully supported at present, as Jupiter does not have the necessary API. In the meantime, you’ll need to manually tag and manage your futures-related transactions in Koinly.
For guidance on manually adding and tagging futures trades as "Realised P&L" see our Futures and Perpetuals article
What’s next?
We’re continuously monitoring updates to Jupiter’s API and will add better support for DCA and futures trading as soon as it is possible. Until then, you can manually manage these specific transaction types in Koinly.