Overview
JupUSD is minted and redeemed through a dedicated Solana program. The program accepts collateral (USDC or USDtb), mints JupUSD 1:1 (minus fees), and handles the reverse operation for redemption. A 0.04% fee applies to all mint and redeem transactions through the program. Three integration methods are available:SDK
TypeScript SDK for programmatic integration.
Web API
HTTP endpoints for direct service integrations.
UI
Web interface for manual operations.
Key addresses
| Field | Address |
|---|---|
| JupUSD Mint | JuprjznTrTSp2UFa3ZBUFgwdAmtZCq4MQCwysN55USD |
| Program | JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr |
| Custodian (reserves) | B3q4P4XSmycvoHLaiEjchsGDafFPhKokvHvNRuW29N1y |
| Program reserves | CkzLnD9r4d4ZZofsgNVo2VNunxDmte5YJ4vfAgMfBZNA |
| Multisig (update authority) | 31wgH9Czzd3qgquTGxVxtxJuzBd8Fm4xEo8rPX7CNfhM |
Concepts
Benefactor
A benefactor is a wallet authorised to mint and redeem JupUSD through the program. Every benefactor is linked to a KYC (individual) or KYB (entity) verification. If your benefactor account is disabled, the transaction will fail with theBenefactorDisabled error.
Oracle
The JupUSD program uses Pyth as its oracle provider. Oracles serve two purposes in the mint/redeem flow:- Peg validation: verify that the collateral (USDC, USDtb) has not depegged before allowing the operation.
- Exchange rate: the oracle price is used in the calculation of the mint/redeem exchange rate.
PriceConfidenceTooWide or NoValidPrice.
Oracle validation parameters are configured per vault. You can inspect the current configuration for each vault onchain. For example, the USDC vault configuration: 7JnALHo2bFuKsgkNymiqJwt228jy3my99CnfF75QD9oj.
Rate limiting
Mint and redeem operations are rate-limited at the config (global), vault, and benefactor levels. Typical benefactor limits:| Window | Mint limit | Redeem limit |
|---|---|---|
| 1 hour | 40M | 10M |
| 1 day | 100M | 100M |
MintLimitExceeded or RedeemLimitExceeded, wait for the current window to reset or contact the team to request higher limits.
SDK
The TypeScript SDK provides programmatic access to mint and redeem instructions. An IDL is also available for non-TypeScript integrations: view IDL on Solscan.Installation
Mint
The Mint instruction transfers collateral from your wallet to the JupUSD custodian and mints new JupUSD tokens to the provided token account.Key parameters
| Parameter | Description |
|---|---|
amountIn | Amount of collateral to deposit. |
minAmountOut | Minimum amount of JupUSD to receive. If the minted amount falls below this value, the transaction reverts with SlippageToleranceExceeded. |
Your wallet must be a registered benefactor to call the Mint instruction. If you are not onboarded, the transaction will fail.
Oracle accounts
Each vault requires a specific set of Pyth oracle accounts. When building the instruction:- Include all non-empty oracle accounts from the vault.
- Preserve the exact order in which they are stored onchain.
- Passing incorrect or incomplete oracle accounts will cause the transaction to fail.
Example
Redeem
The Redeem instruction burns JupUSD from your token account and withdraws the corresponding collateral from the vault back to your wallet.Key parameters
| Parameter | Description |
|---|---|
amountIn | Amount of JupUSD to redeem (burn). |
minAmountOut | Minimum amount of collateral to receive. If the returned amount falls below this value, the transaction reverts with SlippageToleranceExceeded. |
Example
Web API
The JupUSD Web API provides HTTP endpoints for minting and redeeming without using the SDK directly. Base URL:https://api.jupusd.money/
Full API documentation is available at api.jupusd.money.
Access to the Web API requires a registered benefactor wallet, the same as for SDK and UI operations.
UI
The JupUSD web interface provides a graphical way to mint and redeem without writing code. It is available at: jupusd.money/mint.Mint via UI
Enter amount
Enter the desired USDC amount to provide as collateral. The UI will compute a quote and display the expected JupUSD you will receive.
Redeem via UI
Enter amount
Enter the amount of JupUSD you wish to burn. The UI will calculate the expected collateral return.
Error reference
The following errors may occur when calling the Mint or Redeem instructions.| Error | When it happens | How to fix |
|---|---|---|
| InvalidLPMint / InvalidVaultMint | The JupUSD or vault mint account does not match the config or vault state. | Fetch the config and vault accounts onchain and pass the exact mint accounts recorded there. |
| InvalidAuthority | The authority PDA does not match the config. | Pass the correct authority stored in the config account. |
| InvalidVaultTokenAccount | The vault token account does not match the vault state. | Pass the vault or custodian token account recorded on the vault. |
| InvalidCustodian | The custodian account does not match the vault’s configured custodian. | Use the custodian pubkey stored on the vault account. |
| BenefactorDisabled | The benefactor is currently disabled. | Your account is whitelisted but not currently approved to mint, or access has been disabled. Contact the team. |
| VaultDisabled | The vault is not enabled for minting or redeeming. | Wait for operators to enable the vault. |
| ProtocolPaused | Global mint/redeem operations are paused. | Wait for protocol admins to re-enable mint/redeem. |
| MintLimitExceeded / RedeemLimitExceeded | A per-window rate limit was exceeded (config, vault, or benefactor level). | Retry after the rate-limit window resets, or request higher limits from the team. |
| ZeroAmount | Input amount is zero, or the computed output rounds to zero. | Submit a non-zero amount large enough to produce output after fees. |
| SlippageToleranceExceeded | Computed output is lower than minAmountOut. | Increase slippage tolerance or retry when pricing is more favourable. |
| PriceConfidenceTooWide | Pyth oracle confidence interval or spread is too wide. | Retry once oracle confidence tightens. Verify correct oracle accounts were supplied. |
| NoValidPrice | No Pyth oracle price passed validation. | Check oracle health and retry once price feeds are reporting valid data. |
| MathOverflow | Arithmetic overflow during price or amount calculation. | This should not happen under normal conditions. Contact the team. |
| VaultIsDry | Redeem request exceeds the vault’s available collateral balance. | The program vault balance is too low. Wait for it to be replenished or contact the team. |
Related
- JUICED Collateral Integration for integrating JUICED as a collateral asset
- Jupiter Lend Earn for the underlying Earn protocol
