Aug 10, 2026

Share

Category /

other

12 min read

GOAT Network

x402 Merchant Analytics: Measure Payment Opportunities, Not Raw Requests

Raw requests and settled transfers distort x402 performance. Build a deduplicated merchant funnel for conversion, delivered revenue, failures, and agent cohorts.

scroll

Table of contents

An x402 merchant can report more requests and more settlements while the paid service is getting worse. Raw HTTP traffic includes probes, retries, expired quotes, and duplicate delivery attempts. Onchain transfers show that value moved, but not that an independent customer received a useful result. Neither number is a reliable business outcome by itself.

The correct starting point for x402 merchant analytics is a deduplicated payment opportunity: one eligible request for one priced resource under one quote. That logical unit should be traceable through the payment challenge, payment attempt, settlement, service execution, response delivery, refund or credit, and later repeat use.

This changes the merchant dashboard from a transaction counter into an operating system. It can answer four different questions without mixing them together:

  • Usage: Which paid resources are agents trying to consume?

  • Conversion: What share of eligible opportunities become settled and delivered purchases?

  • Revenue: How much value was quoted, settled, delivered, refunded, and retained?

  • Behavior: Which pseudonymous or verified agent cohorts return, retry, switch routes, or stop after seeing a price?

The Commercial Unit Is a Payment Opportunity

A web server naturally counts requests. A merchant should count commercial intent.

Suppose an agent requests a market-data endpoint, receives a payment challenge, times out, retries twice, submits a payment, and retries once more to recover the result. Access logs may show five requests. The merchant made one offer and, if everything worked, completed one sale.

Define a payment opportunity as one logical request that:

  1. passed authentication, abuse, and route checks;

  2. requested a resource with an active price;

  3. was not already entitled to a cached or prepaid result; and

  4. was eligible to receive a machine-readable payment requirement.

Give that opportunity a stable commerce_intent_id before returning the challenge. Keep the transport-level request_id for debugging, the merchant order_id for operations, and the protocol payment_id or idempotency key for payment retries. These identifiers may be related, but they are not interchangeable.

The official x402 Payment-Identifier extension reinforces this distinction. It defines a payment ID at the logical-request level so a client can retry without causing the seller to process another payment. That ID is valuable for deduplication, but it still does not establish whether the API job ran or the result reached the client. Commerce analytics needs the payment record and the delivery record.

Raw request volume remains useful for capacity planning, abuse detection, and cache analysis. It is simply the wrong denominator for purchase conversion.

Build an Event Ledger Before a Dashboard

A dashboard cannot repair an ambiguous data model. Start with an append-only event ledger in which every meaningful transition creates a new record. Do not repeatedly overwrite one order row with the latest status and expect to reconstruct latency, retries, or failure sequences later.

A compact event could look like this:

{
  "event_id": "evt_01K...",
  "event_type": "payment.settled",
  "occurred_at": "2026-08-10T09:14:32.481Z",
  "commerce_intent_id": "intent_8f2...",
  "request_id": "req_b31...",
  "payment_id": "pay_7d5...",
  "merchant_order_id": "ord_294...",
  "service_id": "research-api",
  "route_id": "POST:/v1/report",
  "price_version": "report-usd-v7",
  "quoted_amount_atomic": "50000",
  "settled_amount_atomic": "50000",
  "asset_id": "usdc",
  "network_id": "eip155:2345",
  "agent_key": "agt_hmac_91c...",
  "outcome": "success",
  "error_class": null,
  "schema_version": 3
}
{
  "event_id": "evt_01K...",
  "event_type": "payment.settled",
  "occurred_at": "2026-08-10T09:14:32.481Z",
  "commerce_intent_id": "intent_8f2...",
  "request_id": "req_b31...",
  "payment_id": "pay_7d5...",
  "merchant_order_id": "ord_294...",
  "service_id": "research-api",
  "route_id": "POST:/v1/report",
  "price_version": "report-usd-v7",
  "quoted_amount_atomic": "50000",
  "settled_amount_atomic": "50000",
  "asset_id": "usdc",
  "network_id": "eip155:2345",
  "agent_key": "agt_hmac_91c...",
  "outcome": "success",
  "error_class": null,
  "schema_version": 3
}
{
  "event_id": "evt_01K...",
  "event_type": "payment.settled",
  "occurred_at": "2026-08-10T09:14:32.481Z",
  "commerce_intent_id": "intent_8f2...",
  "request_id": "req_b31...",
  "payment_id": "pay_7d5...",
  "merchant_order_id": "ord_294...",
  "service_id": "research-api",
  "route_id": "POST:/v1/report",
  "price_version": "report-usd-v7",
  "quoted_amount_atomic": "50000",
  "settled_amount_atomic": "50000",
  "asset_id": "usdc",
  "network_id": "eip155:2345",
  "agent_key": "agt_hmac_91c...",
  "outcome": "success",
  "error_class": null,
  "schema_version": 3
}

