Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Welcome to Pareto’s official documentation! Pareto is a private credit marketplace that connects institutional lenders and borrowers, offering scalable yield opportunities and bridging institutional capital with on-chain credit markets. Designed for asset managers, digital asset funds, and institutional investors, our comprehensive infrastructure provides seamless access to regulatory-compliant alternative credit solutions. Built on transparency, scalability, and automation, Pareto’s Credit Vaults eliminate bureaucratic friction, reduce operational costs, and enhance capital efficiency.
Whether you're a liquidity provider, borrower, curator, or integrator, here you will find everything you need to understand how to securely and efficiently interact with the protocol and its components.

Credit Vaults (CVs) are a suite of smart contracts built to simplify on-chain lending and credit position management for borrowers and lenders. They provide the infrastructure for real-world financing, making it more transparent and efficient.
Assets deposited into a Credit Vault are sent directly to borrower wallets. Only whitelisted borrowers can access loans, and only registered users who complete verification through Keyring can provide liquidity.
Credit Vaults introduce several innovations to address inefficiencies in traditional DeFi lending and offer a customized experience for borrowers, curators, and lenders:
Diverse IRM: CVs support both fixed and variable interest rate models. Variable rates are usually benchmarked to third-party data sources, making vault performance easy to monitor.
Flexible lending cycles: Funds are locked for short periods (typically 1 to 4 weeks), called lending cycles, allowing high capital utilization and predictable fund management.
Regulation compliance: Native support for privacy-preserving verification and KYC ensures compatibility with regulatory requirements.
Credit Vaults operate on a cycle-based system. Funds are borrowed in fixed time intervals known as lending cycles. The IRM and the duration of the first cycle are defined at vault deployment. Thereafter, at the end of each cycle, the curator can update these parameters.
Before the first cycle starts, whitelisted lenders deposit funds.
The curator triggers the start of the cycle.
The borrower receives the funds directly in their wallet.
Interest accrues for lenders throughout the cycle.
The process repeats, with updated terms, if applicable, for all the following cycles.
While deposits happen in a single step, withdrawals are a two-step process:
Early exit
When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.
For example, a lender requests a withdrawal on Jan 31 during Cycle I, where the interest rate is 15%. If the Cycle II rate drops to 12%, the lender qualifies for an early exit and can claim his funds 72 hours after Cycle II starts (i.e., on Feb 3).
The diagram illustrates the architecture of Credit Vaults
The curator, with the express consent of lenders and the borrower, retains the authority to modify, amend, or adjust CV's parameters as necessary to accommodate requests from lenders or the borrower, or to ensure alignment with the terms and conditions outlined in the MLA.
At the end of Cycle II, the borrower repays interest and any requested withdrawals. Users who requested to exit can now claim their funds.


This section describes the risks associated with USP, and the actions taken to mitigate such risks.
Vault categories group vaults by their investment profile, strategy type, or risk classification. They provide high-level metadata for sorting and UI filtering.
Each vault category object includes:
_id (string) — Unique identifier
code (string) — Unique category code (e.g. "CAT_1", "STRATEGY")
name (object) — Multilingual name (e.g., { en: "Stable Yield" })
description (object) — Multilingual description
createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)
createdBy, updatedBy (string) — Actor IDs
Contract
Staking (sUSP)
Chains represent the supported blockchain networks that Pareto interacts with. These include the networks where vaults are deployed, where user interactions occur, and where transactions are tracked.
Each chain object includes:
_id (string) — Unique identifier for the chain
name (string) — Human-readable name of the blockchain (e.g., "Ethereum")
chainId (string) — Network ID used internally by Pareto
nativeToken (string) — Symbol of the native currency (e.g., ETH, MATIC)
explorerUrl (string) — Block explorer base URL for linking transactions or accounts
icon (string) — Optional icon URL
createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)
Token blocks are periodic snapshots of token-related data captured at specific blockchain blocks. These are used in vault logic and on-chain analytics.
Each token block object includes:
_id (string) — Unique identifier
tokenId (string) — ID of the associated token
tokenAddress (string) — Ethereum address of the token (0x... format)
price (string) — Price of the token at this block
block (object) —
number (number) — Block number
timestamp (number) — Unix timestamp (UTC)
createdAt, updatedAt (string) — ISO timestamps
createdBy, updatedBy (string) — Actor IDs
Lenders, such as asset managers, digital asset funds, and other professional investors, are an integral part of the Credit Vault setup and are an essential element of the lending-borrowing equation.
Lenders must be whitelisted and complete the required via Keyring before being allowed to interact with Credit Vaults.
Once is completed, users can proceed to deposit into the selected Credit Vault.
Users can deposit during the cycle buffer period, i.e., the 6 to 24 hours between the end of the previous lending cycle and the start of the new one. Alternatively, users can use the Queue contract to schedule their deposit while a cycle is running.
Users should sign two transactions:
Vault types define internal classifications for vault contracts, distinguishing between different logic structures, yield mechanisms, or operational modes. These types are useful for rendering vault metadata, sorting/filtering in UI, or determining strategy compatibility.
Each vault type object includes:
_id (string) — Unique identifier
The verification and KYC compliance on Credit Vaults is processed through .
Keyring offers streamlined and flexible solutions
Through Keyring Connect, it is possible to seamlessly inherit compliance verification from third-party platforms such as Coinbase, Binance, Kraken, and other centralized exchanges. This process includes credentials and information, including entity jurisdiction, source of capital, source of wealth, source of funds, directors, UBOs, significant controllers, and letters of authorization.
Alternatively, if required by the Borrower for more comprehensive verification needs, Keyring Pro lets borrowers establish bespoken KYC/KYB policies, requesting more detailed information and document uploads from lenders. A live register of verified lenders is maintained within Credit Vaults.
Lenders must allow Credit Vaults (spending allowance) to execute their deposit/redeem requests.
Lenders can deposit funds between lending cycles or queue their deposit requests if the cycle is running. Upon deposit, lenders receive the equivalent in LP tokens in their wallet, representing their principal and accrued interest. The Credit Vault LP tokens accumulate interest through their exchange rate; over time, each cvToken becomes convertible into an increasing amount of the deposited funds, which represents the interest accrued according to the Credit Agreement.
Lenders can redeem funds by sending a withdrawal request to claim back funds at the end of the following lending cycle. When completing the withdrawal request, lenders send back an amount of LP tokens proportional to the withdrawal amount. At the end of the next lending cycle, they can complete the process by claiming their funds.
When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.

