Machine-Readable Pricing Should Separate Discovery From Payment Authority

Sep 15, 2026

Share

Category /

other

9 min read

GOAT Network

Machine-Readable Pricing Should Separate Discovery From Payment Authority

Machine-readable pricing for AI agent commerce needs clear units, asset denomination, fresh payment terms, and a record of what the merchant will actually honor.

scroll

Table of contents

Machine-Readable Pricing Should Separate Discovery From Payment Authority

Machine-readable pricing is useful only when an agent can tell what a price describes, which asset it uses, when the quote expires, and which service will honor it. A decimal attached to a product name is not a complete payment instruction. For developers building agent-facing services, the important design question is where each commercial fact becomes authoritative.

The answer is usually a layered model. A catalog or manifest helps an agent discover an offer. A checkout or payment challenge supplies current transaction terms. The merchant records the accepted order and uses that record for fulfillment and reconciliation. Keeping these roles distinct is more reliable than trying to make one public price field carry product identity, exchange rates, payment authorization and delivery terms at once.

That distinction is visible in GOAT Flow's documented QuickPay and API-payment surfaces. QuickPay can expose a compact fixed-product record, while a server-created session or protected route supplies the terms that control a specific purchase. GOAT Network is therefore relevant as a concrete merchant implementation boundary, not as proof that every machine-readable catalog is automatically executable.

A price needs a unit, asset, and authority

Before an agent compares two offers, it needs to know what “$0.05” means. It could mean five cents per request, per returned record, per thousand tokens, per minute, or per completed task. It could be a display currency, a token-denominated amount, or an internal credit value. These are different commercial units even when the number looks identical.

A useful offer record answers four questions:

  • What is being purchased?

  • What unit is charged?

  • Which asset and network settle the amount?

  • Which system can confirm the current terms?

The first two belong to product and pricing semantics. The third describes a payment option. The fourth identifies authority. A discovery document can publish all four, but clients should still treat it as a description until the merchant returns a current payment requirement or checkout session.

Schema.org's Offer vocabulary is a useful conceptual reference because it separates a product from the terms under which it is available. Google also distinguishes product groups and variants in its product-variant guidance. Those standards help describe relationships; they do not create a universal agent checkout protocol or guarantee that a client will interpret every optional field correctly.

For an API, make the billable unit concrete. “Search access” is vague. “One query returning up to 20 results” is a unit an agent can budget. “One completed enrichment record” is different from “one request,” especially when a failed request may consume compute but produce no usable result. The pricing record should state which outcome is charged and how partial execution is handled.

The merchant should also separate display precision from settlement precision. A catalog may show 0.01 USDC for readability. The payment layer must represent the corresponding base-unit amount without rounding it differently at execution time. An agent should reject a quote when the conversion is ambiguous or the amount cannot be represented exactly enough for the merchant's rules.

Treat catalog metadata as a projection

Most merchants already have an internal catalog with more information than an agent needs. It may include product versions, entitlements, regions, tax treatment, usage restrictions, customer-specific prices and operational status. A public manifest is better understood as a projection of that catalog than as a replacement for it.

The projection should contain the minimum information needed for discovery and selection. A digital research service might publish an offer identifier, language, coverage period, delivery format, license scope, unit price and update time. Private fulfillment credentials, internal cost data and support notes do not belong in the public record.

The difficult part is preserving identity. If the agent sees research-pack-team-september but checkout receives only research-pack, the merchant has lost the information that made the selection meaningful. The payment record should retain the selected product or offer key, not just the amount. Otherwise a successful transfer cannot tell support which rights were purchased.

GOAT Flow's QuickPay documentation describes a deliberately small product surface: a product key, name, optional description and image, and a positive decimal price. That is useful for a fixed-price machine-facing product. It should not be read as a built-in schema for variants, inventory, shipping, taxes or license entitlements. A merchant can maintain those concepts in its own catalog and map an exact sellable offer to a QuickPay product key.

This projection approach has a practical benefit. The same internal offer can be represented in a web page, a feed, an MCP tool description and a payment product without forcing those surfaces to share identical field names. It also creates a testable invariant: every representation that can initiate a purchase must resolve to the same authoritative offer or clearly state that it is informational only.

Do not call every machine-readable field a “price.” A recommended price, a list price, a promotional price and a payable amount have different authority. Name them separately. If an agent can discover several prices, tell it which one is a comparison value and which one must be confirmed before authorization.

Bind payment terms at request time

Discovery and payment happen at different times. An agent may cache a product description, retry a request after a delay, or compare an offer found through another channel. Price, recipient, asset, network and expiry can change between those events. The payment requirement must therefore be bound to the request or session that the merchant is prepared to honor.

The basic sequence is straightforward:

  1. The agent discovers a product or service and records its offer identity.

  2. It requests the resource or creates a checkout session.

  3. The merchant returns current payment terms when payment is required.

  4. The agent checks that the amount, asset, network, recipient, scope and expiry match its policy.

  5. The agent authorizes the payment and retries or completes the request with payment proof.

  6. The merchant verifies the payment and associates delivery with the accepted offer.

The sequence does not mean the initial catalog price was useless. It supports planning and comparison. It means the catalog price should not silently override a later authoritative challenge. A client that has budgeted for one amount should stop or ask for a new decision when the current requirement is higher or materially different.