Store integer atomic amounts alongside asset and network identifiers. If the business reports a fiat equivalent, also store the valuation timestamp, price source, and conversion method. Never sum raw token amounts across different assets as if they were one currency.

The minimum join keys are commerce_intent_id, merchant_order_id, and payment_id. The minimum dimensions are service, route, pricing version, asset, network, client version, and a privacy-preserving agent or customer key when one is legitimately available. Event timestamps should be server-generated in UTC, while source timestamps such as chain confirmation time remain separate fields.

Define the Funnel as State Transitions

x402 V2 exposes useful protocol boundaries. The server returns payment terms in PAYMENT-REQUIRED; the client retries with a payment payload in PAYMENT-SIGNATURE; and the server returns structured settlement feedback in PAYMENT-RESPONSE. Merchant events must extend that protocol flow through execution and delivery.

Funnel stage

Distinct event to record

What success means

Typical failure branch

Eligible opportunity

commerce.eligible

One logical request can be priced

Invalid route, blocked caller, unavailable product

Challenge issued

payment.challenge_issued

Valid terms reached the client

Pricing/configuration error, unsupported route

Paid retry received

payment.payload_received

Client returned an authorization payload

Expired quote, malformed payload, policy refusal

Payment verified

payment.verified

Payload satisfies the quoted requirements

Wrong amount, asset, recipient, network, or signature

Payment settled

payment.settled

Payment rail reports successful settlement

Facilitator, RPC, balance, or chain failure

Service executed

service.completed

Paid business operation produced a result

Model, data provider, tool, or internal job failure

Result delivered

delivery.confirmed

Merchant has defined evidence of delivery

Timeout, disconnected client, response-store failure

Remedy completed

remedy.completed

Refund, credit, or redelivery closed the exception

Manual review delay, unsupported refund path

Count distinct commerce_intent_id values at each stage. Event rows can repeat because webhooks, pollers, clients, and workers all retry. State transitions should be idempotent even when event delivery is at least once.

Delivery evidence depends on the product. An immediate JSON endpoint may record that the response was successfully written and cached for recovery. A long-running report may require a completed artifact plus an authenticated retrieval. An MCP tool may record a completed tool result and the server response. The definition should be explicit before the first dashboard is built.

Conversion Is a Family of Ratios

There is no useful metric named simply "x402 conversion rate" until its numerator and denominator are declared.

Use at least these ratios:

challenge coverage
= challenged opportunities / eligible payment opportunities

payment-attempt rate
= opportunities with a valid paid retry / challenged opportunities

settlement conversion
= settled payment intents / challenged opportunities

payment completion
= settled payment intents / valid paid retries

paid fulfillment rate
= delivered paid intents / settled payment intents

end-to-end delivered conversion
= delivered paid intents / eligible payment opportunities
challenge coverage
= challenged opportunities / eligible payment opportunities

payment-attempt rate
= opportunities with a valid paid retry / challenged opportunities

settlement conversion
= settled payment intents / challenged opportunities

payment completion
= settled payment intents / valid paid retries

paid fulfillment rate
= delivered paid intents / settled payment intents

end-to-end delivered conversion
= delivered paid intents / eligible payment opportunities
challenge coverage
= challenged opportunities / eligible payment opportunities

