Kamino finance separates transaction approval from a completed position change
Kamino finance separates an authorized Solana transaction from its intended position change. A wallet approval or signature proves intent, while a successful network record proves execution. Completion also requires a refreshed Kamino balance, debt, order, vault, or Multiply position showing the expected effect. If those signals disagree, preserve the signature and starting values before acting. Wait while the original transaction can still land, retry only after it has failed or expired, adjust when live inputs no longer support the request, reconcile stale views, and stop when the intended state already exists or the action no longer fits the position.
Updated on
Execution and position evidence answer different questions
A transaction record reports whether Solana accepted and executed the signed instructions. The corresponding product record shows what those instructions changed. A successful supply should create or increase an active supply, while a repayment should reduce recorded debt. A Multiply adjustment should change the linked collateral, debt, leverage, or loan-to-value relationship rather than merely produce a wallet notification.
Neither view should stand alone when the interface appears stuck. A signature without a successful status may identify an attempt that failed, expired, or hasn't reached the selected commitment. A refreshed position without the expected change may indicate that the transaction targeted another market or position, or that the interface is reading older account data. Matching the wallet address, market, action, and resulting record separates those cases.
Status language defines the available response
Signed, submitted, processed, confirmed, finalized, failed, and expired describe different boundaries. Signing authorizes the transaction message. Submission sends that signed message toward the network. A processed status is the weakest observed commitment, confirmed adds cluster voting, and finalized is stronger still. At any chosen commitment, a non-null transaction error means execution failed.
An absent status doesn't prove failure by itself. The transaction may still be within its blockhash validity window, an RPC view may be behind, or the signature may need an older-history lookup. Expiration becomes knowable when the recorded last valid block height has passed without successful inclusion. That boundary matters because a fresh transaction could otherwise coexist with the original attempt.
Product records reveal the intended state change
The useful completion signal depends on the operation. Compare the refreshed record with the values captured before approval, using the same wallet, market, reserve, vault, or Multiply position.
- A supply should appear as a new or increased active supply.
- A borrow should increase debt and deliver the borrowed asset to the wallet.
- A repayment should reduce the relevant debt rather than merely lower the wallet balance.
- A withdrawal should reduce the supplied position and return the selected asset, subject to position health.
- A Multiply change should update the collateral, debt, size, leverage, or LTV values affected by that action.
- An Earn vault deposit should produce the vault shares that represent the position.
After a confirmed supply, Kamino displays the active supply in Position Details. That visible position is stronger completion evidence than a closed wallet prompt. For debt-bearing positions, check the debt and collateral sides together because a balance movement alone can hide an unintended or incomplete result.
Why can a Kamino action look unfinished?
An action can look unfinished because the wallet, Solana, and the product interface update at different boundaries. A user may approve a request before broadcast succeeds. The network may record a failure while the interface still shows a pending notification. Solana may confirm the transaction before the application refreshes the affected accounts. Each case calls for a different response.
Some product states are intentionally open rather than incomplete. A fixed-rate Borrow Order can be created successfully yet remain wholly or partly unfilled until matching liquidity becomes available. Its unfilled portion doesn't accrue debt interest, and the order record distinguishes open demand from a failed transaction. Treat the order's fill state and the resulting debt as the relevant evidence, not the age of the original submission notification.
Quote-dependent actions introduce another boundary. A route can simulate successfully, then fail if liquidity, prices, slippage, or account conditions change before execution. That is an explicit failure, not a reason to assume that a hidden position exists.
Waiting fits a live attempt with no contradictory state
Waiting is appropriate when a known signature has no execution error, its blockhash hasn't expired, and the intended product record hasn't appeared. Keep the original signature and avoid generating a second authorization during that interval. Repeatedly reopening the same control doesn't strengthen the first attempt and can make later account changes harder to attribute.
A stronger commitment may also take longer than a weaker one. The selected acceptance level should stay consistent while checking status; otherwise, the same transaction may appear complete in one view and absent in another. Meanwhile, a confirmed success with a temporarily stale interface calls for a read refresh, not another write. The next decision comes from the transaction's validity and error fields.
Retrying starts only after the first attempt is bounded
A retry is a new authorization, so it needs a clear boundary around the earlier message. An explicit execution error supplies that boundary because the attempted state changes didn't commit. Expiration also supplies it once the old blockhash is beyond its last valid block height and the position still matches the starting record.
If the first transaction has no recorded execution error, don't re-sign a replacement until its blockhash expires. Before that point, the original may still execute. Re-signing too early can expose two independently valid messages to the network, especially when the replacement uses a fresh blockhash.
Build a retry from current position data rather than replaying an old preview. Available liquidity, accrued debt, collateral value, LTV, swap output, and network fee inputs may have changed. The new preview is a new decision, even when the requested action appears identical.
A bounded withdrawal retry from a recorded position
Consider a hypothetical collateral withdrawal in which every quantity is illustrative. The starting record shows 18.4 units supplied, an outstanding debt balance, and a request to withdraw 5.4 units. Before commitment, the live preview accepts that amount, shows the resulting position health, and the wallet has enough SOL for the displayed network fee.
The reader records the starting position and authorizes one transaction. If its signature reaches the chosen commitment with no error, the refreshed position should show a reduction consistent with the withdrawal, and the wallet should show the returned asset. Those records together satisfy the acceptance condition.
If the transaction fails, the supplied position remains at its starting state, although a processed failure can still consume a network fee. Suppose updated health inputs now reject 5.4 units but permit a hypothetical 3.4 units. Reducing the request is an adjustment based on new state, not a blind retry. If the first signature simply disappears from recent views, wait until its blockhash expires, confirm that the position remains unchanged, and then build one fresh request. The concrete outcome is either one verified withdrawal or no position change, never two live withdrawal authorizations.
Adjustment addresses changed inputs rather than missing confirmation
Adjustment is appropriate when the original request is no longer valid under current conditions. A collateral withdrawal may now breach the permitted position health. A Multiply action may receive a different swap quote or fail its slippage condition. A borrow may encounter different reserve liquidity, while a fixed-rate order may need different accepted terms if the existing order remains unfilled.
Changing the amount, leverage, slippage tolerance, rate ceiling, or duration alters the economic instruction. Review the resulting collateral, debt, LTV, output, and fee information again before signing. Increasing a tolerance solely to force execution can accept a materially different result. If current inputs no longer produce an acceptable position, stopping preserves the existing state better than repeatedly loosening constraints.
Reconciliation resolves disagreement between valid records
Reconciliation is the right response when the network reports success but visible account views disagree. Match the transaction's signer and affected accounts to the connected wallet and selected Kamino market. Then compare transaction history, wallet token balances, and the relevant obligation, vault, order, or Multiply record. Historical activity can identify the action, while the latest position shows its present effect.
Temporary display lag doesn't alter on-chain state. A fresh account read, wallet reconnection, or interface reload may expose the committed values without another transaction. Price-based totals can also move while token quantities remain unchanged, so compare the field that the action was meant to alter. A repayment is reconciled against debt units; a leverage adjustment needs collateral, debt, and LTV read together.
If success belongs to another market or position, preserve both records instead of forcing the expected change onto the wrong account. Any corrective action must start from the position that actually changed.
Stopping protects the last verified position
Stop when the intended state already appears, even if a notification remains unresolved. A second supply, repayment, withdrawal, or leverage adjustment would create another state change rather than finish the first one. The position record and successful transaction status should override a stale prompt.
An explicit error can also expose a condition that repetition won't solve, such as insufficient position health, unavailable liquidity, an unacceptable route, or invalid account state. Correct the condition only if the revised action still fits the intended exposure and cost. Otherwise, retain the last verified position.
Unclear identity is another stopping point. Without a known signature, starting snapshot, wallet, and target position, retrying creates fresh risk without resolving the missing evidence. Recover those identifiers first, or leave the state unchanged.
Everyday questions about Kamino finance
Can a failed Multiply transaction leave only part of the leverage change?
No. Kamino Multiply builds its leverage change in one atomic Solana transaction, so the bundled state changes either commit together or revert together. A processed failure can still charge the fee payer a network fee. Confirm the transaction error, then verify that collateral and debt remain at their starting values. A smaller SOL balance caused by the fee doesn't mean that part of the Multiply position opened.
Is an unfilled fixed-rate Borrow Order the same as a failed transaction?
No. A Borrow Order may be created successfully and remain open because matching fixed-rate liquidity isn't available yet. Partial fills are also possible, with interest accruing only on the filled debt. Inspect the order's open, filled, expired, or cancelled state and compare it with the debt actually recorded. The transaction can succeed even when the requested borrowing hasn't filled in full.
Does a failed Kamino transaction still consume SOL?
It can. Solana charges the network fee when a transaction is processed, even if an instruction fails and the position changes revert. A request rejected in the wallet before submission doesn't create an on-chain fee, and an unprocessed message may leave no charged transaction. Check the signature record and fee payer balance instead of inferring execution from a small SOL decrease alone.
Which confirmation level should be paired with a Kamino position check?
Use a consistent commitment level and require a null transaction error before treating execution as successful. Processed is weaker than confirmed, and confirmed is weaker than finalized. The position check answers a separate question: whether the intended Kamino account state appeared. A stronger commitment doesn't replace that product record, while a refreshed position doesn't identify the confirmation policy used for the transaction.
Will reconnecting a wallet submit the Kamino action again?
Reconnecting or refreshing should only request current account data; it doesn't authorize another state-changing transaction by itself. Duplication risk begins when a new transaction is built and signed while the first message may still be valid. Keep the original signature, check its status and validity window, and compare the refreshed position before approving any replacement request.