D3 Edge

Payments

Put a price on a path, and let agents pay for it with x402.

A paid route puts a price on one of your own paths. An agent that asks for it gets a 402 with terms, pays, retries, and reaches your origin with a receipt. Policy runs first: a paid route only charges traffic your rules already let through.

Early access

Payments are in early access and enabled per organization, on request. Ask us.

What a paid route is

Your host, one of your paths, and a price in a token you choose. Two things it deliberately is not:

  • It gates on evidence, not on who is asking. You can narrow a route to a tier or a purpose.
  • A block wins, and an allow buys nothing. Pricing is not policy. A rule that blocks still blocks, and nobody buys past it.

Two routes may not price the same request, so overlapping paths are refused when their conditions could both match: /api and /api/premium can't carry different prices for the same request.

Add a paid route

In the dashboard, open Payments.

FieldWhat you set
HostOne of your sites. Only hosts we have already seen traffic for are offered.
PathThe path to price, like /premium.
MatchThis path only, or this path and everything under it.
TokenAny token the payments provider settles. A token is its contract address; the name beside it is self-reported, not vouched for.
Price per requestIn that token's own units, like 0.001. One route can accept up to 10 tokens, each priced separately.
Tier, PurposeOptional. Leave both clear to charge everyone policy lets through.
  • Charging needs a wallet We provision it for your organization in the background.
  • Owners and admins manage routes and wallets. Only an owner can withdraw.

Record first, charge when ready

A new route is Recording only: it logs what it would have charged and takes nothing. Start charging is a second, deliberate step, and you can stop at any time. Same shape as observe first — you see what a price would have collected before it collects anything.

What the caller gets

RoutePayment presentedThe caller getsIn your log
None matcheseitherYour page, free
Recording onlyeitherYour page, freewould have charged
Chargingno402 with the termsasked to pay
ChargingyesYour page and a receipt, or 402paid or refused

The Charge column in your request log carries these words.

The money gate fails closed. Everything else fails open: if we are unreachable, your traffic flows. A charging route is the exception. When a payment cannot be settled, nothing is served and nothing is charged — an outage of ours must not give paid content away.

Paying for a route

For whoever writes the agent. The exchange is x402: ask, read the terms, sign, retry.

HeaderOnCarries
payment-requiredthe 402Base64 JSON: accepts[] and resource. The first 402 has an empty body.
payment-signatureyour retryBase64 JSON: the signed authorization. Send x-payment instead if you speak x402 v1.
payment-responsethe paid responseBase64 JSON receipt naming the transaction. x-payment-response for v1.
  • The scheme is exact. Networks are CAIP-2, like eip155:8453.
  • Amounts are atomic units. maxAmountRequired carries no decimals; read those from the token.
  • Terms are good for 300 seconds, and the payment header caps at 4096 bytes.
  • Use a fresh nonce per attempt. A reused one comes back nonce_already_used, and it is spent either way.

Limits

LimitValue
Paid routes per organization50
Tokens one route accepts10
Challenge validity300 s
Payment header4096 bytes

What it doesn't do yet:

  • No per-agent pricing. A route prices a path, narrowed at most by tier and purpose.

Something you need that isn't here? Tell us.

On this page