payment-attempt rate
= opportunities with a valid paid retry / challenged opportunities

settlement conversion
= settled payment intents / challenged opportunities

payment completion
= settled payment intents / valid paid retries

paid fulfillment rate
= delivered paid intents / settled payment intents

end-to-end delivered conversion
= delivered paid intents / eligible payment opportunities

Each ratio identifies a different owner. Low challenge coverage points to routing or pricing configuration. A weak payment-attempt rate may indicate an unattractive quote, an unsupported asset or network, wallet friction, or an agent spending policy. Poor payment completion belongs to verification and settlement operations. A falling fulfillment rate is a service reliability problem, even if payment conversion looks healthy.

Server data cannot prove why an agent abandoned a challenge. No second request could mean the price exceeded a budget, the agent lacked a supported wallet, its policy rejected the merchant, the task was cancelled, or the client crashed. Record abandoned_after_challenge as an observed outcome after a defined window. Assign a reason only when trusted client telemetry or an authenticated workflow reports one.

Revenue Has More Than One State

Settled value is necessary for payment analytics, but it is not the only revenue measure a merchant needs.

Quoted value is the total amount offered across valid challenges. It estimates monetizable demand, but repeated or expired offers must be deduplicated.

Authorized or verified value has passed payment checks but may not yet be final under the selected rail. Keep it separate from settled value.

Gross settled value is value reported as successfully settled before remedies and costs. It is a payment outcome, not proof that the service was delivered.

Delivered operational revenue is settled value attached to a successfully delivered result under the merchant's service contract. This is a useful product and operations metric, but it should not be presented as a universal accounting definition.

Net delivered revenue subtracts refunds, customer credits, discounts applied after quote, and other merchant-defined deductions. Infrastructure fees and network costs can be shown separately so teams can distinguish net collections from contribution margin.

Track late payments as their own class. A payment received after a quote or order expires may be valid onchain while no longer authorizing fulfillment at the old terms. Automatically adding it to successful revenue hides a remedy obligation.

For multi-asset acceptance, preserve native atomic amounts and calculate reporting-currency values under one documented valuation policy. A dashboard that silently combines token display units creates precise-looking but meaningless revenue totals.

Failure Rate Must Name the Failed Stage

"Payment failures were 8%" is not an operational metric. Eight percent of what, and where did failure occur?

Use a stage-specific taxonomy:

  • challenge_configuration_failed: an eligible opportunity could not produce valid terms;

  • client_authorization_rejected: the client reported a wallet or spending-policy refusal;

  • payment_verification_failed: the payload did not match the quote or authorization rules;

  • payment_settlement_failed: verification passed but settlement did not complete;

  • service_execution_failed: payment completed but the paid operation failed;

  • delivery_failed: a result existed but the delivery contract was not satisfied;

  • webhook_delivery_failed: an event notification failed while authoritative state still existed elsewhere;

  • reconciliation_mismatch: merchant order, payment record, and settlement evidence did not agree;

  • late_payment: value arrived after expiry;

  • duplicate_suppressed: a retry was recognized and no second charge or execution occurred.

Divide each failure count by the population that reached that stage. Verification failures belong over payment payloads received, not over all HTTP requests. Delivery failures belong over settled payments that required delivery, not over all challenges.

Also measure time in state. Report median and tail latency for request-to-challenge, challenge-to-paid-retry, paid-retry-to-settlement, settlement-to-execution, and execution-to-delivery. A stable success rate can conceal a deteriorating p95 that causes agents to time out and switch providers.

Observe Agent Behavior Without Inventing Identity

A wallet address is not a unique AI agent. One agent can rotate wallets, many agents can share a custodial wallet, and a human or test harness can use the same payment path. Labeling every payer address as a customer inflates acquisition and corrupts retention.

Use three attribution levels:

  • Anonymous intent: behavior is linked only within one commerce intent or short-lived session.

  • Pseudonymous cohort: a stable HMAC-derived key links activity under a legitimate merchant relationship without exposing the underlying credential.

  • Verified identity: a wallet, agent identifier, account, or credential is explicitly bound to the service under a defined verification process.

