A payment API returns success. The interface turns green. Everyone relaxes.
But what exactly succeeded?
The payment rail may have accepted or settled money while the merchant never received the callback. Inventory may still be uncommitted. The selected variant may have changed. Fulfillment may not have started. A buyer or Agent may be staring at a timeout and deciding whether to retry.
In distributed commerce, payment success is one fact. Transaction completion is a chain of facts owned by different systems and people.
The green checkmark hides several clocks
A useful commerce state model separates at least these stages:
intent
-> authorization
-> payment attempt
-> payment outcome
-> merchant acknowledgement
-> order acceptance
-> fulfillment
-> delivery / return / dispute
These stages do not advance on one clock.
- The payment rail knows whether money moved.
- The merchant knows whether it accepted the commercial obligation.
- The inventory system knows whether the exact item and variant were committed.
- The fulfillment system knows whether dispatch started.
- The buyer knows whether the received outcome matches what was approved.
Collapsing them into paid=true creates a dangerous ambiguity: nobody can tell who owns the next action.
Timeout is a state, not permission to retry
Suppose an Agent submits a payment and the connection times out. There are at least three possibilities:
- The payment failed before reaching the provider.
- The payment succeeded, but the response was lost.
- The provider accepted it, but final settlement is still pending.
Blindly retrying can create a duplicate charge. Blindly declaring failure can leave a paid buyer without an acknowledged order.
The correct response is usually outcome_unknown, followed by deterministic reconciliation. The system should query the authoritative payment record using the same idempotency key, compare it with the approved purchase intent and then advance the commerce state exactly once.
The receipt should connect intent to responsibility
A model-generated sentence is not enough. A recoverable transaction needs a compact machine-readable record such as:
{
"intent_id": "intent_123",
"idempotency_key": "checkout_123_attempt_1",
"approved": {
"seller": "seller_42",
"item": "sku_7",
"variant": "green-8-pack",
"currency": "USDC",
"maximum_total": "18.29",
"destination": "SG",
"terms_version": "terms_2026_08_29"
},
"payment": {
"state": "confirmed",
"authoritative_reference": "rail_ref_456"
},
"commerce": {
"merchant_acknowledged": false,
"inventory_committed": "unknown",
"fulfillment": "not_started",
"next_owner": "merchant_reconciliation"
}
}
This is an illustrative architecture pattern, not a WebAZ API response. Its important property is that payment and commerce remain separate while the record identifies what was approved and who must act next.
Agents make this boundary more important
Humans already misread green checkmarks. Agents add retries, tool chaining and compressed summaries.
An Agent-safe commerce workflow should therefore:
- bind approval to an exact seller, item, variant, currency, maximum total, destination and terms version;
- assign an idempotency key before the first external write;
- represent timeout as
unknown, notfailed; - reconcile against the authoritative rail before retrying;
- keep payment, order and fulfillment states independently visible;
- name the system or person that owns the next action.
The Agent may prepare and explain. It should not reinterpret approval or invent completion.
One current WebAZ example
WebAZ currently exposes two live settlement rails with different custody models.
With Direct Pay, payment happens off-platform from buyer to seller. WebAZ does not hold the principal. WebAZ does not verify the payee or payment method, guarantee payment or issue the seller's refund. It records order states, acknowledgements, a snapshot of the payment instructions and evidence so the later process remains legible.
For eligible USDC orders, real funds are locked in an immutable Base-mainnet escrow contract. The contract is runtime-gated, capped per order and has not had a third-party security audit. An on-chain payment or release still does not prove delivery; settlement and fulfillment remain different states.
The public WebAZ launch pulse reported 37 completed orders and 15 resolved disputes at 08:41 UTC on 29 August 2026. Those are dated protocol counts, not a claim that every failure mode above occurred on WebAZ.
A practical test
Take one failed or ambiguous checkout from your own system and answer five questions:
- What is the last authoritative fact?
- Which state is still unknown?
- Is retrying safe, and how is that proven?
- Who owns the next action?
- What evidence will let the buyer, merchant and operator reconstruct the decision later?
If the answer is only “the payment screen was green,” the transaction is not yet legible enough for an Agent.
Payment success matters. But a trustworthy commerce system must also explain what happened next.
WebAZ protocol status: https://webaz.xyz/.well-known/webaz-protocol.json
Top comments (0)