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/nodeStandard 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:
ArcenClientArcenApiErrorverifyWebhookSignature
The package also exposes advanced optional services:
x402MiddlewareWebhookServiceUsageServiceSettlementServiceSettlementWriterServiceEventListenerServiceBillingKeeperTablelandServiceProofOrchestratorAxelarTransportCCIPTransportInMemoryNonceStoreRedisNonceStore
Environment variables
ARCENPAY_API_KEY=api_xxxxxxxxx
ARCENPAY_WEBHOOK_SECRET=whsec_xxxxxxxxxARCENPAY_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.