At every level, the merchant can measure observable behavior: time to a second paid request, repeat-purchase intervals, routes used in sequence, retry ratios, accepted pricing versions, average delivered value, and movement between service tiers. It should not infer an agent's owner, purpose, risk appetite, or reason for abandonment from a wallet alone.

Minimize collected data. Raw prompts, tool arguments, and result bodies are rarely needed for revenue analytics and may contain confidential or personal information. Store service categories, outcome codes, sizes, and latency unless deeper payload retention has a documented operational and legal purpose.

A July 2026 study titled How Agentic Is Agentic Commerce? examined a 280-day x402 activity window and made the broader point that settlement count cannot be read directly as adoption. For an individual merchant, the practical lesson is narrower: first-party order, counterparty, and delivery events are required before transfer activity can be interpreted as customer demand.

Segment the Funnel Before Changing Price

An aggregate conversion rate can hide both a strong product and a broken route. Segment the funnel by:

  • service and endpoint;

  • pricing version and quote amount;

  • asset and network;

  • agent client or SDK version;

  • new, repeat, pseudonymous, or verified cohort;

  • hour, day, and workload window;

  • payment mechanism and facilitator path where applicable.

Price analysis requires the price_version that was actually quoted, not the current catalog price. Compare conversion, fulfillment, repeat use, and net delivered revenue together. A lower price may increase settled requests while reducing revenue per 1,000 eligible opportunities. A higher price may improve revenue per sale but drive valuable repeat agents to another route.

For experiments, assign cohorts deterministically at the commerce-intent or stable-agent level. Do not let one retry see a different price. Set guardrails for fulfillment, error rate, latency, refunds, and concentration before selecting a winner. Cohort differences are observational until assignment and confounding are controlled.

Payment Infrastructure Is an Event Source, Not the Warehouse

Protocol and payment infrastructure should emit trustworthy facts. The merchant analytics layer gives those facts commercial meaning.

For a reference x402 integration, challenge, paid-retry, verification, settlement, and Payment-Identifier hooks can produce the payment-side events. The merchant then joins them to pricing, execution, delivery, and remedy events under stable identifiers.

GOAT Flow provides a concrete example of this division. Its current documentation tells a merchant to generate dappOrderId once for a cart or payment intent, persist it, and reuse it on retry. Documented order states include CHECKOUT_VERIFIED, PAYMENT_CONFIRMED, INVOICED, FAILED, EXPIRED, and CANCELLED. Order records expose fields such as payer, amount, token, payment method, timestamps, and transaction details; backend operations can retrieve status and payment proof.

Its merchant reconciliation surface separates matched payments, unpaid orders, and late payments, with filtered CSV export. Webhooks can contribute transition events, but their availability varies by deployment and they must be authenticated, queued durably, and processed idempotently. Polling or reconciliation remains necessary when a webhook is delayed or missing.

Those capabilities give x402 merchant analytics durable payment-side join points. They do not automatically define a merchant's eligible opportunity, prove that an API result was delivered, identify a unique agent, normalize revenue across assets, or decide when a refund is owed. GOAT Flow should feed the event ledger; the merchant's application and warehouse complete it.

A Worked Merchant Dashboard

Consider a hypothetical data API charging $0.05 per successful request during one day. These values illustrate the formulas; they are not GOAT Network, x402 ecosystem, or industry benchmarks.

The service records 10,000 raw HTTP requests. After collapsing transport retries, it finds 8,400 logical intents. Of those, 7,500 are eligible paid opportunities after excluding invalid, entitled, and non-priced traffic. The service issues 6,000 valid challenges, receives 2,100 valid paid retries, settles 2,000 payments, and records 1,920 delivered results.

Metric

Calculation

Result

Operating interpretation

Raw-to-intent compression

(10,000 - 8,400) / 10,000

16.0%

Request count was inflated by retries or duplicates

Challenge coverage

6,000 / 7,500

80.0%

One in five eligible opportunities did not receive valid terms

Settlement conversion

2,000 / 6,000

33.3%

One third of challenged opportunities settled

Payment completion

2,000 / 2,100

