Looking for the full documentation? Visit the Upshift SDK docs for the complete SDK reference.
@upshiftfinance/sdk): discovering vaults, depositing, tracking positions, and redeeming. Users keep their vault shares in their own Para wallet.
What You’ll Learn
- How to create a Para-backed viem wallet client and pass it to the Upshift SDK
- How to deposit a stablecoin into an Upshift vault
- How to show a user’s position and request a redemption
Version scope: The examples target
@upshiftfinance/sdk@0.5.0 with @getpara/web-sdk and @getpara/viem-v2-integration 3.25.0.Why Combine Para and Upshift
Example Use Cases
- Savings in a wallet or fintech app: Give users a default “savings” balance backed by a tokenized money market fund.
- Consumer yield product: Offer an opt-in, higher-yield option next to a cash balance.
- Business treasury: Let a company wallet put idle operating balances to work.
- Backend reporting: Read Upshift vault data and positions from your server to power dashboards and notifications.
What You Need
- A Para API key and a Para authentication flow that gives the user an EVM wallet
- An EVM RPC URL for each chain you use, for example from Alchemy or Infura
- The Upshift SDK,
@upshiftfinance/sdk - For browser apps: your domain on the Upshift API allowlist (see the warning in Step 1)
How Upshift Vaults Work
Each vault is a smart contract with one or more deposit assets (for example USDC or USDT), a strategy run by a professional curator, and a receipt token that represents the depositor’s share. Upshift’s contracts are audited, and the reports are public: Audits & Risk. Upshift runs vaults across a range of risk levels:
Returns are variable and come from the underlying strategy.
Deposit lifecycle
Redemption lifecycle
Supported Networks
Upshift vaults run on more than a dozen EVM chains, including Ethereum, Base, BNB Chain, Avalanche, Monad, Flare, HyperEVM, and Plasma, plus Solana and Stellar. This guide covers EVM vaults. Every vault the SDK returns includes itschainId.
Create the Para wallet client with the vault’s chain, and add that chain’s RPC URL to the SDK
providers. The examples below use Ethereum mainnet (chainId: 1).Step-by-Step Integration
Step 1: Install Dependencies
viem is a peer dependency of @upshiftfinance/sdk.
Step 2: Initialize Para and the Upshift SDK
The code below creates the clients, but it does not implement Para login. Complete your app’s Para authentication flow first.createParaViemAccount uses the user’s EVM wallet, so it throws if the user is not logged in or has no EVM wallet yet.
appName is required. Use a stable slug for your app: 3 to 64 characters, using only letters, digits, ., _, and -. Upshift uses it to identify your integration and to reach you about breaking changes.
Step 3: Discover Vaults
Upshift gives you a short list of launch vaults for your integration. The launch vaults for Para are:
Fetch each one by address:
Step 4: Deposit
- Pick the deposit asset from
vault.depositAssets. - Check the remaining deposit cap with
maxDeposit, and preview the shares withpreviewDeposit. - Approve the deposit asset with
approve. The SDK sets the correct spender for the vault. - Call
vaultDeposit. Shares are minted to the user’s Para wallet in the same transaction.
approval.kind is "sent" when an approval transaction was sent, and "sufficient" when the existing allowance already covers the amount. The user’s Para wallet needs ETH for gas on each transaction.
Always pass
asset to previewDeposit. Multi-asset vaults need it, and single-asset vaults ignore it.Step 5: Show Positions
walletBalance is the user’s share balance. redeemable is the amount they can claim now. Each position also lists its pendingRedemptions and availableRedemptions.
Step 6: Redeem
- Call
vaultRequestRedeemwith the amount of shares to redeem. SetisInstantRedeem: trueonly if the user chooses instant redemption and the vault supports it. - Upshift processes claimable redemptions daily, so the user does not need to send a claim transaction. Timing depends on each vault’s strategy, and
vault.lagDurationgives the lag in seconds. - Call
getVaultAvailableRedemptionsto show pending and completed redemptions.
Instant redemption is available only when
vault.instant_redeem_config is set and its isPaused is false. A spread applies, shown in instant_redeem_config.redeemableAssets[].spreadBps.If a vault cannot fund a redemption date yet, that redemption stays pending until the vault is funded.
Step 7: Handle Errors
Every SDK method throws typed errors that extendUpshiftSDKError:
UpshiftValidationError whose code is ACCOUNT_NOT_FUNDED.
Related Resources
Upshift SDK Docs
Full SDK reference and quick start
Upshift Starter App
Example app, live at starter.upshift.finance
Para viem Setup
Configure viem with Para wallets
Audits and Risk
Upshift audit reports and risk disclosures
- Vault catalog: app.upshift.finance
- Branded vaults or fee share: Talk to Upshift