For builders

Build software that pays its own way

Paxeer X is an EVM chain, so your tools already work. The LayerX toolkit adds what they lack: wallets with limits a person sets, payments per request, and a signed receipt for every action.

Five steps from an empty folder to a paid request with a receipt you can prove. Every snippet uses the published packages.

Quickstart

Twenty minutes, one terminal and a browser wallet. By the end an agent you control has paid for a web search out of a budget you set, and you hold the receipt.

  1. 1

    Install the SDK

    One package per language, all open source and all speaking the same wire format. The Node install also pulls in the buyer middleware, which turns a 402 response into a paid request. Pick your language above the code.

    bashReady
    npm install @sidiora/layerx-sdk @sidiora/layerx-buyer-middleware
  2. 2

    Connect to chain 125

    Paxeer X is an EVM chain, so MetaMask, PaxPort and any EIP-1193 wallet join it with the standard wallet_addEthereumChain call. Foundry, Hardhat, viem and ethers point at the same URL. Sixteen public nodes stand behind it.

    connect.tstypescriptReady
    1const PAXEER_X = {2  chainId: "0x7d", // 1253  chainName: "Paxeer X Network",4  nativeCurrency: { name: "Paxeer", symbol: "PAX", decimals: 18 },5  rpcUrls: ["https://api-mainnet-beta.paxeer.network/rpc"],6  blockExplorerUrls: ["https://paxscan.io"],7};89await window.ethereum.request({10  method: "wallet_addEthereumChain",11  params: [PAXEER_X],12});13const [address] = await window.ethereum.request({14  method: "eth_requestAccounts",15});
  3. 3

    Give an agent a wallet with a limit

    An agent wallet is a wallet with rules attached. You name the agent, say what it is for, and set a monthly ceiling. The network holds the agent to that ceiling on every payment, so the agent never has to be trusted to stop on its own. Lower the limit later with agent.limit and it takes effect on the next request. Idempotency keys make every call safe to retry.

    agent.tstypescriptReady
    1import { ProductionClient, SecretBytes, idempotencyKey } from "@sidiora/layerx-sdk";2import { LayerXPaymentHttpTransport } from "@sidiora/layerx-buyer-middleware";34const layerx = new ProductionClient(5  new LayerXPaymentHttpTransport({6    baseUrl: process.env.LAYERX_API_URL,7    bearerToken: new SecretBytes(new TextEncoder().encode(process.env.LAYERX_API_TOKEN)),8  }),9);1011// A wallet for the agent, with a monthly ceiling the network enforces.12const journey = await layerx.human(13  "agent.create",14  {15    name: "research-bot",16    purpose: "Pays for search and inference",17    monthly_limit: { amount: "50", currency: "USD" },18  },19  { idempotencyKey: idempotencyKey("agent-create-research-bot") },20);2122// Change the ceiling any time. The agent cannot change it back.23await layerx.human(24  "agent.limit",25  { monthly_limit: { amount: "20", currency: "USD" } },26  { idempotencyKey: idempotencyKey("agent-limit-2026-10") },27);
  4. 4

    Make one paid request

    Paid APIs on Paxeer X answer an unpaid call with HTTP 402 and a price. The buyer middleware reads the price, checks it against the agent's limit, pays, and repeats the request with proof attached. Your code sees one fetch. No API key to rotate, no card on file, no invoice at the end of the month.

    pay.tstypescriptReady
    1import { BuyerMiddleware } from "@sidiora/layerx-buyer-middleware";23const buyer = new BuyerMiddleware({4  client: layerx,5  source: agentAccount, // the wallet from step 36  supported: [{ scheme: "exact", network: "eip155:125" }],7  authorizedBatches, // receipt keys the SDK checks signatures against8});910// A normal fetch. If the server answers 402, the middleware pays11// within the agent's limit and retries with proof of payment.12const result = await buyer.fetch(13  "https://api.example.com/v1/search?q=paxeer",14  { method: "GET" },15  "search-2026-10-12-0001", // your idempotency key: pay once, never twice16);1718if (result.kind === "paid") {19  const data = await result.response.json();20}
  5. 5

    Read the receipt

    Every payment comes back with a receipt signed by the network, in the same call, in milliseconds. The SDK verifies the signature before it hands the result to you, and the block that contains the payment is final within about a second. Keep the receipt bytes: anyone can check them later without trusting you or the server.

    receipt.tstypescriptReady
    1if (result.kind === "paid") {2  const { settlement, payment } = result;34  settlement.verification;     // the signature check the SDK already ran5  settlement.canonicalReceipt; // the receipt bytes, yours to keep or forward6  payment.quote.money;         // what the request cost7  payment.journey.state;       // "done" once the block is committed8}910// Anything that is not "paid" is a reason, never a silent failure.11// "refused" means a limit held; "pending" means the chain has it12// and the receipt is about to land.

SDKs in seven languages

Pick the language your team already writes. Every SDK exposes the same operations, checks every receipt the same way, and ships under Apache 2.0.

  • TypeScript

    @sidiora/layerx-sdk

    Node 22 and browsers. Buyer, seller and merchant middleware alongside.

  • Python

    layerx-sdk

    Import layerx_sdk. FastAPI middleware for paid routes.

  • Rust

    layerx-sdk

    The crate the CLI and the agent daemon are built on.

  • Go

    platform/sdk/go

    A Go module with the same operations and receipt checks.

  • Java and Kotlin

    com.sidiora.layerx:layerx-sdk

    Maven and Gradle. Spring Boot starter for paid endpoints.

  • .NET

    LayerX.Sdk

    net8.0. ASP.NET sample included.

  • Swift

    LayerXSDK

    Swift Package Manager, for iOS and macOS agents.

  • Browser wallet

    @paxeer/wallet

    EIP-1193 provider and React hooks for PaxPort sign-in.

Fits the frameworks you use

Server adapters put a price on a route in Express, Next.js, FastAPI and Spring Boot. Agent adapters bring wallets and payments to the Anthropic and OpenAI SDKs, LangChain, Vercel AI, MCP and A2A, so an assistant can pay for a tool the same way it calls one.

On the right, the Python client sends a payment and reads it back: one call to send, one for the signed receipt, one for the committed block.

pay.pytextReady
1from layerx_sdk import PaymentRpc23rpc = PaymentRpc("https://api-mainnet-beta.paxeer.network/rpc")45tx_hash = rpc.send(signed_payment)   # runs the moment it arrives6signed = rpc.receipt(tx_hash)        # the network-signed receipt, right away7final = rpc.status(tx_hash)          # the committed block, within a second

Endpoints

Everything in the eth_, net_, web3_ and debug_ namespaces follows Ethereum. Keep request bodies under 10 MB and prefer subscriptions to polling.

SurfaceAddressWhat it gives you
Network endpointhttps://api-mainnet-beta.paxeer.network/rpcOne URL for the whole network. Standard Ethereum JSON-RPC, pending reads that already include what you just sent, and the signed receipt for any transaction hash.
Public nodeshttps://api1.mainnet-beta.paxeer.network … api16Sixteen numbered nodes with no request quota. Spread load across them and fall back to another if one stops answering.
WebSocketwss://api1.mainnet-beta.paxeer.network/ws … api16eth_subscribe for new heads, logs and receipted transactions. Idle subscriptions stay open for an hour.
Explorerhttps://paxscan.ioBlocks, transactions, verified contracts and every agent's receipts. An API at api.paxscan.io.
Chain ID and coin125 (0x7D) · PAX, 18 decimalsPay gas in PAX or SID, or sponsor it for your users so they never see a gas prompt.

The full reference, including the CLI, the MCP server with its 36 tools and every SDK, is at docs.paxeer.app. The source is open on GitHub.

Try it with nothing at stake

Run the whole network on your laptop: a local chain, the agent emulator and four reference apps that pay each other. Then point the same code at chain 125.