95.2%

100 paid retries failed before settlement

Paid fulfillment rate

1,920 / 2,000

96.0%

80 settled payments lacked confirmed delivery

End-to-end delivered conversion

1,920 / 7,500

25.6%

Roughly one quarter of eligible opportunities became delivered sales

At $0.05 each, gross settled value is $100.00 and delivered operational revenue is $96.00. If the merchant issues $1.50 in refunds or credits, net delivered revenue is $94.50 before infrastructure and service-delivery costs. Net delivered revenue per 1,000 eligible opportunities is therefore $12.60.

The headline settlement conversion of 33.3% is not enough to run the business. Fixing challenge coverage could expose 1,500 additional opportunities. Fixing fulfillment could recover up to 80 already-paid outcomes and reduce remedy costs. Those are different problems with different owners.

Give Each Team a Different View

One shared event ledger should support several focused dashboards.

Merchant and revenue operations need net delivered revenue, paid and fulfilled orders, late payments, refunds, revenue per 1,000 opportunities, reconciliation lag, and concentration by payer cohort or service.

Product and pricing teams need eligible usage by route, settlement conversion by price version, time to second purchase, cohort retention, service sequences, and substitution between products.

Engineering teams need stage-specific failure counts, p50 and p95 latency, duplicate suppression, idempotency conflicts, webhook delay, queue age, service execution errors, and delivery recovery.

Risk and finance teams need amount and counterparty concentration, unusual retry patterns, policy declines when reported, unmatched transfers, late payments, refund exposure, and asset-by-asset reconciliation.

Before publishing a number, attach five pieces of metadata: metric owner, exact formula, event source, allowed lateness, and last schema change. Recompute recent windows when delayed settlement or delivery events arrive, and freeze older reporting periods under a documented close policy. This keeps a webhook delay from becoming a permanent false failure.

FAQ

What is the best primary metric for an x402 merchant?

Use delivered paid opportunities or net delivered revenue per 1,000 eligible payment opportunities as the top commercial metric. Raw requests and settlements remain useful supporting measures, but neither proves that a priced request became a delivered customer outcome.

How should an x402 payment conversion rate be calculated?

Name the stage and denominator. Settlement conversion is distinct settled payment intents divided by distinct valid challenges. End-to-end delivered conversion is distinct delivered paid intents divided by eligible payment opportunities. Do not divide payments by raw HTTP requests when retries and probes are present.

Does a settled x402 payment count as revenue?

It counts as gross settled value. A merchant should separately track whether the paid service was delivered and whether any refund, credit, or deduction followed. Formal revenue recognition depends on the merchant's contract and accounting policy.

How can a merchant measure repeat AI agent behavior?

Use a stable pseudonymous customer or agent key only when the relationship legitimately supplies one, or use an explicitly verified identity binding. A wallet address alone is not a unique agent. Measure observable repeat use, route sequences, price-version acceptance, and time to return without inferring ownership or intent.

Which x402 failure rates should be tracked separately?

At minimum, separate challenge construction, client authorization, payment verification, settlement, service execution, delivery, webhook, and reconciliation failures. Calculate each rate over the number of logical intents that reached that stage.

Can payment infrastructure replace a merchant analytics warehouse?

No. Payment infrastructure can provide order identifiers, challenges, status, settlement records, proofs, and webhooks. A merchant still needs application events for eligibility, pricing versions, service execution, delivery, refunds, identity mapping, and metric governance. GOAT Flow is useful as a payment-side event source, while the merchant-owned ledger completes the commercial view.

Count Economic Outcomes, Not Protocol Noise

The useful x402 metric ladder is not requests to transactions. It is eligible opportunity -> valid challenge -> settled payment -> delivered service -> repeat demand.

Once every stage shares stable identifiers, merchants can locate lost conversion, distinguish payment reliability from product reliability, calculate delivered revenue, and observe agent cohorts without pretending a wallet is a customer. That is the foundation of credible x402 merchant analytics: an event model that explains what the business delivered, not a counter that merely shows what the protocol processed.

[01]

AI Knowledge base

More Articles

More Articles

More Articles