Solana publishes open DvP program for USDC settlements
Solana’s open delivery-versus-payment program escrows a tokenized asset and USDC, then settles both legs in one transaction or neither. The program is available on mainnet-beta and devnet.
The Solana Foundation has published an open delivery-versus-payment (DvP) program for exchanging tokenized assets and USDC on the Solana network. The program holds both assets in escrow and transfers them in one transaction, so a failed transaction leaves both legs unchanged.
The program is available on Solana mainnet-beta and devnet under program ID dvp34bdbcEm4f4FCUjGV4mDAkDshaQR4LkK8fdcsyZq. Its documentation and client code were checked against commit df9919e and IDL version 0.1.0. Deployment details and the USDC mint were rechecked on mainnet-beta on Oct. 13, 2026. No mainnet trade was executed during that review.
Each trade creates a program-owned record and two escrow token accounts. The seller deposits the tokenized asset into one account, while the buyer deposits USDC into the other. A settlement authority, named when the trade is created, signs the SettleDvp transaction that sends the asset to the buyer and USDC to the seller. The authority cannot redirect the proceeds.
USDC on Solana uses the legacy SPL Token program, known as Tokenkeg, rather than Token-2022. Its Solana mint is EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, with six decimal places. Applications must set the cash leg to the legacy token program and use six-decimal TransferChecked instructions when funding the escrow.
The process starts with the parties agreeing on the mints, amounts, expiry, settlement authority and destination accounts. CreateDvp records those terms and creates the escrows, but does not transfer tokens. The program does not match orders, set prices, net trades or perform identity checks.
Both parties and the settlement authority are expected to read and verify the stored record before funding or settling. The check covers the parties, token mints, token programs, amounts, expiry, settlement authority and settlement destinations. A trade reference of up to 64 bytes can link the onchain record to an order.
A worked example uses 1,000 units of a six-decimal tokenized asset for 998.50 USDC. The asset amount is 1 billion base units and the USDC amount is 998.5 million. Each party funds its escrow with an ordinary token transfer; no DvP-specific funding instruction is required.
The settlement transaction must include four recipient token accounts: the seller’s USDC account, the buyer’s asset account and accounts for any surplus returned from the escrows. The program checks each account’s owner and mint. This check can affect USDC accounts because ownership of legacy SPL Token accounts can be changed.
A trade is treated as settled only after SettleDvp reaches finalized confirmation. The program then closes the trade record and both escrows. It does not emit events, so reconciliation systems must retain the stored terms or the creation transaction.
Unsettled trades can be unwound. A party can reclaim its own funded leg while leaving the trade open. The settlement authority can cancel the trade, or either party can reject it and return the escrowed funds. These actions remain available after expiry, while settlement is rejected after the expiry time. Funds deposited after an escrow closes can be recovered with the original trade details.
The program documentation lists an audit by Cantina. The program does not remove issuer controls on the assets. USDC remains subject to its issuer’s controls, while a tokenized asset may have freeze, pause or transfer restrictions. The program also requires an authorized settlement party to submit the final transaction and does not determine legal settlement finality.








