All posts

The Four States of a SukukFi Deposit, and Why Each One Matters

·SukukFi Teamtransparencyon-chain-datamethodologydunedefillama

"How much is deposited in the vault?" sounds like a one-number question. It isn't.

A dollar you send to SukukFi's duPRT vault passes through several distinct states before it's earning profit share, and each state means something different for what that dollar is doing and what risk it carries. Collapsing all of them into a single "TVL" figure hides exactly the detail that matters most: how much capital is actually working versus sitting in a queue.

This is the second post in our verification series. The first one showed our credit methodology. This one shows our metrics methodology, the same principle applied to a different question.

Why totalAssets() isn't the number you think it is

The duPRT vault contract has a function called totalAssets(). It sounds like it should answer "how much has been deposited." It doesn't.

By design, totalAssets() excludes pending deposits, claimable redemptions, cancellations, and any capital already invested. It answers a narrower question: how much is available in this specific vault for a new investment right now. Read literally, that means calling totalAssets() on our own duPRT vaults today returns zero, even though real deposits are sitting there.

That isn't a bug. It's the contract protecting depositors: pricing a deposit before it's fulfilled would let someone front-run the exchange rate. But it means the honest answer to "how much is deposited" requires looking at four separate states, not one function call.

The four states

A deposit moves from wallet through pending deposit, then either invested and earning or cancelled back to wallet, then through claimable redemption back to wallet. Every state except the wallet itself is a view-call value, not a transfer event, so it never appears on the public Dune dashboard.

Pending deposit. Your stablecoins have left your wallet and are sitting in the vault contract, but the request hasn't been fulfilled yet. No yield accrues at this stage, deliberately: pricing it before fulfillment would let a deposit front-run the exchange rate that existing shareholders rely on. Operationally, this is also the queue depth our Investment Manager needs to see to know how much capital is waiting to be deployed. A pending balance that grows and stays high is worth watching, it can mean rising demand, or it can mean fulfillment is falling behind.

Claimable redemption. The opposite direction: shares have already been converted back to the underlying asset, fulfilled, and are waiting for you to claim them. This capital is already spoken for. It has to stay out of "available for investment," because using it here would mean promising the same dollar to two different people. A claimable balance that's large and slow to shrink is the first visible sign that redemption demand is outpacing settlement cycles.

Cancelled. SukukFi lets you cancel a pending deposit or redemption before it's fulfilled and get your funds or shares back, a protection that goes beyond the ERC-7540 standard itself. Most of the time this stays near zero. Its value as a metric is in its trend: a rising cancellation rate signals friction between what users expect and how fast fulfillment is actually happening.

Invested, earning. This is the only state where your capital is actually doing what SukukFi exists to do: financing PrimeTel's telecom invoice purchases and earning a Mudarabah profit share. Everything else in this list is either waiting to become this or waiting to leave it. We think the ratio of invested capital to total deposits, a utilization rate, is a more honest measure of SukukFi's legitimacy than TVL alone. TVL can grow because deposits are piling up in a queue. Only invested capital is backed by real trade activity.

Where to see this

All four figures are now on the app dashboard, in a "Capital lifecycle" card, read live from the vault contracts, not from a spreadsheet.

We also publish a public Dune dashboard reconstructing our TVL formula independently, duPRT's raw balance plus trUST's balance, with no double counting, built entirely from indexed on-chain events. It includes something we think is more useful than another chart: a status table explaining which of the four lifecycle metrics above Dune can't currently show, and why. Pending deposits, cancellations, claimable redemptions, and invested capital are all read through contract view calls, not through transactions that get mined and logged. Dune indexes blocks, transactions, and logs. A view call never appears in any of those, so no amount of ABI decoding makes it queryable, at least not until the underlying request and claim events get their own dedicated on-chain event logs. We'd rather tell you what a dashboard can't see than let a clean-looking chart imply it sees everything.

We're also finishing a TVL adapter for DefiLlama using the same formula, using the same duPRT-plus-trUST reconstruction. We'll link to it here once it's live.

The point of publishing this

None of this is complicated math. It's four numbers and an honest accounting of which tool can see which one. We're publishing the breakdown because "trust our dashboard" is a weaker claim than "here are three independent ways to check it yourself, and here's exactly where each one currently falls short."


Read how we verify SukukFi's credit exposure in our PrimeTel assessment, or the underlying credit underwriting framework. For the vault's full structure and risk disclosures, read the investor brief.