Vellar Playground
Provider bond system

x402 settles before delivery is confirmed. This closes that gap.

The problem

A plain x402 payment settles the moment the facilitator verifies it — before the buyer has any way to know whether the seller actually delivered. If a provider takes payment and returns garbage, the settlement already happened, with no on-chain recourse. Nobody has solved this on Stellar yet. x402r exists for exactly this problem on EVM and Solana, but not here. Vellar's bond system is the gap it closes: a seller posts a bond, a buyer's settlement registers standing to dispute, and a bad delivery can be slashed on-chain instead of just disputed in someone's inbox.

Run this on your machine

Reads a SettlementRecord straight from the deployed contract — no facilitator, no session, just a public read against Stellar testnet.

stellar contract invoke
# Read a SettlementRecord directly from the deployed bond-escrow contract.
# payment_id is 32 bytes, hex-encoded (64 hex chars) — same shape
# src/bond.ts's registerSettlement expects. The value below is the real
# register_settlement call's own tx hash, used illustratively: this
# specific one was tested against the live contract and returned no
# record (that proven sequence was run by direct CLI before any
# payment ever produced a payment_id through the facilitator itself).
# Swap in a payment_id from your own registered settlement to see it.
stellar contract invoke \
  --id CAWQ2FJDPWHOFLYQIPKBU4M6IE4GUROKUKVVZERWQVD2DHP7S2CULTI4 \
  --source-account <any funded testnet account, read-only call> \
  --rpc-url https://soroban-testnet.stellar.org \
  --network-passphrase "Test SDF Network ; September 2015" \
  --send=no \
  -- get_settlement \
  --payment_id 972d1379aca6b461efa7004cdeeb6aaef6ee4debbd9fd919c46ff61b3790ed8a