Hi — first, thanks for the facilitator and the transparency dashboard. The public analytics
endpoints are genuinely useful and this report is only possible because of them.
We run an x402 resource server (midax402.com) settling on Algorand MainNet through this
facilitator. We're seeing a reproducible gap between the analytics index and the Bazaar
discovery catalog, and we can't tell from the public API whether it's expected behaviour or
something missing on our side.
What we send
Our accepts[] entries follow the discovery shape (verified against a cataloged peer,
api.syraa.fun):
{
"scheme": "exact",
"network": "algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=",
"asset": "31566704",
"payTo": "XFVBA5GJAXJBRWLERVOTZH57NEGPCOP276U4N2E2LCMYWVVESQQPAPBODQ",
"maxTimeoutSeconds": 120,
"extra": { "decimals": 6, "feePayer": "ZMFK2OI7ZBD2U27ISERZC4S6LKM6WMFJPZQ4MYNJDZ2VNBNMBA67RA22AA" }
}
The payment payload for the settle below carried the extensions dict with the bazaar key —
our own request log recorded payload_extension_keys = ["bazaar", "payment-identifier"] for
that transaction.
Reference transaction
- Settle txid:
PAZ4OP2OVMLQ4GQPZMBHWHUJ5J2FX4G5AA3LYAOMCEK4HERTG2OQ
- Timestamp:
2026-07-28 11:55:22 UTC
- Resource:
https://midax402.com/midas-ops/basic (POST)
- Amount: 0.03 USDC · Algorand MainNet · outcome
success
- payTo:
XFVBA5GJAXJBRWLERVOTZH57NEGPCOP276U4N2E2LCMYWVVESQQPAPBODQ
What we observe
The analytics index picks it up correctly and immediately:
GET /data/leaderboards?cat=merchants&range=all → we move from rank 53 to rank 46,
labelled "MIDAX402", volume: 0.06, settles: 2, verifies: 3.
The Bazaar discovery catalog does not, two hours later:
| Endpoint |
Before settle (11:51 UTC) |
+31s (11:55 UTC) |
+2h04m (13:59 UTC) |
GET /discovery/merchants?limit=50 → pagination.total |
41 |
41 |
41 |
our payTo present in that list |
no |
no |
no |
GET /discovery/resources?search=midax402 |
0 of 0 |
0 of 0 |
0 of 0 |
In the transparency dashboard these transactions are classified SOURCE = DIRECT; they don't
appear under BAZAAR or X402-GLOBAL-CHALLENGE.
So the payment is ingested by analytics but the resource/merchant is never cataloged — which
suggests the gap is in the cataloging step rather than in ingestion.
Questions
POST /verify is documented as "Auto-catalogs resources via Bazaar extension". Beyond
sending the bazaar key in the payload extensions, is there anything the
paymentRequirements must contain for the catalog write to happen — e.g. description,
mimeType, or a discoveryInfo object? Cataloged resources show those fields, and we
currently don't send them.
- How is the
source classification (BAZAAR / DIRECT / DEV / X402-GLOBAL-CHALLENGE)
determined — per transaction or per merchant? It isn't exposed as a query parameter on
/data/leaderboards or /data/transactions, so we can't infer it from the public API.
- Is
X402-GLOBAL-CHALLENGE something a merchant opts into, or is it applied on your side?
Happy to share the exact paymentPayload / paymentRequirements we send for that txid if
that helps narrow it down. Thanks!
Hi — first, thanks for the facilitator and the transparency dashboard. The public analytics
endpoints are genuinely useful and this report is only possible because of them.
We run an x402 resource server (
midax402.com) settling on Algorand MainNet through thisfacilitator. We're seeing a reproducible gap between the analytics index and the Bazaar
discovery catalog, and we can't tell from the public API whether it's expected behaviour or
something missing on our side.
What we send
Our
accepts[]entries follow the discovery shape (verified against a cataloged peer,api.syraa.fun):{ "scheme": "exact", "network": "algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=", "asset": "31566704", "payTo": "XFVBA5GJAXJBRWLERVOTZH57NEGPCOP276U4N2E2LCMYWVVESQQPAPBODQ", "maxTimeoutSeconds": 120, "extra": { "decimals": 6, "feePayer": "ZMFK2OI7ZBD2U27ISERZC4S6LKM6WMFJPZQ4MYNJDZ2VNBNMBA67RA22AA" } }The payment payload for the settle below carried the extensions dict with the
bazaarkey —our own request log recorded
payload_extension_keys = ["bazaar", "payment-identifier"]forthat transaction.
Reference transaction
PAZ4OP2OVMLQ4GQPZMBHWHUJ5J2FX4G5AA3LYAOMCEK4HERTG2OQ2026-07-28 11:55:22 UTChttps://midax402.com/midas-ops/basic(POST)successXFVBA5GJAXJBRWLERVOTZH57NEGPCOP276U4N2E2LCMYWVVESQQPAPBODQWhat we observe
The analytics index picks it up correctly and immediately:
GET /data/leaderboards?cat=merchants&range=all→ we move from rank 53 to rank 46,labelled "MIDAX402",
volume: 0.06, settles: 2, verifies: 3.The Bazaar discovery catalog does not, two hours later:
GET /discovery/merchants?limit=50→pagination.totalpayTopresent in that listGET /discovery/resources?search=midax402In the transparency dashboard these transactions are classified
SOURCE = DIRECT; they don'tappear under
BAZAARorX402-GLOBAL-CHALLENGE.So the payment is ingested by analytics but the resource/merchant is never cataloged — which
suggests the gap is in the cataloging step rather than in ingestion.
Questions
POST /verifyis documented as "Auto-catalogs resources via Bazaar extension". Beyondsending the
bazaarkey in the payload extensions, is there anything thepaymentRequirementsmust contain for the catalog write to happen — e.g.description,mimeType, or adiscoveryInfoobject? Cataloged resources show those fields, and wecurrently don't send them.
sourceclassification (BAZAAR/DIRECT/DEV/X402-GLOBAL-CHALLENGE)determined — per transaction or per merchant? It isn't exposed as a query parameter on
/data/leaderboardsor/data/transactions, so we can't infer it from the public API.X402-GLOBAL-CHALLENGEsomething a merchant opts into, or is it applied on your side?Happy to share the exact
paymentPayload/paymentRequirementswe send for that txid ifthat helps narrow it down. Thanks!