How to build proof of reserves for a stablecoin
Stablecoin proof of reserves is showing that every token in circulation, on every chain, is backed by the reserves an issuer’s banks and custodians hold, with supply read from the chain and the reserve report examined by an accounting firm.
This playbook sets out the decisions in the order you’ll make them. Each one links to the use case pages and docs that cover it in detail.
Record every mint and burn
Stream each mint and burn into your own database, or index them in a hosted subgraph on each chain, depending on where your team wants to query them.
- Use caseStablecoin mint and redemption monitoringRecord every mint and redemption of a stablecoin as it happens, on every chain.
- Use caseWays to monitor stablecoin mints and redemptionsEach way to build it side by side, with what each one suits best.
- GuideProof-of-reserves & treasury intelligenceTrack a stablecoin’s supply per chain with Turbo Pipelines, and check it against custodian reserves on a schedule with a Compose task that publishes, alerts or pauses.
Decide how much history each figure needs
Keep every supply change if examiners must trace a figure to the mints and burns behind it, or read each contract’s total supply at a block if one figure per check is enough.
- Use caseWays to run continuous proof of reservesEach way to build it side by side, with what each one suits best.
- Use caseWays to produce a stablecoin reserve report token scheduleEach way to build it side by side, with what each one suits best.
- DocsEdge RPC eth_callRead a contract’s state, such as its total supply, at any block number without sending a transaction.
Cover every coin and chain you issue on
Add each new chain or coin to the record before it goes live, because a chain left out drops from the total without any error.
Agree how your custodians report reserves
Settle with each custodian or bank how it reports its holdings and how often, because a check is only as current as the latest reserve figure.
- GuideProof-of-reserves & treasury intelligenceTrack a stablecoin’s supply per chain with Turbo Pipelines, and check it against custodian reserves on a schedule with a Compose task that publishes, alerts or pauses.
- DocsCompose HTTP requests (fetch)Call an outside API from a Compose task, with retries, and every request and response recorded in the run’s log.
Value reserves held as tokenized fund shares
If part of the reserves are tokenized money market fund shares, check the reserve wallets’ balances against your reserve record and value them at the fund’s net asset value.
Set how often to check and what counts as short
The schedule sets how long a shortfall can go unseen, and the threshold sets the ratio below which the check alerts instead of publishing.
- Use caseRun continuous proof of reserves from a streamed supply recordA pipeline records every mint and burn in your database, and a scheduled task compares supply with your custodian’s reserve figure, then publishes the ratio onchain, alerts your team or pauses the token.
- Use caseRun continuous proof of reserves with a scheduled task and RPC readsA scheduled task reads total supply from your token’s contract on each chain over RPC, fetches your custodian’s reserve figure and compares the two, then publishes, alerts or pauses.
- DocsCompose task triggers: cron, HTTP, and onchainRun a Compose task on a schedule, from an HTTP call or when an onchain event lands, and set how it retries when a run fails.
Decide what a shortfall triggers
Choose who gets the alert and whether the check may pause the token, which means granting its wallet the pause role under the same approvals as any admin key.
- Use caseContinuous proof of reservesCompare onchain supply with reported reserves on a schedule, then publish the ratio or alert on a gap.
- GuideProof-of-reserves & treasury intelligenceTrack a stablecoin’s supply per chain with Turbo Pipelines, and check it against custodian reserves on a schedule with a Compose task that publishes, alerts or pauses.
Compare an exchange’s reserves with what it owes
For an exchange, decide which wallets count as reserves and how customer liabilities are counted, then compare them asset by asset between the accounting firm’s reviews.
Watch for heavy redemptions and depegs
Decide which redemption and off-peg levels alert treasury, because heavy redemptions draw reserves down and an off-peg price can set them off.
- Use caseStablecoin redemption spike alertsAlert when redemption requests in a single 24-hour period pass 10% of a brand’s outstanding issuance, the point at which the OCC must be told within 24 hours.
- Use caseStablecoin depeg and manipulation alertsAlert the issuer when its coin trades off peg in its own pools or pool activity looks like manipulation, on every chain it runs on.
Watch the supply and usage limits in your rules
Track supply against any limit your rules set, such as the GENIUS Act issuance threshold or the MiCA daily usage cap, so your team hears well before one is reached.
- Use caseCheck supply against the GENIUS Act $10 billion thresholdUnder the GENIUS Act, a stablecoin issuer regulated by a state can stay under its state regime only while its coin’s consolidated total outstanding issuance is $10 billion or less. Past that, it has 360 days to move to federal oversight or must stop issuing new coins until it’s back under, unless its federal regulator grants a waiver, so the issuer watches the total across every chain and warns its team well before it’s reached.
- Use caseMiCA daily usage cap for stablecoinsTrack the quarterly average of daily transactions and their value against the 1M transactions and €200M a day limits, and warn well before an issuer must stop issuing.
Publish the backing ratio onchain
Decide whether holders and contracts should read the ratio onchain, and on which chains, with each update dated and written only by your publishing wallet.
Produce month-end supply for the reserve report
Fix the cut-off time before the month starts, so your accounting firm can check each chain’s supply at the last block before it.
- Use caseMonth-end stablecoin supply for reserve reportsProduce the month-end supply across all chains that the monthly reserve report and its examination need.
- Use caseWays to produce a stablecoin reserve report token scheduleEach way to build it side by side, with what each one suits best.
- DocsFeeds API: BlocksTurn a time into a block number, such as the newest block at or before a month-end cut-off.
Keep the figures your regulators ask for
Work out which regulator reports you file, and build their figures from the same supply record the reserve check reads, so the numbers agree.
- Use caseDaily stablecoin supply by chain for PS-01 reportsKeep the daily per-chain supply, issued, redeemed, issuer-held, frozen and lost figures that feed the weekly OCC PS-01 report.
- Use caseGENIUS Act stablecoin reporting dataFile the weekly OCC PS-01 report from daily per-chain supply, freeze and holder data.
- Use caseStablecoin holder concentration reportingList every wallet holding over 2% of supply and the top 20 redemption wallets each day, for the weekly PS-01 report.
- Use caseMiCA stablecoin reporting dataReport holder counts, issuance and volumes each quarter for asset-referenced tokens above €100M in issue, and for EMTs in non-EU currencies.
Turn this plan into a working build
We can help you work through each decision and get the first stage into production.