machine payments protocol

DexterMPP 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.

protocol-agnostic infrastructure

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.

x402Live

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 Facilitator
MPPLive

Solana managed settlement. IETF draft standard co-authored by Stripe and Tempo. Per-request charge mode and streaming sessions with non-custodial smart wallet delegation.

MPP Quick Start

MPP can express x402 payments natively. Services built on x402 can accept MPP-formatted payments without code changes. Dexter handles both directions.

managed settlement

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 connectionsYou provision and manage RPC endpoints with failoverDexter
Fee payer walletYou fund a wallet with SOL and manage its balanceDexter
Key managementYou secure a signing key on your serverDexter
Transaction simulationYou simulate before broadcast to catch failuresDexter
Broadcast + confirmationYou send, poll for confirmation, handle retriesDexter
Blockhash expiryYou track lastValidBlockHeight and re-sign if expiredDexter
Fee payer monitoringYou alert when SOL runs lowDexter
Security policyYou decide which programs and compute limits to allowProgram allowlists, CU caps, fee payer isolation
streaming sessions

Managed Sessions on Solana

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.

Non-custodial

Buyers keep funds in a Swig smart wallet with a scoped, revocable delegation to Dexter. On-chain enforced spend limits and TTL. Buyer can revoke access at any time with a single instruction.

Gas-free

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.

Microsecond verification

Sellers verify vouchers locally with Ed25519 signature checks. No RPC calls, no network round-trips. Verification completes in microseconds, not seconds.

1. Onboard

Buyer provisions a Swig smart wallet and grants Dexter a scoped delegation role. One-time setup with SIWx wallet ownership proof.

2. Open

Buyer requests a session with a seller. Dexter verifies the Swig role on-chain and opens a payment channel. One transaction.

3. Pay

For each API call, the buyer attaches a signed voucher. The seller verifies locally. No blockchain interaction per request.

4. Close

Dexter executes a single TransferChecked from the buyer's Swig wallet to the seller for the cumulative amount consumed. One transaction.

how charge mode works

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.

1. Challenge

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.

2. Client Signs

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.

3. Settlement

Dexter validates the transaction against its security policy, co-signs as fee payer, then submits to Solana for simulation, broadcast, and confirmation.

4. Receipt

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.

integrate

Quick Start

npm install @dexterai/mpp

One payment per request. Each API call settles individually on-chain.

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' });
});
See all examples on GitHub
trust model

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.

Non-Custodial Sessions

Session funds stay in the buyer's Swig wallet. Dexter holds a scoped delegation role with on-chain enforced spend limits, token restrictions, and TTL expiration.

Buyer Revocation

Buyers can remove Dexter's delegation role at any time with a single Swig instruction. Immediate, unilateral, no cooperation required.

Balance Monitoring

Active sessions are monitored every 15 seconds. If a buyer's balance drops below the settled amount, the session closes automatically with emergency settlement.

settlement api

Endpoints

x402.dexter.cash/mpp/*Settlement API

Charge

POST /mpp/prepare

Get fee payer address and fresh blockhash for challenge generation.

POST /mpp/settle

Submit signed transaction for co-signing, simulation, broadcast, and confirmation.

GET /mpp/stats

Live settlement statistics. Powers the stats display on this page.

Sessions

POST /mpp/session/open

Open a payment channel. Returns session keypair and channel ID.

POST /mpp/session/voucher

Sign a payment voucher for a cumulative amount within the session.

POST /mpp/session/close

Settle the session. Executes TransferChecked for the total consumed.

before you start

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-beta and devnet.
  • USDC only. Mainnet: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Devnet: 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU.
resources

Links