MPP on Solana
Stripe and Tempo launched MPP as the next standard for machine payments. Dexter brings it to Solana with managed settlement, gas sponsorship, and the only infrastructure that speaks both MPP and x402 on the same facilitator.
Sellers install one package. Buyers need zero SOL. The protocol runs on the same settlement engine that has processed over 25 million x402 payments across eight chains.
One Facilitator, Both Protocols
x402 and MPP both use HTTP 402 for machine payments. Most providers pick one. Dexter runs both on the same infrastructure. Same fee payer wallets. Same RPC connections. Same security validation. A seller on Dexter can accept x402 and MPP payments with a single account and a single wallet.
8 chains. 25M+ settlements. Linux Foundation standard with Google, Stripe, and Visa backing. Dexter operates one of the most active facilitators in the ecosystem.
x402 FacilitatorSolana managed settlement. IETF draft standard co-authored by Stripe and Tempo. Charge mode with fee sponsorship. Sessions coming soon.
MPP Quick StartMPP can express x402 payments natively. Services built on x402 can accept MPP-formatted payments without code changes. Dexter handles both directions.
What You Don't Run
The Solana Foundation's solana-mpp-sdk lets you self-host MPP settlement. That means operating RPC endpoints, funding fee payer wallets with SOL, securing signing keys, simulating transactions, handling retries, and monitoring balances. Or you install one package and Dexter does all of it.
| You run it (solana-mpp-sdk) | @dexterai/mpp | |
|---|---|---|
| Solana RPC connections | You provision and manage RPC endpoints with failover | Dexter |
| Fee payer wallet | You fund a wallet with SOL and manage its balance | Dexter |
| Key management | You secure a signing key on your server | Dexter |
| Transaction simulation | You simulate before broadcast to catch failures | Dexter |
| Broadcast + confirmation | You send, poll for confirmation, handle retries | Dexter |
| Blockhash expiry | You track lastValidBlockHeight and re-sign if expired | Dexter |
| Fee payer monitoring | You alert when SOL runs low | Dexter |
| Security policy | You decide which programs and compute limits to allow | Program allowlists, CU caps, fee payer isolation |
Managed Sessions on Solana
MPP sessions let agents deposit funds once and stream thousands of micropayments with only two on-chain transactions. Open a session, exchange off-chain vouchers at microsecond speed, settle once when done. Two transactions regardless of whether ten or ten thousand payments occurred in between.
Dexter is building managed session infrastructure on Solana. Non-custodial. Buyers retain fund ownership through smart wallet delegation with on-chain enforced spend limits, time expiry, and revocability. Dexter manages the session lifecycle, signs vouchers, and sponsors all gas. Sellers change nothing.
Buyers keep their funds in a smart wallet with a scoped, revocable delegation to Dexter. On-chain enforced spend limits and TTL. Buyer can revoke access at any time.
Dexter sponsors gas on both the session open and close transactions. Voucher exchanges during the session are off-chain. Buyers need zero SOL for the entire session lifecycle.
Tempo's L1 handles sessions natively but cannot reach Solana. Dexter brings managed sessions to the chain where most x402 volume already settles.
Per-Request Settlement
Charge mode settles each payment individually. The seller's server calls two Dexter endpoints. Everything else is handled: security validation, fee payer co-signing, Solana simulation, transaction broadcast, and on-chain confirmation.
Client requests a resource. The seller's server asks Dexter for a fee payer address and a fresh blockhash, then returns a 402 challenge with payment details.
The client builds a USDC TransferChecked transaction using the fee payer and blockhash from the challenge. It partially signs with transfer authority only. The client never needs SOL.
Dexter validates the transaction against its security policy, co-signs as fee payer, then submits to Solana for simulation, broadcast, and confirmation.
Dexter returns the transaction signature and a settlement proof. The seller checks the proof against the challenge and serves the paid content with an MPP receipt.
Quick Start
npm install @dexterai/mpp
import crypto from 'node:crypto';
import { Mppx } from 'mppx/server';
import { charge } from '@dexterai/mpp/server';
const mppx = Mppx.create({
secretKey: crypto.randomBytes(32).toString('hex'),
methods: [charge({ recipient: 'YourSolanaWallet...' })],
});
app.get('/api/data', async (req, res) => {
const result = await mppx.charge({
amount: '10000', // 0.01 USDC
currency: 'USDC',
})(toWebRequest(req));
if (result.status === 402) return sendChallenge(res, result);
return sendWithReceipt(res, result, { data: 'paid content' });
});Security
Settlement Proof
Every successful response includes the verified recipient, amount, and asset. The SDK checks these match your challenge before issuing a receipt. No RPC needed.
On-Chain Verification
Pass verifyRpcUrl to independently fetch and verify the transaction after settlement. Trustless. Adds ~1-2 seconds.
Fee Payer Isolation
Dexter's fee payer can only sign for gas. It never appears in any instruction's accounts. ATA creation is blocked to prevent rent drain.
Endpoints
POST /mpp/prepareGet fee payer address and fresh blockhash for challenge generation.
POST /mpp/settleSubmit signed transaction for co-signing, simulation, broadcast, and confirmation.
GET /mpp/statsLive settlement statistics. Powers the stats display on this page.
Prerequisites
- Recipient wallet must have a USDC token account. Any wallet that has ever held USDC already has one.
- Buyers need USDC, not SOL. Dexter sponsors all transaction fees.
- Supported networks:
mainnet-betaanddevnet. - USDC only. Mainnet:
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Devnet:4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU.