x402 Stellar Client

Client SDK for signing payments (Keypair + Freighter).

Installation

npm install x402-stellar-client @stellar/stellar-sdk

For Freighter support in browsers:

npm install @stellar/freighter-api

Usage

With Keypair (Backends/Scripts)

import { createPaymentHeader, createKeypairSigner } from "x402-stellar-client";
import { Keypair } from "@stellar/stellar-sdk";

const keypair = Keypair.fromSecret("SXXX...");
const signer = createKeypairSigner(keypair);

const xPayment = await createPaymentHeader({
  signer,
  paymentRequirements: {
    scheme: "exact",
    network: "stellar-testnet",
    maxAmountRequired: "10000000", // 1 XLM in stroops
    payTo: "GXXXX...",
    asset: "native",
    resource: "https://api.example.com/premium",
    description: "Premium API access",
    mimeType: "application/json",
    maxTimeoutSeconds: 300,
  },
});

// Use in request
const response = await fetch("https://api.example.com/premium", {
  headers: {
    "X-PAYMENT": xPayment,
  },
});

With Freighter (Browsers)

import { createPaymentHeader, createFreighterSigner } from "x402-stellar-client";

const signer = createFreighterSigner();

const xPayment = await createPaymentHeader({
  signer,
  paymentRequirements: requirements,
});

// Freighter will prompt the user to approve the transaction