logo

How Agent-to-Agent Payment Works

One agent quotes for a task, another accepts and pays, and the work is performed and returned. The mechanics are the same as paying for any resource. The hard part is acceptance: deciding whether delivered work was adequate, when both parties are software and neither can escalate to a dispute process.

The flow, and where it differs

Structurally it resembles any machine payment. The buying agent describes a task. The selling agent quotes a price, or publishes one in advance. The buyer decides against its policy, settles, and receives the result.

The difference appears at the last step, and it is not small.

When an agent pays for an API call, acceptance is trivial. The response arrived and parsed, or it did not. The buyer does not have to form a judgement about quality, because the thing purchased was a defined artefact.

When an agent pays another agent for work, the deliverable is the output of a judgement. A summary, an analysis, a piece of code, a decision. Whether it is adequate is itself a judgement, and the buyer is software making it about output produced by other software.

That is the actual problem in agent-to-agent commerce, and no payment protocol addresses it. Settlement is the easy half and it is the half everyone builds first.

Three ways to handle acceptance

Pay on delivery, verify by structure. Only buy work whose output can be checked mechanically: it conforms to a schema, it compiles, the tests pass, the values fall in a stated range. This is restrictive and it is the only approach that works without trust, so it is where to start.

Pay on delivery, accept the risk. For small amounts, verifying may cost more than the payment. Buy, use what is useful, and manage the risk statistically rather than per transaction, with counterparty reputation accumulated over time. This is how much low-value commerce already works.

Escrow with a release condition. Funds held until a condition is met. This suits work that takes time, and it moves the problem rather than solving it, because now the release condition has to be evaluated by something. If that something is a third agent, you have added a party who also needs to be trusted.

The strongest practical move is upstream of all three: decompose the task until each piece has a definition of done that can be checked without judgement. A task specified as improve this is unpurchasable between agents. The same work expressed as produce output matching this schema, passing these assertions, is ordinary.

There is no dispute path

Two agents cannot escalate. Settlement is final, neither party is a legal person, and there is no intermediary administering anything. Whatever recourse exists lives between the operators behind them, out of band and slowly. Design assuming a bad outcome ends in a small loss and a counterparty removed from an allowlist, because that is the actual remedy available.

What to build if you are doing this

Cap the exposure per counterparty. A per-counterparty ceiling as well as a per-call and per-period one. The failure you are protecting against is not one large payment; it is many small ones to a party that has quietly stopped delivering.

Keep a local record of outcomes. Which counterparty, which task, what was paid, whether the output was accepted. This is your reputation system until a shared one exists, and it is more useful than a shared one would be for your specific workload.

Prefer repeat counterparties. Cost of assessment falls with repetition, and the incentive to behave rises. A stable set of a few known providers is not a failure of the open model, it is what the open model converges to.

Make acceptance explicit in the request. State the criteria up front, so the seller knows what will be judged and the buyer has something to check against rather than a general impression.

Log everything with the payment attached. When the operators eventually talk, the record is the conversation.

The payment layer for this is not the hard part. A bounded float with per-counterparty limits, delegated so authority is capped at signing rather than promised, covers it, which is what CryptoCadet provides on Base. The acceptance layer is yours to build, and it is where the work is.

Frequently asked questions

How does one AI agent pay another?
The buying agent describes a task, the selling agent quotes, the buyer evaluates against policy and settles, and the work is returned. Mechanically it matches any machine payment. What differs is acceptance: deciding whether the delivered work was adequate, which no payment protocol addresses.
Why is agent-to-agent payment harder than paying for an API?
Because acceptance is trivial for a resource and hard for work. An API response either parsed or it did not. Work delivered by an agent is the output of a judgement, and whether it is adequate is itself a judgement, made by software about software.
How do you verify work another agent did?
Prefer output that can be checked mechanically: conforms to a schema, compiles, passes tests, falls in a stated range. Where that is impossible, either accept the risk for small amounts and manage it statistically, or use escrow, which moves the judgement to whatever evaluates the release condition.
What happens if an agent pays and the work is bad?
Nothing automatic. Settlement is final, neither party is a legal person, and there is no intermediary administering disputes. Recourse lives between the operators behind them, out of band and slowly. Design assuming the remedy is a small loss and a counterparty removed from an allowlist.