Pauser multisig
Timelock
Treasury multisig
Timelock
Treasury multisig
Timelock
Treasury multisig
Timelock
Treasury multisig
Developers multisig
Pareto is a private credit marketplace that connects institutional lenders and borrowers, providing scalable, yield-generating opportunities and bridging institutional capital on-chain.
Pareto's logo visually represents the core principles of liquidity flow, financial connectivity, and cyclical capital movement, emphasizing the Pareto 80/20 principle.
Primary font: GT Sectra
Secondary font: GT America Mono
Upon completion:
The user’s wallet will reflect a reduction in the deposited stablecoin
The user will receive Credit Vault LP tokens representing his position in the pool
Alternatively, users can use the Queue contract to schedule their deposit while a cycle is running. Users will queue a deposit request, which will be processed by the pool curator at the first available buffer period.
The same Spending Approval and deposit flow applies
Upon completion of steps 1, and 2:
The user’s wallet will reflect a reduction in the deposited stablecoin
The user will need to claim his Credit Vault LP tokens representing his position in the pool after the new lending cycle starts
code (string) — Campaign code
name (object) — Multilingual name, e.g. { en: "My Campaign" }
description (object) — Multilingual description
rules (array) — Conditions for earning points:
name, description (object) — i18n fields
trigger (string) — DEPOSIT or DEPOSIT_REQUEST
deposit (object) —
type: BALANCE or AGE
value: number
reward (object) —
type: AMOUNT or MULTIPLIER
value: number
frequency (object) — repetition rules (value, unit)
referrals (array) — Invite codes with activation flag
startDate / endDate (string) — ISO datetime
link (string) — URL
galxeId (number) — External reference
createdAt, updatedAt (string) — ISO timestamp
createdBy, updatedBy (string) — Actor IDs
type (string) — One of: DEPOSIT, REDEEM, CLAIM
status (string) — One of: PENDING, SUCCESS, FAILED
hash (string) — Transaction hash on-chain
chainId (string) — Blockchain ID where the transaction occurred
walletAddress (string) — Wallet initiating the transaction
vaultId (string) — Associated vault
epochId (string) — Related epoch (if applicable)
tokenId (string) — Token involved
amount (string) — Amount transacted
amountUSD (string) — USD equivalent of the transaction
gasFeeUSD (string) — Gas fee in USD
block: (object)
number (number) — Block number
timestamp (number) — Unix timestamp of the block
createdAt, updatedAt (string) — ISO timestamps
createdBy, updatedBy (string) — Actor identifiers
code (string) — Internal reference code for the vault type
name (object) — Multilingual object (e.g., { en: "Fixed Rate" })
description (object) — Multilingual description object
createdAt, updatedAt (string) — ISO UTC timestamps
createdBy, updatedBy (string) — Actor IDs
USP is a synthetic dollar protocol backed by real-world institutional-grade private credit, alongside a globally accessible savings asset, sUSP.
Users mint USP () by depositing stablecoins, e.g. USDC, USDS, into the ParetoDollar contract. The contract mints USP and deposits the underlying assets into . Credit Vaults lend assets to institutional players that perform yield strategies to generate yield later distributed to USP stakers, i.e., sUSP holders (ParetoDollarStaking contract). A small percentage of total funds can be deposited also in compliant yield sources to process redeems faster.
The of funds for each credit vault is determined by a board that operates through the ParetoDollarQueue contract.
Once USP is staked into sUSP, users can earn yield from the interest generated by . The interest paid is reflected in a higher sUSP price than the plain USP effectively creating an interest-bearing token. sUSP's yield is also boosted by non-staked USP, for which the collateral will still be used by Credit Vaults, but receive no interest that instead is distributed only to USP stakers. Stake USP is not rehypothecated in any way and just stays in the contract.
USP is backed 1:1 with funds lent to institutional players. If one of the borrowers fails to deliver the funds back to the vaults, sUSP holders will cover the losses by having their conversion price to USP reduced to keep the peg for USP stable (a Stability Fund has been created to provide a buffer before slashing sUSP holders).
If the USP price is above $1, verified parties can mint USP by depositing stablecoin collaterals moving its price back to $1.
If the USP price is below $1 then verified parties can buy USP in the market, request a redemption, and receive stablecoins collateral after waiting the cooldown period, if any.
Aug 2025
Credit vaults
Sherlock ()
Apr 2025
USP
Apr 2025
Vaults are the core contracts of the Pareto protocol. They represent on-chain vehicles that accept user deposits, deploy strategies, and accrue yield over time.
Each vault is tied to a specific strategy, chain, and token, and is managed by one or more operators.
Each vault object includes:
_id (string) — Unique identifier
tokenId (string) — Accepted token reference
chainId (string) — Blockchain network identifier
typeId (string) — Reference to vault type
categoryId (string) — Vault category
operatorIds (array[string]) — Managing entities
name (string) — Name of the vault
address (string) — On-chain vault contract address
symbol (string) — Symbol of the share token
protocol (string) — Strategy protocol (e.g., AaveV2, Clearpool, Morpho, etc.)
contractType (string) — Contract logic (e.g., BestYield, CDO, CDO_EPOCH)
abi (array) — ABI definition
description, shortDescription, caption (object) — Multilingual metadata
keyInfo (array) — Key-value UI information
visibility (string) — One of: PUBLIC, RESTRICTED, HIDDEN
status (string) — Deployment status (e.g., READY, PAUSED, DISABLED)
feePercentage (number) — Vault fee as percentage
createdAt, updatedAt (string) — ISO timestamps
createdBy, updatedBy (string) — System actor IDs
Tokens are ERC-20 compatible assets used in vaults and tracked by the Pareto protocol across multiple chains.
Each token object includes:
_id (string) — Unique identifier
name (string) — Name of the token
symbol (string) — Token symbol (e.g. USDC, WETH)
chainId (string) — Chain this token belongs to
address (string) — On-chain contract address (0x...)
decimals (number) — Token decimal precision
color (string) — UI color reference for this token
oracle (object) — Price oracle metadata:
address (string) — Oracle contract address
abi (array) — Oracle ABI definition
createdAt, updatedAt (string) — ISO timestamps
createdBy, updatedBy (string) — System actor IDs
Vault performances track yield metrics, user activity, and reward distributions for vaults. These metrics are used in analytics, reporting, and performance visualization on Pareto.
Each vault performance object includes:
_id (string) — Unique identifier
vaultId (string) — Vault being tracked
vaultBlockId (string) — Related vault block reference
block (object) — Block information:
number (number) — Block number
timestamp (number) — Unix timestamp
age (number) — Block age in seconds
holders (number) — Number of unique users in the vault
realizedAPY (number) — Realized annual percentage yield
accruedRewards (array of objects) —
tokenId (string) — Reward token ID
amount (string) — Raw amount of rewards
earnings (object) —
USD (string) — USD-denominated earnings
token (string) — Token earnings amount
createdAt, updatedAt (string) — ISO 8601 timestamps
createdBy, updatedBy (string) — Actor IDs
Operators represent key entities that interact with the Pareto protocol. These can be protocol partners, borrowers, or curators responsible for deploying or managing vaults.
Each operator object includes:
_id (string) — Unique identifier
name (string) — Name of the operator
code (string) — Unique internal code
type (string) — One of: PROTOCOL, BORROWER, CURATOR
description (object) — Multilingual description (e.g. { en: "This is a protocol operator" })
shortDescription (object) — Short version of the description
caption (object) — Promotional caption
rating (string) — Internal rating indicator
location (string) — Geographic reference
links (object) —
website (string)
twitter (string)
createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)
createdBy, updatedBy (string) — Actor IDs for auditing
Users can withdraw during the cycle buffer period, i.e., the 6 to 24 hours between the end of the previous lending cycle and the start of the new one. Alternatively, users can use the Queue contract to schedule their withdrawal while a cycle is running. The exit request will be processed by the pool curator at the first available buffer period.
While deposits happen in a single step, withdrawals are a two-step process happening during two different cycles:
Upon completion of steps 1, and 2
The user’s wallet will reflect a reduction in the representing his position in the pool
The user will need to claim his stablecoins representing his initial deposit, plus any interest generated after the new lending cycle starts
Early exit
When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.
For example, a lender requests a withdrawal on Jan 31 during Cycle I, where the interest rate is 15%. If the Cycle II rate drops to 12%, the lender qualifies for an early exit and can claim his funds 72 hours after Cycle II starts (i.e., on Feb 3).
Similarly, users can use the Queue contract to schedule their redemptions while a cycle is running. Users will queue a withdrawal request, which will be processed by the pool curator at the first available buffer period.
Curators are an integral part of the Credit Vault setup and are essential for stakeholder relations and vault activities. They can leverage underwriting on-chain expertise to enhance capital efficiency, mitigate counterparty risk, and elevate market transparency with institutional-grade credit structuring.
New curators should begin with this overview to build a solid foundation, while experienced curators may reference specific sections for targeted guidance.
The curator is responsible for opening and closing lending cycles. At the start of a cycle, funds are transferred from the CV to the borrower's wallet. At the end of the cycle, the curator closes the cycle and automatically retrieves interest and processes any withdrawal requests.
The curator manages the execution of pending deposit and withdrawal requests in the queue contracts.
If needed, the curator can adjust vault parameters such as APR, fees, and lending cycle length.
The Pareto manager app is a specialized front-end interface designed for configuring and managing Credit Vaults. Available at , this tool provides real-time visibility into fund inflows and outflows. Only whitelisted addresses can interact with the manager app.
From the manager app, curators can easily see the status of the current lending cycle, a countdown to the epoch end, and the borrower's wallet allowance and balance. When a lending cycle ends, they can close it and adjust the length and APR for the following cycle.
Implementation note: Some actions are not yet implemented in the manager app. For this reason, curators should interact directly with through verified sources such as or . Always verify contract addresses before interaction.
Credit Vaults can optionally activate a tranching mechanism to allow users to tailor their lending experience to various risk appetites.
Protected: USP holds senior priority in the capital stack and is shielded by a peg stability reserve that provides an additional buffer against defaults and market stress
Redeem USP directly by burning the token and receiving backing assets, subject to clearing users' verification checks
Diversified: sUSP provides exposure to a broad set of credit lines reducing single-counterparty risk through structured diversification
Transparent reporting and enforcement mechanisms
Additionally, USP token holders are backed by USP stakers (Junior tranche) and a Stability Fund to absorb any loss.
In case of borrower default, a Stability Fund covers losses first. If needed, sUSP holders absorb remaining losses by receiving less USP per staked token. The protocol can also burn excess USP to support peg stability.
The value of sUSP increases over time relative to USP, reflecting your accrued earnings.
Users can unstake anytime, converting sUSP back to USP at the prevailing exchange rate (subject to protocol conditions or cooldowns).
Institutional-grade design, with open market access
High composability, that unlocks seamless DeFi integrations
This design mirrors traditional credit tranching by offering a boosted yield to junior participants in exchange for greater risk.
USP
Apr 2025
USP
Jan 2025
Credit vaults
Nov 2024
CVs withdraw queue
Oct 2024
CVs deposit queue
Oct 2024
Credit vaults
Aug 2024
Credit vaults
#254839
#081912
#E3E8E2
#70B19E
#48685A
#D7E4EA









