VEYTO Wallets · Guardrails · Receipts

Give an AI agent a wallet with enforceable spending rules.

And get a signed receipt for every payment it makes. Veyto sits between your agent and money: it checks every payment against limits you set, refuses the ones that break them, and records what happened either way.

Wallets · Guardrails · Receipts

Developer beta on Base Sepolia with test USDC. No mainnet, no real money.

Your agent
asks to pay
for an API, data, a service
Veyto
checks the rules
allow, or block before any money moves
Your wallet
signs it
your key, your process — never ours
Receipt
signed evidence
verifiable without trusting us

What you get

Three things, and they are the three words in the logo.

Wallets you still control

Non-custodial. Veyto authorizes a payment and hands back unsigned material; your process signs it. There is no route that accepts a private key.

Guardrails that actually bind

A cap per payment, a cap per day, a rate limit, and a kill switch. Budget is reserved before anything is signed, so concurrent requests cannot race past a cap.

Receipts anyone can check

Ed25519-signed over the exact bytes, binding the amount, the payee, the settled transaction and a fingerprint of the rules that allowed it.

Blocked is a success

When a limit stops a payment, Veyto did the job you configured it to do. Nothing was reserved, nothing was signed, and nothing reached the chain.

Blocked by policy: $12.00 exceeds the $1.00 per-payment cap.
No money moved.

It is not an error and it is not styled like one. Real failures stay red; Blocked is information, and Settled is money that moved.

What integrating looks like

One API key. Your own wallet. About fifteen lines.

// npm install @veyto/sdk viem
import { VeytoClient, localSigner } from "@veyto/sdk";

const veyto = new VeytoClient({
  baseUrl: "https://sandbox.veyto.io",
  apiKey:  process.env.VEYTO_API_KEY,        // the only Veyto credential
  agentId, rail: "eip155:84532", currency: "USDC-6",
  sign: localSigner(process.env.MY_WALLET_KEY), // stays in YOUR process
});

// $1 per payment, $5 per day, 20 payments an hour
await veyto.setPolicy(agentId, "1000000", "5000000", 20);

// then just fetch — the 402, authorization, signing and settle are handled
const res = await veyto.payingFetch("https://some-service/premium/data");

Request sandbox access

The beta is small and hand-issued. Tell us what you are building and we will send you a sandbox API key and the docs. No signup, no card, no sales call.