← writing

agentic payments

ai agents are starting to spend money. they book tables, renew subscriptions, buy compute, and pay other agents for api calls. every payment rail they touch was designed on one assumption: a human is present at the moment of purchase. that assumption just broke.

start with authorization. card security is built around proving the cardholder was there. cvv, 3-d secure, the liability rules behind every chargeback. with an agent the human decision happened earlier, back when the instruction was given. “book me a flight under $400” is the authorization. the purchase itself happens hours later, against a merchant the user never saw. when it goes wrong, the dispute question changes from “did you click buy” to “did your agent stay inside the instruction you gave it”, and card networks have no native way to answer that.

then the economics. a card transaction carries a fixed fee around 30 cents. fine for a $60 checkout. absurd for an agent paying a tenth of a cent per api call. machine-to-machine spending wants payments the size of a request, settled in seconds, with no signup flow, and that is a different rail entirely.

the part nobody markets is retries. an agent that hits a timeout does what all well-built clients do, it tries again, except this client holds a wallet and can convince itself the first attempt never happened. payment systems handle this with idempotency keys: the client attaches a unique key to the request, and the server returns the original result on a replay instead of moving money twice. that machinery is table stakes for human-initiated payments. for agent-initiated payments it is the whole game, along with budgets, merchant allowlists, and receipts that reconcile against a real bank statement. none of the new protocols own that layer yet.

two camps are forming around the rails themselves. card networks and google are extending the existing system with signed mandates, so the human’s instruction becomes a verifiable artifact a dispute can point at. coinbase and cloudflare built a new rail where the payment travels inside the http request itself. the next writeup covers both.