protocol (string) — Data source (e.g., Idle, AaveV2, Morpho, Clearpool)
fee (number, optional) — Optional oracle fee
Additional optional config fields (e.g. fromBlock, USDCAddress, ...)
amountUSD (string) — Value in USD
APR (number) — APR contribution
percentage (number) — Share of total reward
percentage (number) — Share of vault value
linkedIn (string)
crunchbase (string)
This class offers a greater yield by dragging more exposure to the underlying yield. Junior Tranche LPs have a second lien or no lien at all in case of default (hack or loss of funds).
The Junior class is designed to receive a higher share of yield compared to the Senior one, to proportionally compensate for the higher risk taken.
The Tranching feature relies on a unique mechanism that manages the return distribution dynamically conditional to the liquidity deposited on each side (Senior, Junior) of the Credit Vault.
Senior class receives most of the underlying yield when liquidity is low on the Junior side (low coverage), or receives a guaranteed minimum portion of the underlying yield when Junior liquidity is high (high coverage)
Junior class receives outperforming APYs, no matter the Senior class liquidity
Let's assume to have a Credit Vault generating a 10% yield (base APY), where users deposit 10,000,000 DAI split as follows: 70% on the Senior class, and 30% on the Junior class.
Between 50 and 99% of the total vault's liquidity lying on the Senior side
Senior
8,000,000 DAI
8%
Junior
2,000,000 DAI
18%
The Senior Yield share is equal to 80%. Senior funds coverage is 25% and the Junior overperformance vs base APY is 1.8x. The Tranche coverage is 20%.
Majority of the total vault's liquidity lies on the Senior side (≥ 99%). See the Formulae section.
Senior
9,999,900 DAI
10%
Junior
100 DAI
20%
The Senior Yield share is set to 99% (HC#1). Senior funds coverage is 0% and the Junior overperformance vs base APY is 1.99x. The Tranche coverage is 0% as well.
Less than half of the total vault's liquidity lies on the Senior side (≤ 50%). See the Formulae section.
Senior
4,000,000 DAI
5%
Junior
6,000,000 DAI
13%
The Senior Yield share is set to 50% (HC#2). Senior funds coverage is 150% and the Junior overperformance vs base APY is 1.33x. The Tranche coverage is 60%.
vaultId (string) — Vault the epoch belongs to
vaultAddress (string) — Address of the vault
block (object) —
number (number) — Block number
timestamp (number) — Unix timestamp
count (number) — Epoch sequence index
status (string) — One of: WAITING, RUNNING, DEFAULTED, CURE
startDate (string) — ISO 8601 start date
endDate (string) — ISO 8601 end date
startCureDate (string) — When cure phase begins (if applicable)
apr (number) — Estimated APR
lastApr (number) — APR from previous epoch
expectedInterest (string) — Interest forecasted during this epoch
unclaimedFees (string) — Fees not yet claimed
deposits (string) — Total deposits in epoch
duration (number) — Duration in seconds
bufferDuration (number) — Buffer window after epoch ends
withdrawType (string) — Either INSTANT or STANDARD
withdraws (object) —
amount (string)
fees (string)
depositQueue (object) —
amount (string)
lastAmount (string)
isInstant (boolean)
withdrawQueue (object) —
amount (string)
lastAmount (string)
isInstant (boolean)
instantWithdraws (object) —
allowed (boolean)
delay (number)
amount (string)
aprDelta (number)
deadline (string) — ISO 8601 date
disabled (boolean)
createdAt, updatedAt (string) — ISO 8601 timestamps
createdBy, updatedBy (string) — Actor IDs

Vault blocks are detailed blockchain-based snapshots of a vault’s state at a specific block height. They are used for calculating APR/APY, tracking liquidity, and generating analytics.
Each vault block object includes:
_id (string) — Unique identifier
vaultId (string) — Vault being tracked
vaultAddress (string) — Smart contract address of the vault
block (object):
number (number) — Block number
timestamp (number) — Unix timestamp of the block
APRs (object) — Non-compounded APRs:
BASE, HARVEST, REWARDS, GROSS, NET, FEE (number)
APYs (object) — Compounded yield rates:
BASE, HARVEST, REWARDS, GROSS, NET, FEE (number)
totalSupply (string) — Total shares issued by the vault
price (string) — Price per share
TVL (object) —
token (string) — TVL in vault token
USD (string) — TVL in USD
pools (array of objects) — Breakdown of pool-level performance:
address (string)
protocol (string)
allocations (array) — Optional pool allocation breakdown
createdAt, updatedAt (string) — ISO timestamps
createdBy, updatedBy (string) — Actor IDs
Vault latest blocks are real-time snapshots of the most recent state for each vault. Unlike vault blocks (historical), these represent the current or latest available data.

A list of vault categories
Vault category details
GET /v1/vault-categories HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"typeId": "text",
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"icon": "text",
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"typeId": "text",
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"icon": "text",
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}GET /v1/vault-categories/{typeId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
rates: { supply: number, borrow: number }
utilization: { supplied: string, borrowed: string, rate: number }
available: { toBorrow: string, toWithDraw: string }
This section describes how the USP board allocates collateral between the whitelisted yield sources. These are classified according to some liquidity tiers
T1: is a cash equivalent product, instantly redeemable (0-2 days) -->
T2: is a short-term yield product, redeemable in less than 1 week ( 7 days) -->
T3: is a long-term yield product, redeemable in less than 1 month (8-30 days) -->
The weights should satisfy the condition
Sort vaults by descending yield vs duration score (see )
Fill Tier 2 weight up to the global cap . One-fourth of T2 allocations unlock every week and are constantly moved back to T1
Allocate the remainder to Tier 3 until the target length (12d) is reached
where limits the exposure to T2 products: too small allocation decreases the yield, but too large one risks draining liquidity if many users redeem within one week.
The USP board can modify the allocation parameters. The default values are:
Pareto APIs provide access to campaign data, vault analytics, token information, and third-party integrated services.
This is the active major version v1 of the API. All endpoints listed are part of the v1 namespace.
Request an API key via this form. Once approved, you will receive a key for authentication
Use your preferred HTTP client (e.g., Postman, Axios, cURL)
Add your API key as a Bearer Token in the Authorization header
Start by fetching vaults or campaign data:
A campaign is a points-based engagement program that allows users to earn rewards by interacting with Pareto.
GET /v1/campaigns — List all campaigns
GET /v1/campaigns/:campaignId — Get campaign by ID
GET /v1/campaigns/:campaignId/points — Get campaign points
GET /v1/chains — List supported chains
GET /v1/chains/:chainId — Get chain by ID
An entity managing or integrating with Pareto products.
GET /v1/operators — List all operators
GET /v1/operators/:operatorId — Get operator by ID
GET /v1/token-blocks — List all token blocks
GET /v1/token-blocks/:tokenBlockId — Get token block by ID
GET /v1/tokens — List all tokens
GET /v1/tokens/:tokenId — Get token by ID
GET /v1/transactions — List all protocol transactions
A yield-generating smart contract product.
GET /v1/vaults — List all vaults
GET /v1/vaults/:vaultId — Get vault by ID
GET /v1/vaults/performances — Vault performance overview
GET /v1/vault-blocks — List all vault blocks
GET /v1/vault-blocks/:vaultBlockId — Get vault block by ID
GET /v1/vault-latest-blocks — Latest block data for vaults
GET /v1/vault-categories — List all vault categories
GET /v1/vault-categories/:typeId — Get category by ID
A predefined period for vault accounting.
GET /v1/vault-epochs — List all vault epochs
GET /v1/vault-performances — List all performance metrics
GET /v1/vault-performances/:vaultPerformanceId — Get performance by ID
GET /v1/vault-types — List all vault types
GET /v1/vault-types/:typeId — Get vault type by ID
All listing endpoints across the API (e.g., /vaults, /transactions, /tokens, etc.) follow a consistent response format in consuming paginated data throughout the API:
data: an array of returned resources.
totalCount: the total number of resources matching the query, useful for pagination.
To control the number of items returned per request, you can use:
limit — Number of items to return (default: 50, max: 200)
offset — Number of items to skip before starting to collect the result set
The sort query parameter allows you to sort results by one or more fields:
Use field for ascending order
Use -field for descending order
Some endpoints support the fields parameter, which lets you request only specific fields per object:
This can be useful for optimizing network performance and response size.
https://api.pareto.credit/GET /v1/vaults/:vaultId/integrations — Integrations by vault IDcurl -H "Authorization: Bearer YOUR_API_KEY" https://api.pareto.credit/v1/vaults{
"data": [ /* items */ ],
"totalCount": 123
}GET /v1/vaults?limit=10&offset=20GET /v1/vaults?sort=-createdAtGET /v1/vaults?fields=_id,name,createdAtGET /v1/vault-epochs HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"vaultId": "text",
"vaultAddress": "text",
"block": {
"number": 1,
"timestamp": 1
},
"count": 1,
"status": "WAITING",
"startDate": "2025-12-10T01:42:54.082Z",
"endDate": "2025-12-10T01:42:54.082Z",
"startCureDate": "2025-12-10T01:42:54.082Z",
"apr": 1,
"lastApr": 1,
"expectedInterest": "text",
"unclaimedFees": "text",
"deposits": "text",
"duration": 1,
"bufferDuration": 1,
"withdrawType": "INSTANT",
"withdraws": {
"amount": "text",
"fees": "text"
},
"depositQueue": {
"amount": "text",
"lastAmount": "text",
"isInstant": true
},
"withdrawQueue": {
"amount": "text",
"lastAmount": "text",
"isInstant": true
},
"instantWithdraws": {
"allowed": true,
"delay": 1,
"amount": "text",
"aprDelta": 1,
"deadline": "2025-12-10T01:42:54.082Z",
"disabled": true
},
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}= daily standard deviation of redemptions (look-back )
= instant-service percentile (e.g. 97.5%)
To compute the instant-liquidity buffer (T1)
Statistical need -->
where days promised instant liquidity (usually 1) and
Add operational cushion --> where of (oracle lag, gas spikes)
Target balance -->
If the current then move funds into T1, otherwise sweep the surplus out of the best-scoring vault.
To allocate the surplus, we compute a yield vs duration scoring for every vault using the formula
where is the annualized fee, and is a factor used to penalize long-term strategies.
T3 allocation should be larger than the target length ( days)
where is an optional exposure limit to any single vault or protocol. It should be used only when two or more independent vaults exist.
A keeper routine should be set to rebalance funds either weekly or whenever
Instant-redeem service level
97–99%
Operational cushion
1–2 % A
Converts “epoch-day” into APR penalty
0.03–0.05
Max weighted epoch
A list of chains
Chain details
A list of token blocks
Token block details
GET /v1/chains HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/chains/{chainId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/token-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/token-blocks/{tokenBlockId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"name": "text",
"hex": "text",
"blocksPerYear": 1,
"tokenSymbol": "text",
"chainID": 1,
"RPCs": [
{
"provider": "INFURA",
"https": "text",
"wss": "text",
"name": "text",
"isPublic": true
}
],
"color": "text",
"isDisabled": true,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"name": "text",
"hex": "text",
"blocksPerYear": 1,
"tokenSymbol": "text",
"chainID": 1,
"RPCs": [
{
"provider": "INFURA",
"https": "text",
"wss": "text",
"name": "text",
"isPublic": true
}
],
"color": "text",
"isDisabled": true,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}{
"data": [
{
"_id": "text",
"tokenId": "text",
"chainId": "text",
"blockNumber": 1,
"price": 1,
"liquidity": 1,
"volume": 1,
"timestamp": "2025-12-10T01:42:54.082Z",
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"tokenId": "text",
"chainId": "text",
"blockNumber": 1,
"price": 1,
"liquidity": 1,
"volume": 1,
"timestamp": "2025-12-10T01:42:54.082Z",
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}10–14 days
Upper bound on the total weight of the 7-day vault sleeve
20–30 % A
Optional per-vault cap. Use once the number of vaults is
off / 30 % A
def rebalance():
A = current_AUM()
sigma_w = stdev(redemptions, window=W)
L = z_p * sigma_w * sqrt(H)
B_s = max(L + kappa *
Curator
Pareto
Vertical
Basis Trading (delta neutral)
This guide outlines the steps required to complete the onboarding for liquidity providers on Pareto. The process consists of two main phases: verification and contract signature.
To begin:
Visit
Select a Credit Vault (e.g., the Fasanara pool)
Connect a supported wallet
A list of transactions
A list of vault types
A single vault type
A list of tokens
Token details
A list of operators
Operator details
A list of campaigns
Campaign details
A list of vaults
Single vault object
Vaults performance metrics
Integration data
Vault performance data
Vault performance entry
GET /v1/transactions HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"type": "DEPOSIT",
"status": "PENDING",
"hash": "text",
"chainId": "text",
"walletAddress": "text",
"vaultId": "text",
"epochId": "text",
"tokenId": "text",
"amount": "text",
"amountUSD": "text",
"gasFeeUSD": "text",
"block": {
"number": 1,
"timestamp": 1
},
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"data": [
{
"_id": "text",
"code": "text",
"name": {
"en": "text"
},
"description": {
"en": "text"
},
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"code": "text",
"name": {
"en": "text"
},
"description": {
"en": "text"
},
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}GET /v1/vault-types HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vault-types/{typeId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"name": "text",
"symbol": "text",
"decimals": 1,
"address": "text",
"chainId": "text",
"logoURI": "text",
"underlying": true,
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"name": "text",
"symbol": "text",
"decimals": 1,
"address": "text",
"chainId": "text",
"logoURI": "text",
"underlying": true,
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}GET /v1/tokens HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/tokens/{tokenId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"name": "text",
"description": "text",
"image": "text",
"vaults": [
"text"
],
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"name": "text",
"description": "text",
"image": "text",
"vaults": [
"text"
],
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}GET /v1/operators HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/operators/{operatorId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"code": "text",
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"rules": [
{
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"trigger": "DEPOSIT",
"deposit": {
"type": "BALANCE",
"value": 1
},
"reward": {
"type": "AMOUNT",
"value": 1
},
"frequency": {
"value": 1,
"unit": "seconds"
}
}
],
"referrals": [
{
"code": "text",
"isActive": true
}
],
"startDate": "2025-12-10T01:42:54.082Z",
"endDate": "2025-12-10T01:42:54.082Z",
"link": "text",
"galxeId": 1,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"code": "text",
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"rules": [
{
"name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"description": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"trigger": "DEPOSIT",
"deposit": {
"type": "BALANCE",
"value": 1
},
"reward": {
"type": "AMOUNT",
"value": 1
},
"frequency": {
"value": 1,
"unit": "seconds"
}
}
],
"referrals": [
{
"code": "text",
"isActive": true
}
],
"startDate": "2025-12-10T01:42:54.082Z",
"endDate": "2025-12-10T01:42:54.082Z",
"link": "text",
"galxeId": 1,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}GET /v1/campaigns/{campaignId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/campaigns HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vaults HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"tokenId": "text",
"chainId": "text",
"typeId": "text",
"categoryId": "text",
"operatorIds": [
"text"
],
"name": "text",
"address": "text",
"symbol": "text",
"protocol": "Idle",
"contractType": "BestYield",
"abi": [
{}
],
"description": {
"en": "text"
},
"shortDescription": {
"en": "text"
},
"caption": {
"en": "text"
},
"keyInfo": [
{
"label": {
"en": "text"
},
"value": {
"en": "text"
}
}
],
"visibility": "HIDDEN",
"status": "PAUSED",
"feePercentage": 1,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"tokenId": "text",
"chainId": "text",
"typeId": "text",
"categoryId": "text",
"operatorIds": [
"text"
],
"name": "text",
"address": "text",
"symbol": "text",
"protocol": "Idle",
"contractType": "BestYield",
"abi": [
{}
],
"description": {
"en": "text"
},
"shortDescription": {
"en": "text"
},
"caption": {
"en": "text"
},
"keyInfo": [
{
"label": {
"en": "text"
},
"value": {
"en": "text"
}
}
],
"visibility": "HIDDEN",
"status": "PAUSED",
"feePercentage": 1,
"createdAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedAt": "2025-12-10T01:42:54.082Z",
"updatedBy": "text"
}{
"data": [
{}
],
"totalCount": 1
}{
"ANY_ADDITIONAL_PROPERTY": "anything"
}GET /v1/vaults/{vaultId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vaults/performances HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vaults/{vaultId}/integrations HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"vaultId": "text",
"vaultBlockId": "text",
"block": {
"number": 1,
"timestamp": 1
},
"age": 1,
"holders": 1,
"realizedAPY": 1,
"accruedRewards": [
{
"tokenId": "text",
"amount": "text",
"amountUSD": "text",
"APR": 1,
"percentage": 1
}
],
"earnings": {
"USD": "text",
"token": "text",
"percentage": 1
},
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"vaultId": "text",
"vaultBlockId": "text",
"block": {
"number": 1,
"timestamp": 1
},
"age": 1,
"holders": 1,
"realizedAPY": 1,
"accruedRewards": [
{
"tokenId": "text",
"amount": "text",
"amountUSD": "text",
"APR": 1,
"percentage": 1
}
],
"earnings": {
"USD": "text",
"token": "text",
"percentage": 1
},
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}GET /v1/vault-performances HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vault-performances/{vaultPerformanceId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
Optimism
Asset
USDC
Cycle length
One month
Buffer length
6 hours
Redemptions
Monthly, 1-month notice
Early exit
Enabled ()
Performance fee
10%
Vault page
Addresses
Polygon, Arbitrum, (Ethereum)
Asset
USDT, (USDC)
Cycle length
One month
Buffer length
6 hours
Redemptions
Monthly, 1-month notice
Early exit
Enabled ()
Performance fee
10%
Vault page
Addresses
Ethereum
Asset
USDC
Cycle length
One week
Buffer length
24 hours
Redemptions
Weekly, 7-day notice
Early exit
Enabled ()
Performance fee
10%
Vault page
Addresses
Ethereum
Asset
USDC
Cycle length
One month
Buffer length
6 hours
Redemptions
Monthly, 31-day notice
Early exit
Enabled ()
Performance fee
10%
Vault page
Addresses
Ethereum
Asset
USDC
Cycle length
One week
Buffer length
6 hours
Redemptions
Weekly, 7-day notice
Early exit
Enabled ()
Performance fee
10%
Vault page
Addresses
IRM
Variable rate, benchmarked to BTC-OI funding rate
Chain
Ethereum
Asset
USDC
Cycle length
One week
Buffer length
24 hours
Redemptions
Weekly, 7-day notice
Performance fee
20%
Vault page
Addresses
Curator
Vertical
Prime brokerage
IRM
Fixed rate
Curator
Pareto
Vertical
Market making
IRM
Fixed rate
Curator
Pareto
Vertical
HFT Trading
IRM
Fixed rate
Curator
Pareto
Vertical
Private Credit & DeFi Liquidity
IRM
Fixed rate
Curator
Pareto
Vertical
Cross-market Arbitrage
IRM
Fixed rate
Chain
Chain
Chain
Chain
Chain
By default, Credit Vaults offer a zero-knowledge (ZK) verification method powered by Keyring Connect. In select cases, a standard KYC process with document uploads should be followed instead.
Keyring Connect integrates existing KYC credentials from centralized exchanges such as Binance, Kraken, and Coinbase. This enables seamless verification while preserving privacy and minimizing data exposure.
Install the Keyring Chrome extension
Launch the verification process
Create or log in to a Keyring account. Verify the account
Select a centralized exchange (CEX) within the extension to link credentials
Authenticate and complete the verification process
Generate credentials. A blockchain transaction will be triggered to cover attestation fees
Refresh the app page
Before depositing, users are required to sign two agreements:
Terms of Service (ToS) that govern interaction with Pareto
Master Loan Agreement (MLA) that governs the lending relationship between the liquidity provider and the borrower (e.g., Fasanara Digital)
These contracts are signed on-chain, linking a unique ID to the user’s address via e-signature. The contract signature requires the execution of a transaction from the verified wallet. Users will be prompted to sign an on-chain message to complete this step.
For each vault deployed, the underlying token, main contract, strategy, LP token, and queue contract, if available, are listed. The ABI of the Credit Vault contracts can be found here: JSON
Borrowers are essential to offer yield strategies to liquidity providers on Pareto. They can leverage proprietary expertise to collect new funds from DeFi users while providing yield strategies that are traditionally limited to TradFi institutions.
At the start of each cycle (also referred to as "loan cycle" or "loan period" in the Credit Agreement), the borrower automatically receives funds deposited into the CV.
The borrower’s wallet address is fixed and cannot be modified after smart contract deployment.
Prior to the end of each cycle, the borrower must ensure to have approved (i.e., set allowance) the CV main contract to automatically settle interest payouts and withdrawal requests.
The borrower’s wallet must maintain sufficient funds to cover interest and standard withdrawal requests at the end of the cycle and repricing withdrawals once a new lending cycle begins.
The Pareto manager app is a specialized front-end interface designed for configuring and managing Credit Vaults. Available at , this tool provides real-time visibility into fund inflows and outflows. Only whitelisted addresses can interact with the manager app.
From the manager app, borrowers can easily see the status of the current lending cycle, a countdown to the epoch end, and the wallet allowance and balance.
Implementation note: Some actions are not yet implemented in the manager app. For this reason, curators should interact directly with through verified sources such as or . Always verify contract addresses before interaction.
Token USDC
Contract
Strategy
LP token
Queue
Token USDC
Contract
Strategy
LP token
Token USDC
Contract
Strategy
LP token
Queue
Token USDC
Contract
Strategy
LP token
Queue
Token USDC
Contract
Strategy
LP token
Queue
Token USDC
Contract
Strategy
LP token
Queue
Token USDC
Contract
Strategy
LP token
Queue
Token USDT
Contract
Strategy
LP token
Queue
Token USDT
Contract
Strategy
LP token
Queue


Continuous surveillance extends to the front end, smart contract vulnerabilities, private keys, and multi-signature wallets.
A list of vault blocks
Vault block details
Latest vault state per block
GET /v1/vault-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
"data": [
{
"_id": "text",
"vaultId": "text",
"vaultAddress": "text",
"block": {
"number": 1,
"timestamp": 1
},
"APRs": {
"BASE": 1,
"HARVEST": 1,
"REWARDS": 1,
"GROSS": 1,
"NET": 1,
"FEE": 1
},
"APYs": {
"BASE": 1,
"HARVEST": 1,
"REWARDS": 1,
"GROSS": 1,
"NET": 1,
"FEE": 1
},
"totalSupply": "text",
"price": "text",
"TVL": {
"token": "text",
"USD": "text"
},
"pools": [
{
"address": "text",
"protocol": "text",
"rates": {
"supply": 1,
"borrow": 1
},
"utilization": {
"supplied": "text",
"borrowed": "text",
"rate": 1
},
"available": {
"toBorrow": "text",
"toWithDraw": "text"
}
}
],
"allocations": [],
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}{
"_id": "text",
"vaultId": "text",
"vaultAddress": "text",
"block": {
"number": 1,
"timestamp": 1
},
"APRs": {
"BASE": 1,
"HARVEST": 1,
"REWARDS": 1,
"GROSS": 1,
"NET": 1,
"FEE": 1
},
"APYs": {
"BASE": 1,
"HARVEST": 1,
"REWARDS": 1,
"GROSS": 1,
"NET": 1,
"FEE": 1
},
"totalSupply": "text",
"price": "text",
"TVL": {
"token": "text",
"USD": "text"
},
"pools": [
{
"address": "text",
"protocol": "text",
"rates": {
"supply": 1,
"borrow": 1
},
"utilization": {
"supplied": "text",
"borrowed": "text",
"rate": 1
},
"available": {
"toBorrow": "text",
"toWithDraw": "text"
}
}
],
"allocations": [],
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}{
"data": [
{
"vaultId": "text",
"vaultAddress": "text",
"block": {
"number": 1,
"timestamp": 1
},
"TVL": {
"token": "text",
"USD": "text"
},
"price": "text",
"APRs": {
"BASE": 1,
"HARVEST": 1,
"REWARDS": 1,
"GROSS": 1,
"NET": 1,
"FEE": 1
},
"createdAt": "2025-12-10T01:42:54.082Z",
"updatedAt": "2025-12-10T01:42:54.082Z",
"createdBy": "text",
"updatedBy": "text"
}
],
"totalCount": 1
}GET /v1/vault-blocks/{vaultBlockId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
GET /v1/vault-latest-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
This guide describes how to integrate Credit Vaults into Web3 applications using both the Pareto REST API and smart contracts. It is intended for technical audiences familiar with Web3 and frontend frameworks.
To interact with on-chain vaults, tokens, and queue contracts, a Web3 contract instance must be created using the ABI and contract address:
This pattern is required for calling methods such as depositAA, requestWithdraw, approve. Refer to the Web3.js documentation for full syntax details.
All API routes below belong to the public Pareto API at https://api.pareto.credit. Refer to the for a complete overview.
These steps outline the minimum data required to render a vault and enable interactions.
Defines the required checks and data fetches needed immediately after wallet connection to verify access and authorization for vault operations.
Outlines the required contract state and transactions to successfully execute a deposit into a vault.
Describes how to prepare, calculate, and submit a withdrawal request from a vault, depending on its current status and configuration.
There are 3 types of request:
DEPOSIT: available during the RUNNING state of the vault cycle
WITHDRAW: available during the RUNNING state of the vault cycle. This request can be "standard" or "instant" depending on the next cycle APR.
REDEEM: available during the
All requests must be claimed by users after they have been processed:
DEPOSIT: this request can be claimed starting from the next WAITING period
WITHDRAW:
if standard: the request can be claimed at the end of the next cycle, during the WAITING period
All vault requests are tracked in the requests array of the vaultBlock object. Each entry in this array represents a user-initiated interaction awaiting processing.
where
type: Indicates if it's a DEPOSIT, WITHDRAW, or REDEEM.
status: Tracks the lifecycle of the request (e.g., PENDING, CLAIMABLE, etc.).
Requests are retrieved from the latest vault block:
Handled via the queue contract vault.cdoEpoch.depositQueue
It's possible to claim the request if status === 'CLAIMED'
It's possible to cancel the request if status === 'PENDING'
Handled via the queue contract vault.cdoEpoch.withdrawQueue
For both standard and instant requests, it's possible to claim the request if status === 'CLAIMED'
It's possible to cancel the request if status === 'PENDING'
Handled via the main vault contract vault.cdoEpoch
It's possible to claim the request if status === 'CLAIMED':
If request.isInstant === true it's possible to use:
const contract = new web3.eth.Contract(abi, address);GET /v1/vaults?address=0x... — by address
Only vaults with visibility: PUBLIC should be displayed to users.
Fetch up-to-date vault metrics. This includes share price, APRs, TVL, and queue configuration.
GET /v1/vault-latest-block?vaultId={vault._id}
NETTINGvault.depositQueue.address if RUNNING
The allowance must be verified only when the vault is in RUNNING state and uses the withdrawQueue. In this case, the withdrawQueue contract address should be used as spender.
WAITINGif instant: the request can be claimed during the RUNNING period of the next cycle, after the instant withdrawal delay (usually few days).
REDEEM:
if standard: the request can be claimed at the end of the next cycle, during the WAITING period
if instant: the request can be claimed during the RUNNING period of the next cycle, after the instant withdrawal delay (usually few days).
isInstant: Only present for withdrawals that qualify as "instant".
block: Indicates the vault block in which the request was recorded.
epochNumber : the epochNumber that must be passed to the requests methods
REDEEM (instant)
WAITING
RUNNING of next cycle (after instant withdrawal delay)
DEPOSIT
RUNNING
Next WAITING period
WITHDRAW (standard)
RUNNING
End of next cycle (WAITING)
WITHDRAW (instant)
RUNNING
RUNNING of next cycle (after instant withdrawal delay)
REDEEM (standard)
WAITING
End of next cycle (WAITING)
interface VaultSignature {
_id: string;
entity: "ALL" | "LENDER" | "MANAGER";
}GET /v1/signatures?_id=signatureId1,signatureId2const hash = await web3.eth.personal.sign(
atob(walletMessage),
walletAddress,
""
);GET /v1/vaults/{vaultId}/position?walletAddress={walletAddress}await tokenContract.methods
.approve(spenderAddress, amount)
.send({ from: walletAddress });// during NETTING period
await cdoEpochContract.methods.depositAA(amount).send({ from: walletAddress });
// during cycle RUNNING
await depositQueueContract.methods
.requestDeposit(amount)
.send({ from: walletAddress });const percentage = 1000000 / maxWithdrawable;
const lpAmount = LPDeposited * percentage;// during NETTING period
await vaultContract.methods
.requestWithdraw(lpAmount, vault.address)
.send({ from: walletAddress });
// during cycle RUNNING
await withdrawQueueContract.methods
.requestWithdraw(lpAmount)
.send({ from: walletAddress });const cdoEpochContract = new web3.eth.Contract(
vault.cdoEpoch.abi,
vault.cdoEpoch.address
);
const isAllowed = await cdoEpochContract.methods
.isWalletAllowed(walletAddress)
.call();const tokenContract = new web3.eth.Contract(token.abi, token.address);
const allowance = await tokenContract.methods
.allowance(walletAddress, spenderAddress)
.call({ from: walletAddress });
const balance = await tokenContract.methods
.balanceOf(walletAddress)
.call({ from: walletAddress });const vaultTokenContract = new web3.eth.Contract(
vaultToken.abi,
vaultToken.address
);
const balance = await vaultTokenContract.methods
.balanceOf(walletAddress)
.call({ from: walletAddress });
const maxWithdrawable = await cdoEpochContract.methods
.maxWithdrawable(walletAddress, vault.address)
.call({ from: walletAddress });interface VaultBlockRequest {
type: "DEPOSIT" | "WITHDRAW" | "REDEEM";
amount: iBigInt;
block: Block;
isInstant?: boolean;
requestedOn: string;
walletId: string;
walletAddress: string;
status:
| "PENDING"
| "PROCESSED"
| "CLAIMABLE"
| "INSTANT_CLAIMABLE"
| "CLAIMED";
epochNumber?: number;
}GET /v1/vault-latest-block?vaultId={vaultId}await depositQueueContract.methods
.claimDepositRequest(request.epochNumber)
.send({ from: walletAddress });await depositQueueContract.methods
.deleteRequest(request.epochNumber)
.send({ from: walletAddress });await withdrawQueueContract.methods
.claimWithdrawRequest(request.epochNumber)
.send({ from: walletAddress });await withdrawQueueContract.methods
.deleteWithdrawRequest(request.epochNumber)
.send({ from: walletAddress });await cdoEpochContract.methods
.claimWithdrawRequest()
.send({ from: walletAddress });await cdoEpochContract.methods
.claimInstantWithdrawRequest()
.send({ from: walletAddress });const spender = vault.cdoEpoch.withdrawQueue.address;
const allowance = await tokenContract.methods
.allowance(walletAddress, spender)
.call({ from: walletAddress });