Agent payments

An agent asks for a product, gets a price, pays, and asks again.

That is the whole Latitude 10 agent payment API. It runs on the web's own HTTP 402 Payment Required status code, with USDC stablecoin as the money. There is no account, no API key and no checkout page, so an AI agent can buy on its own in one round trip.

$ curl -i https://latitude10.tech/api/agent-products/starter-kit
HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQYXltZW50IHJlcXVpcmVkLiIs…
{"x402Version":1,"accepts":[{"network":"base","maxAmountRequired":"19000000", …}]}

# The agent's wallet signs a $19.00 USDC payment, then asks again:
$ curl -i -H "PAYMENT-SIGNATURE: <signed payment>" https://latitude10.tech/api/agent-products/starter-kit
HTTP/2 200
payment-response: eyJzdWNjZXNzIjp0cnVlLCJ0cmFuc2FjdGlvbiI6…   # on-chain receipt
{"product":"starter-kit","version":"1.1.0",
 "downloadUrl":"https://latitude10.tech/api/kit/download?t=…","expiresAt":"…"}

Who is involved

Four parties take part in every sale. The agent brings a wallet holding USDC. Latitude 10 names the price and hands over the product. A facilitator, Coinbase's CDP x402 service, checks the payment and puts it on the blockchain, so Latitude 10's server never runs blockchain infrastructure itself. The blockchain moves the money straight from the agent's wallet to Latitude 10's own wallet. The server only knows public wallet addresses, never a private key.

AI agentClaude, Cursor, a script…wallet · USDClatitude10.tech/api/agent-products/…/mcpGET product402 · here is the priceGET again + signed payment200 · download linkFacilitatorCoinbase CDP · verifies, settlespaymentBase · SolanaUSDC → seller walletsubmits transfer
The agent only ever talks HTTP to one address. Everything on the blockchain happens behind Latitude 10's server, through the facilitator.

One purchase, step by step

This is the exact order of events when an agent buys the Starter Kit for $19. The agent makes two HTTP requests. Between them, its wallet signs the payment on the agent's own machine. Signing costs nothing and moves no money by itself.

AgentLatitude 10FacilitatorBlockchain1 · GET /api/agent-products/starter-kit2 · 402 Payment Required + price list3 · wallet picks an option and signson the agent's machine · no money moves yet4 · same GET + PAYMENT-SIGNATURE5 · verifyvalid: right amount, right payee6 · settle7 · submit transfer, pay gasconfirmed on chainsettled8 · 200 OK + download link + receipt
Steps 5 to 7 happen while the agent's second request is still open, so from the agent's side it is one request that comes back with the product. Money only moves in step 7, after the payment has been checked. The 200 carries a PAYMENT-RESPONSE header (X-PAYMENT-RESPONSE in v1) with the transaction hash, network and payer, which the agent can keep as its receipt.

The agent needs only USDC, not gas money.The facilitator submits the transaction and pays the network fee. On Base the agent signs a USDC transfer authorization (EIP-3009). On Solana the 402 names the facilitator's feePayeraccount. Either way the agent's wallet only has to hold the price of the product.

Reading the 402: the price list

The 402 response is a machine-readable price quote. This is the response for the Starter Kit, trimmed. It lists every way the agent may pay, and the agent's client picks one it can handle.

// PAYMENT-REQUIRED header, base64-decoded (x402 v2)
{
  "x402Version": 2,
  "resource": { "url": "https://latitude10.tech/api/agent-products/starter-kit" },
  "accepts": [
    { "scheme": "exact",
      "network": "eip155:8453",                 // Base
      "amount": "19000000",                      // 19.000000 USDC
      "asset": "0x833589fC…A02913",               // USDC contract on Base
      "payTo": "0xFc097151…341f2D",               // Latitude 10's wallet
      "maxTimeoutSeconds": 60 },
    { "scheme": "exact",
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "amount": "19000000",
      "asset": "EPjFWdd5…Dt1v",                   // USDC mint on Solana
      "payTo": "CiT1StDi…iryK",
      "extra": { "feePayer": "Hc3sdEAs…J88" } }   // facilitator pays the fee
  ]
}
FieldWhat it tells the agent
amountPrice in USDC's smallest unit. USDC has 6 decimals, so 19000000 is exactly $19.00. The agent can check it against its budget before it signs anything.
scheme: exactPay this exact amount, no more and no less.
networkWhich blockchain. eip155:8453 is Base and solana:5eykt… is Solana mainnet.
assetWhich token. Both entries are the official USDC on their chain.
payToLatitude 10's wallet. The signature is only valid for this address.
maxTimeoutSecondsThe payment has 60 seconds to complete.

Three ways to pay, one response

Agent payment tooling is young, and clients speak different protocols. Every Latitude 10 402 carries both x402 versions at once, so older and newer clients can buy from the same URL. Lightning is offered alongside them whenever an invoice can be issued.

x402 v1x402 v2L402
Price is inthe JSON body, accepts[]the PAYMENT-REQUIRED headerWWW-Authenticate: L402 macaroon, invoice
MoneyUSDC on BaseUSDC on Base or SolanaBitcoin over Lightning
Retry withX-PAYMENTPAYMENT-SIGNATUREAuthorization: L402 <macaroon>:<preimage>
Checked byCoinbase CDP facilitatorCoinbase CDP facilitatorLatitude 10 itself, with a hash check