The x402 protocol provides the general HTTP pattern in which a resource server responds with 402 Payment Required and communicates payment requirements for the resource. Its V2 message names the payment-required, payment-signature and payment-response stages. A GOAT-specific MPP integration has its own documented challenge and signed Payment-Receipt fields. These wire formats should not be treated as interchangeable merely because both are designed for machine-facing payment.

GOAT's merchant guide also documents a route-pricing version in certain challenges. That version can help a service recognize which pricing configuration produced the requirement. However, the documented receipt shape does not currently carry every challenge field, so middleware should not pretend that receipt inspection alone reconstructs every pricing decision. Keep the original challenge, accepted order and receipt together in the merchant record.

Handle token denomination without pretending to be an exchange

Many agent services want to publish a human-readable price while accepting one of several tokens or networks. This introduces a boundary that developers should make explicit. Converting a decimal amount into a token's base units is denomination. Converting between fiat values, tokens and volatile exchange rates is pricing or quoting. They have different freshness and risk requirements.

GOAT's documented QuickPay product price is token-agnostic. The buyer selects an eligible payment option, and the client calculates the corresponding base-unit amount for that option. That does not mean the product is an exchange-rate service or that every token and network is available to every merchant. The active merchant configuration and supported payment pair remain the authority.

An agent should never infer that 0.01 means the same economic value across every asset. A merchant that accepts USDC and USDT can publish separate options, a quote policy or a current challenge that identifies the chosen asset. If conversion is required, the quote should state its source, validity window and rounding rule. If no conversion is supported, the agent should not invent one from a stale market price.

Network choice matters as well. A merchant may support more than one route, but a static list of networks does not establish that the system can bridge, swap or route between them automatically. The payment requirement must identify the actual route the merchant will verify. This is especially important when the same product key appears in multiple environments.

The agent's spending policy belongs on the payer side. It can allow only approved assets, impose a maximum per request and refuse an unrecognized recipient. The merchant's pricing system belongs on the seller side. It can choose supported options and reject amounts that do not match the current offer. Neither side should assume that the other side's policy exists.

Version the offer, not only the page

A page update is not enough to define a commercial revision. An offer can change because the price changes, the deliverable changes, the license changes, the endpoint changes or the merchant withdraws availability. Each change should have an explicit consequence for already discovered and already purchased offers.

For a pay-per-use API, a revision might change the response limit or the per-call amount. For a digital product, it might change the edition or usage rights. The merchant should decide whether the old offer remains valid for a short quote window, must be reselected, or is unavailable to new buyers. The answer should be machine-readable where the purchase flow depends on it.

Recovery needs the same discipline. Suppose an agent broadcasts payment and then loses its connection before receiving the service response. It should resume verification with the original payment context rather than request a second quote and pay again. A merchant record that keeps only today's catalog price cannot reliably distinguish a legitimate retry from a new purchase.

The documented GOAT QuickPay flow is useful here because product-bound sessions preserve the selected product key and server-side terms. The public code and guide still leave merchant-specific fulfillment and recovery responsibilities with the operator. A developer should record the session, payment hash or receipt, accepted offer revision and delivery status in its own operational store.

Make machine-readable terms safe to act on

An agent should not treat parseability as trust. A syntactically valid JSON response can still point to a wrong recipient, an expired offer or a service that cannot deliver what it describes. Before payment, the client should validate both the data shape and the commercial meaning.

At minimum, validate:

  • stable offer identity and required selections;

  • billable unit and quantity boundaries;

  • amount, asset, network and recipient;

  • expiry and any quote or pricing revision;

  • the service endpoint and merchant origin;

  • refund, cancellation and delivery conditions;

  • payer-side budget and authorization policy.

The merchant should validate the inverse after payment: the proof matches the current requirement, the payment is not replayed, the order is in a payable state, and fulfillment is tied to the accepted offer. Payment verification is not proof that the service result is good. Delivery should have a separate state and, where practical, a receipt or result identifier.

This is also where accountless access has limits. A fixed-price resource may be payable without a long-lived customer billing profile, but the service may still need rate limits, abuse controls, persistent order records or an identity signal. “No account” describes one authentication choice; it does not remove the merchant's operational obligations.

A practical implementation checklist

Start with one paid resource and write its offer contract in plain language before designing the JSON. Name the product, unit, deliverable, asset options, network options, expiry, refund rule and delivery evidence. Then map each field to the system that owns it.

Next, run four changes through a test environment: change the price after discovery, retire the offer, retry after payment broadcast, and submit an amount in the wrong asset or network. The correct result is not always “accept.” A clear rejection, a fresh challenge or a resume-verification path can be the safer outcome.

Finally, inspect the merchant record after every scenario. It should answer what the agent selected, what terms it accepted, what it authorized, what payment was verified, what was delivered and whether settlement or refund remains pending. If those facts cannot be correlated, the machine-readable price is only a display feature, not dependable commerce infrastructure.

Machine-readable pricing works when it gives an agent enough information to compare an offer while preserving a later, authoritative decision about payment. The most robust architecture separates catalog identity, commercial terms, payment denomination, authorization, verification and delivery evidence. GOAT Flow can serve as one documented payment and commerce surface within that architecture; developers still own the catalog model, policy boundary and fulfillment record around it.

[01]

AI Knowledge base

More Articles

More Articles

More Articles