Pricing & payTo
Pricing
Each service is priced per call in USDC, as a decimal string:
{ "priceUSDC": "0.01" }
- USDC has 6 decimals, so
"0.01"=10000base units in your402challenge. - Price whatever the call is worth — micropayments (fractions of a cent) up to a few cents are typical.
- The advertised price must equal the amount in your
402challenge. Agents compare them; a mismatch breaks trust and can fail the call.
payTo — where the USDC lands
payTo is the recipient address for your service's payments. It is not part of a service entry — it's attached to your provider at ingestion, in one of two ways:
Option A — pin it (recommended)
Set payTo on your provider entry. This overrides any derived address and guarantees your listing advertises the exact address your 402 endpoint settles to:
{
"id": "acme-data",
"name": "Acme Data",
"payTo": "0xYourRecipientAddress",
"services": [ ]
}
Use this whenever your endpoint already settles to a known address — it keeps the advertised payTo and the authoritative 402 challenge in lock-step.
Option B — derived
If you omit payTo, the platform derives a stable recipient address for your provider at ingestion. Your 402 endpoint must then settle to that address.
:::warning Keep them in sync
The single most common listing bug is a payTo mismatch: the marketplace advertises one recipient while your 402 challenge names another. Pin payTo (Option A) to your real settlement address to avoid it.
:::
Checklist
-
priceUSDCis a plain decimal string ("0.01"), no symbols. - The
402maxAmountRequiredequalspriceUSDCin base units (×10⁶). -
assetis USDC on XDC (see Constants). -
payToin the listing ==payToin the402challenge == where you actually receive USDC.
Next: Submit your listing →