Voidly Pay vs @stripe/link-cli
Stripe shipped @stripe/link-cli on Apr 28-30, 2026 — 10 npm releases in 7 days. It's their answer to the agent wallet problem: OAuth-scoped one-time virtual cards backed by a user's Stripe Link account. Voidly Pay's answer is self-custodial Ed25519 keypairs and USDC on Base. Different identity primitives, different trust assumptions, different jobs.
Updated 2026-05-01. Sources: github.com/stripe/link-cli (verified Apr 28-30 release cadence), Stripe blog "Giving agents the ability to pay" (Apr 29), Stripe Sessions 2026 (288 launches Apr 28-30).
Quickstart side-by-side
@stripe/link-cli (OAuth Link Wallet)
# 1. User must have a Stripe Link account first (linked to a card / bank). # 2. Install the CLI: npm install -g @stripe/link-cli # 3. Authenticate (opens browser, OAuth to link.com): link-cli login # 4. Issue a one-time-use card scoped to a single purchase: link-cli mpp pay \ --merchant did:web:example.com \ --amount 9.99 \ --currency USD # Returns a single-use virtual card. Stripe auto-revokes after the charge. # User approves each spend in their Link wallet.
@voidly/pay-cli (Ed25519 DID + USDC on Base)
# 1. No prerequisite account. CLI mints the keypair. # 2. Install the CLI: npm install -g @voidly/pay-cli # 3. Initialize (mints Ed25519 keypair to ~/.voidly-pay/keypair.json): voidly-pay init # 4. Claim 10 starter credits (one-shot, no card, no KYC): voidly-pay faucet # 5. Pay an agent or paywalled URL: voidly-pay fetch "https://api.example.com/expensive-route" # (auto-pays HTTP 402 quote; settles in <200ms) # Or transfer directly: voidly-pay transfer --to did:voidly:abc... --amount 0.01
Key difference: Stripe Link CLI requires the user to already have a Stripe Link account with a saved payment method. Voidly Pay CLI generates the identity from scratch on first run — no third-party login, no card on file, no KYC.
Feature matrix
| Dimension | @voidly/pay-cli | @stripe/link-cli |
|---|---|---|
| Launch date | voidly-pay-cli @ npm — live since Mar 2026 (mature) | @stripe/link-cli — Apr 28-30 2026 (10 releases in 7 days, very fresh) |
| Identity model | did:voidly:{base58} — Ed25519 keypair, client-side, no third-party login | Stripe Link account → OAuth → one-time-use virtual card per task |
| KYC requirement | None for spending (Stage 1 credits). USDC deposits use Stripe-or-similar on-ramps. | Yes — user must have a Link wallet with payment method on file |
| Settlement medium | Stage-1 credits or USDC on Base mainnet (Sourcify-verified vault) | Real cards. Optional MPP for crypto USD-equivalent settlement. |
| Per-call settlement fee | 0% — direct DID → DID, no merchant of record | 2.9% + 30¢ on cards. MPP path: facilitator fee + on-chain gas. |
| Min charge | $0.005 | Card min ≈ $0.50 (fees swallow micro-amounts) |
| Browser-only onboarding | Yes — /pay/claim mints DID + faucets in 30 seconds | No — requires Stripe Link account + OAuth flow |
| Geographic availability | Global. No US-only restriction. | US merchants only for x402-preview path. Global for cards. |
| Open source | CLI MIT (TS); Worker private | CLI source not public on npm metadata; Stripe core proprietary |
| License | MIT SDKs + CC BY 4.0 docs | Stripe ToS |
| Public proof of reserves | /pay/proof — vault USDC vs Σ Stage-2 credits, refresh every 15s | Private merchant Dashboard |
| Standards | x402 native (Coinbase + Linux Foundation governed) | MPP (Stripe + Tempo co-authored), pulling Visa/Mastercard/OpenAI/Anthropic |
Where Voidly Pay differentiates
- Self-custodial — Ed25519 keypair lives in `~/.voidly-pay/keypair.json` (mode 0600). Private keys never leave the user's machine.
- No third-party login. No Stripe account needed. No Link wallet needed.
- Sub-cent settlements. Critical for per-call AI inference economics where each request is fractions of a cent.
- Public proof-of-reserves (independently auditable on-chain).
- `registerPaidTool` middleware ships in @voidly/pay-mcp v0.2.0 — wrap any MCP tool with a 402 paywall in 10 lines.
- Universal x402 reverse proxy: paywall ANY HTTPS URL with one query parameter. Stripe Link CLI requires SDK install on the merchant side.
Where Stripe Link CLI leads
- Massive distribution. 10 npm releases in 7 days = active investment. Stripe brand recognition.
- Real card-network access. If your buyer wants to pay with a saved credit card, only Stripe can do it.
- MPP open-standard footprint. Visa, Mastercard, OpenAI, Anthropic, DoorDash, Shopify all on board.
- OAuth flow integrates with the user's existing Link wallet (250M users with cards saved).
- Issuing for agents: programmatic single-use virtual cards.
- Spend-request approval flow with human-in-the-loop guardrails.
If your buyer is a human consumer with a saved Stripe Link card, or you specifically want MPP-rail integration for credit-card settlement, Stripe Link CLI is the right pick. If your buyer is another agent (or a developer wanting sub-cent settlements without Stripe Connect onboarding), Voidly Pay is the right pick.
Use both: the sidecar pattern
The two CLIs aren't mutually exclusive — they target different layers of the agent economy:
Customer ──Stripe Link CLI (USD via card)──> Orchestrator agent
│
Orchestrator splits work across sub-agents
│
▼
[Sub-agent A] [Sub-agent B] [Sub-agent C]
╲ │ ╱
Voidly Pay CLI (USDC on Base, sub-cent, instant)
│
Orchestrator sweeps Voidly credits at run-end →
optional bridge → USDC on Base → Stripe payoutStripe owns the customer relationship and the dollar on-ramp; Voidly Pay handles the per-call settlement between agents that would otherwise be lost in card fees. Same sidecar pattern documented at /pay/vs/stripe-agent-toolkit for the MCP layer.
Spotted a factual error? research@voidly.ai. This page is licensed under CC BY 4.0 — feel free to mirror or quote.
Sister comparisons: vs Stripe Agent Toolkit (MCP) · full rail comparison.