JSPM

@arcenpay/node

0.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q66494F
  • License UNLICENSED

ArcenPay SDK — Node.js middleware and billing services

Package Exports

  • @arcenpay/node
  • @arcenpay/node/tableland

Readme

@arcenpay/node

ArcenPay Node.js SDK for server-side billing actions, access-token minting, company APIs, entitlement checks, subscription activation, webhook verification, and optional advanced runtime services.

Install

npm install @arcenpay/node

Standard server path

Create the client:

import { ArcenClient } from "@arcenpay/node";

const client = new ArcenClient({
  apiKey: process.env.ARCENPAY_API_KEY!,
});

Mint a short-lived access token:

const session = await client.identify({
  company: { id: "company_123", wallet: "0xabc..." },
  user: { id: "user_123", wallet: "0xabc..." },
  expiresIn: 3600,
});

Check access and consume usage:

const entitlement = await client.checkEntitlement("scan", {
  id: "company_123",
});
const flag = await client.checkFlag("scan", { id: "company_123" });

const result = await client.consumeEntitlement({
  featureKey: "scan",
  company: { id: "company_123" },
  idempotencyKey: "scan-req-1",
});

Activate a subscription:

const activation = await client.activateSubscription({
  planId: "starter",
  paymentAccount: "0xabc...",
  company: { id: "company_123", wallet: "0xabc..." },
});

Verify webhook signatures:

import { verifyWebhookSignature } from "@arcenpay/node";

const rawBody = await req.text();
const signatureHeader = req.headers.get("x-meap-signature") ?? "";
const signature = signatureHeader.startsWith("sha256=")
  ? signatureHeader.slice("sha256=".length)
  : signatureHeader;

if (
  !verifyWebhookSignature(
    rawBody,
    signature,
    process.env.ARCENPAY_WEBHOOK_SECRET!,
  )
) {
  throw new Error("Invalid webhook signature");
}

Main exports

Standard app integrations usually use:

  • ArcenClient
  • ArcenApiError
  • verifyWebhookSignature

The package also exposes advanced optional services:

  • x402Middleware
  • WebhookService
  • UsageService
  • SettlementService
  • SettlementWriterService
  • EventListenerService
  • BillingKeeper
  • TablelandService
  • ProofOrchestrator
  • AxelarTransport
  • CCIPTransport
  • InMemoryNonceStore
  • RedisNonceStore

Environment variables

ARCENPAY_API_KEY=api_xxxxxxxxx
ARCENPAY_WEBHOOK_SECRET=whsec_xxxxxxxxx

ARCENPAY_BASE_URL is optional. The SDK defaults to http://localhost:3000 outside production and https://app.arcenpay.com in production.

Boundary

Use @arcenpay/node for server-owned logic. For customer-facing UI, use @arcenpay/react.