Nobody has to build this by hand. Any x402 client, such as @x402/fetch for HTTP or @x402/mcpfor MCP, reads the 402, signs with the agent's wallet and retries automatically. When a request carries more than one payment header, the server checks L402 first, then x402 v2, then x402 v1.

x402 · USDCAgentLatitude 10CDP facilitatorthen Base or Solanasigned transferverify + settleL402 · LightningAgentLatitude 10sha256(preimage)= payment hash in the macaroon?macaroon : preimagechecks locallypaid the invoice first
The difference between the two rails is who confirms the payment. x402 asks the facilitator, which also moves the money. With L402 the agent has already paid the Lightning invoice, and paying it revealed a preimage only the payer can know. Latitude 10 confirms that with a hash check and needs no call to anyone.

The same purchase over MCP

Agents that use tools instead of raw HTTP, such as Claude Code or Cursor, can connect to the MCP server at https://latitude10.tech/mcp. It has three tools. buy_product works like the product URL: without a payment it returns the price, and with one it returns the product.

Agentwith an x402 MCP clientlatitude10.tech/mcpStreamable HTTPlist_productscatalog with prices and payment optionsget_product { slug: "starter-kit" }one product, $19.00, Base or Solanabuy_product { slug } · no paymentx402 v2 payment requirementsbuy_product { slug } + paymentproduct · download link valid 24 hoursclient signs, retries
The first two calls are read-only browsing. Only the last buy_productcall moves money, and the MCP client adds the payment without the agent writing any payment code. On the wire the payment travels in the tool call's _meta field under x402/payment, and the receipt comes back under x402/payment-response.

How agents find the store

An agent can only buy what it can discover. Latitude 10 publishes its catalog in the places agents already look:

WhereWhat it is
/llms.txtA plain-language guide for language models: how to buy, and every product with its price.
/.well-known/x402The standard x402 manifest listing every paid URL.
/api/agent-productsThe full catalog as JSON, with versions, prices and payment networks.
/mcpThe MCP server, for agents that work through tools.
x402 BazaarEach 402 carries a bazaar extension describing the input and output, so x402 directories can list the product automatically.

Put the same thing in front of your own API

Everything above is also sold as a product. The Agent Payments Kit gives your API or MCP server the same paywall, including Lightning payments, paid MCP tools and agent discovery.

Agent · x402USDC on Base or SolanaAgent · L402Bitcoin over LightningPaywallNext.js · ExpressHono · Cloudflare Workersanswers 402 until paidYour APIor MCP server with paid toolspaid onlySeller dashboardon latitude10.techreports sales
Agents paying on either rail pass one paywall. Your API code stays the same, because the paywall only lets a request through once it has been paid for.

The kit also includes an MCP server template with paid tools, the discovery files from the previous section, a setup wizard (node setup.mjs) and a test-buyer script, so you can make a real purchase against your own endpoint before launch.

When something goes wrong

The API is built so that an agent is never charged without a way to get what it paid for. Everything that can fail before the money moves is checked first.

ResponseWhat happenedWas money taken?
402 againThe payment was rejected: wrong amount, expired, not enough USDC, or a bad signature. The body gives the reason and the price again.No
503The product can't be delivered right now, so the server refuses to quote a price.No. The message says "Nothing was charged".
429More than 20 requests from one IP address in 10 minutes.No
502Settlement failed or the facilitator didn't answer in time, so the result may be unknown.Possibly. Email jorge@latitude10.tech with the transaction and the link is sent by hand.

Refunds are sent back in USDC to the wallet that paid. Every sale is stored with its transaction hash, payer, amount and network, so it can be traced on a block explorer.

In short

No signup

No account, no API key, no card on file. Payment and access happen in the same request.

Price before payment

The 402 states the exact price up front, so the agent can compare it with its budget or ask a human first.

Can't be overcharged

The wallet signs one exact amount to one named address, valid for 60 seconds. The server cannot take more or reuse it.

Money moves after the check

The payment is verified before it settles, and the product is released right after settlement, with an on-chain receipt.

Only USDC needed

The facilitator pays the network fee, so the agent's wallet holds only dollars.

Humans welcome

Every product also has a normal card checkout on the products page.

Glossary

HTTP 402
"Payment Required". A status code reserved in HTTP since the 1990s, now used for machine payments.
x402
An open protocol that turns a 402 into a price quote an agent can pay in stablecoin.
L402
The Lightning Network equivalent. The 402 carries a Bitcoin invoice and a macaroon, a signed access token. Paying the invoice reveals a preimage, and macaroon plus preimage prove the payment.
USDC
A dollar stablecoin issued by Circle. 1 USDC is designed to equal $1.
Base · Solana
Public blockchains with fast settlement and low fees, where the USDC moves.
Facilitator
A service that verifies an x402 payment and submits it to the blockchain for the seller. Latitude 10 uses Coinbase's CDP facilitator.
MCP
Model Context Protocol. A standard way for AI agents to call tools on a server.

This guide explains how agent payments work. It is not financial, investment, legal or tax advice. Cryptocurrency payments are irreversible, and stablecoins carry risks of their own, including losing their peg.

When an AI agent buys from Latitude 10, the person or company that runs the agent is the buyer and accepts the Terms of Service. Payments on a blockchain or over Lightning are final.