Card rails assume a human in a browser. A form. 3DS. A minimum fee that makes a $0.05 call look like a joke. Fine for a hoodie. A non-starter for an agent that pays as it goes.
Agents call APIs. They need tiny amounts, cryptographic auth, and hard spend limits. They will not complete CAPTCHA. If your meter is “swipe a card per request,” you have a checkout you can’t put in a tool loop.
Why checkout dies at the API boundary
A hosted payment page is a UI. Agents have retries, headers, and budgets. Teams fake it with prepaid credits and honor-system keys. Those are businesses. None of them is “this request paid for itself before the handler ran.”
Humans and agents share one balance. Crypto, 402, or ACP—the router picks the rail. Policy stays in Vybe.
402-readiness checklist
- You can name one route worth metering
- The unpaid response is Payment Required, not a redirect to Stripe Checkout
- A retry with proof runs the handler once
- Spend can be capped and revoked
- Credits land on the same ledger your users already hold
A weekend path
- Pick one route.
- Price it as a product.
- Wrap it with express-vybe-402.
- Hit it unpaid (402). Settle. Retry. Confirm the balance moved.
Don’t meter a markdown file. Meter the server. Join the developer list if you want SDK pieces still in preview—don’t fake a claim we haven’t shipped.



