Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Spark Savings for Integrators

Deposit your USDC and earn savings yield with Spark

Spark Savings Vaults are ERC-4626 yield-bearing vaults that let anyone deposit a stablecoin and earn a continuously compounding savings rate, backed by the Sky ecosystem and the Spark Liquidity Layer. Deposits mint a savings token (e.g. spUSDC, spUSDT) whose value grows every second at the vault savings rate — no staking, no lockups, withdraw any time.

This section is for teams who want to bring that yield into their own product: a wallet, an exchange, a treasury tool, or any app where users hold stablecoins. A full integration combines both of the pieces below.

The two building blocks

Savings data, ready to present

The Savings Data API gives you live and historical data about each vault — savings rates, balances, the assets backing the vault, the liquidity behind it, and more — so you can present Spark Savings to your users however you like. The views below are just a few examples of what that data can power.

USDC and USDT savings rate cards showing live APY
Live savings rates per vault
Savings rate plotted over time
Rates and TVL over time
Collateral composition breakdown of the savings backing
The assets backing the vault
Available liquidity broken down by source
Available liquidity by source

See the Savings Data API Reference for the full set of data and endpoints.

Deposits and withdrawals, on-chain

Because the vaults are ERC-4626, moving funds in and out takes only a handful of standard calls — read a balance, deposit, withdraw, redeem. The Spark Vaults Smart Contracts integration guide covers every flow, with full examples in viem, ethers, and Solidity.

Large withdrawals via Savings Liquidity Intents

Each Spark Savings vault keeps an idle liquidity buffer for instant withdrawals. For redemptions that exceed that buffer, integrators submit a Savings Liquidity Intent — an on-chain request that the Spark Liquidity Layer picks up off-chain, prepares liquidity for, and fulfills atomically by calling redeem on the user's behalf. The user keeps custody of their vault shares until fulfillment, and every step in the lifecycle emits an on-chain event, so the full state of any request is easy to follow from a node or indexer.

This is how the Spark Liquidity Layer keeps deposits productively deployed across the Spark balance sheet while still providing liquidity on demand. The mechanism is in production and has already served billions of dollars in large withdrawals.

Where to go next

Why a data API and a smart contracts guide, not an SDK

We deliberately ship a read-only data API and a smart contracts integration guide instead of an SDK. The reasoning:

  • Spark Vaults are standard ERC-4626. Once you know deposit, withdraw, redeem, balanceOf, and assetsOf, there is nothing else to learn — the contract is the surface area. An SDK would mostly re-wrap an interface every EVM tool already supports out of the box.
  • You keep your stack. Call the vaults directly with whatever you already trust — viem, ethers, wagmi, raw JSON-RPC, or a non-JS language. The data API is plain HTTP, so it works the same way from anywhere.
  • Easier to migrate. EVM tooling moves fast. ERC-4626 callsites are trivial to port between libraries; an SDK pins you to one stack and tends to fragment across them (a viem build, an ethers build, a React wrapper, and so on).
  • One less dependency. No SDK means one fewer package to version, audit, and update alongside your own release cycle.