OOneLink Pay
A research agent expense card

Give your AI a card.
Not your wallet.

Trust before you pay. Proof after it settles.

It buys two data feeds, prepares an ETH risk brief, and rejects a premium request that breaks your signed limit.

Bounded autonomy

Sign one scoped mandate.

Per-charge, daily, and total caps. One signature.

It routes across supported chains.

Your agent draws from a Universal Account route when the rail is available.

It cannot overpay.

Over-cap charges hit the wall and revert on-chain. Zero gas.

Proof recorded. Revoke anytime.

Every payment ships a verifiable receipt. You hold the kill switch.

Three moments that build trust

Before payment

Trust Preview

See who receives the money, on which chain, in what mode, and how proof will be recorded — before you ever confirm.

After settlement

Proof Receipt

A shareable, verified certificate links the payment transaction and the on-chain proof for the exact invoice.

While agents run

Permission Firewall

Scoped mandates with per-charge, daily, and total caps + expiry, enforced on-chain by SpendPolicy. Sign once; over-cap charges revert at zero gas. Revoke anytime.

The spending limit x402 is missing

(Coinbase, Cloudflare, AWS) lets an AI agent pay for any API over HTTP — and nothing bounds how much it spends. OneLink Pay is the on-chain leash: one signed mandate, revocable anytime, with a public proof receipt for every payment. We build on the spend-permission wave rather than reinvent it.

OneLink Pay is the on-chain, revocable spending limit for the x402 agent economy — built on Particle + , with a public proof receipt for every payment.

Compare OneLink with existing permission rails
Prior artWhat it isWhere OneLink differs
Coinbase Agentic WalletsVendor MPC agent wallet on Base — bundles an x402 client + programmable spend limits.No vendor wallet: the limit lives on your own EOA via EIP-7702 (same address), chain-abstracted across EVM chains (Base + Arbitrum), with a public proof receipt.
Coinbase Spend PermissionsAllowance (token, period, amount) + revoke for smart wallets.Wallet-agnostic: the mandate lives on the 7702 Universal Account, plus a public proof receipt.
ERC-7715 / 7710Emerging standard for wallet-granted scoped permissions + delegation.A focused, auditable payments mandate aligned to that vocabulary — shipping today.
ZeroDev session keysLow-level account delegation (rate limits, allowed calls).We enforce a payment policy (per-charge / day / total / merchant) with legible consent.
Google AP2Agent “mandates” as off-chain Verifiable Credentials.Same word, but enforced on-chain at your account — a promise becomes a guarantee.
x402 (Coinbase)HTTP 402 pay-per-call rail for agents — no spend controls.We are the spending-limit layer that bounds x402 spend.

Built with

Particle

Universal Accounts + EIP-7702 — one balance across supported chains

Magic

Email / Google login — your wallet is your email

Arbitrum

Low-fee USDC settlement where the mandate is enforced

How a payment flows

mode Universal Accountsettles on Arbitrum + Base
  1. 1

    Sign in

    Email or Google login with Magic — no seed phrase or extension.

  2. 2

    Universal Account

    Particle builds a human-readable preview of the transfer.

  3. 3

    USDC settles

    Merchant receives USDC on Arbitrum or Base.

  4. 4

    Server verifies

    Backend matches the Transfer to the invoice amount.

  5. 5

    Proof recorded

    ReceiptEmitter writes an InvoicePaid proof on-chain.

Proven live · Base → Arbitrum

Funds are sourced from supported chains where you hold USDC and settled where the merchant wants — the Universal Account routes it in one operation, with no manual bridge and the network fee paid in USDC. This is the exact Base → Arbitrum flow we proved on-chain.

Cross-chain settlementno manual bridge
1.00 USDC
BaseUSDC routedArbitrum

Funded from Base and delivered on Arbitrum — no manual bridge. The settlement and proof are verified on-chain (above); the funding route is reported by your wallet.

Settled on Arbitrum, verified on-chain. Funding source reported by your wallet: Base, no manual bridge.

Integrate in one call

See all three paths →

No SDK, no contracts to deploy — every endpoint is a route this app already serves. Create a hosted checkout with one API call; your customer logs in with email or Google and pays in USDC, and the Universal Account sources funds cross-chain and settles on your chain.

Hosted pay link

One API call returns a checkout URL — no SDK, no contracts to deploy.

Server-to-server charge

Charge a payer-signed mandate within its caps; an over-cap charge reverts on-chain, no funds move.

x402 agent leash

Bound an agent's per-call x402 spend to the same on-chain mandate ceiling.

Who adopts it: an x402 API vendor (data, inference, compute) can require a OneLink mandate at agent sign-up — every calling agent then has a hard, revocable per-day ceiling, so the vendor keeps its usage revenue while the agent’s owner holds a spend cap they can prove and pull. The same shape fits a SaaS metering agent usage, or a marketplace handing each automation its own budget.

View live API examples

Create a hosted checkout

curl -s https://onelink-pay.vercel.app/api/payment-links \
  -H "content-type: application/json" \
  -H "x-admin-create-token: $KEY" \
  -d '{"merchantAddress":"0xYourMerchant","amount":"1000000","token":"USDC","destinationChainId":42161}'

# → { "paymentLink": { "id": "…" }, "checkoutUrl": "https://onelink-pay.vercel.app/pay/<id>" }

Server-side call — your create token stays secret; the browser only sees the returned checkoutUrl.

Read a walletless firewall verdict

# Walletless — no key, no funds, no gas. Hits the live Arbitrum SpendPolicy.
curl -s https://onelink-pay.vercel.app/api/demo/firewall-block

# → the on-chain verdict, machine-readable:
{
  "armed": true,
  "blocked": true,
  "reason": "over the per-charge cap",
  "errorName": "PerChargeExceeded",
  "attempted": "0.50",
  "cap": "0.10",
  "chainId": 42161,
  "policy": "0x9782e3724859469fbBAC5085EA8bf8E70724164E"
}

The over-cap charge reverts against the live Arbitrum SpendPolicy — nothing moves, no gas. Run it on /try.