Skip to main content
Most products use Quickstart: VerifyGate or Hosted Verify, then gateCheck on the server. Use this guide when your backend creates receipts directly, or when you automate NEUS as your own profile.

When you need this

NeedUse
User verifies in the browser; you only check laterQuickstart — no access key
Backend creates receipts without opening NEUS in the browserverifyFromApp + per-user approval
MCP, CI, or raw HTTP as your NEUS profileProfile access key (npk_*)

Backend receipt creation (verifyFromApp)

After a user approves your product once, your server can create receipts on their behalf with verifyFromApp. This is not the same as publishing a gate in Hub, which bills hosted checks to your account.
import { NeusClient } from "@neus/sdk";

const client = new NeusClient({
  appId: process.env.NEUS_APP_ID,
  apiKey: process.env.NEUS_ACCESS_KEY,
});

const receipt = await client.verifyFromApp({
  user: { walletAddress: user.walletAddress },
  verifier: "ownership-basic",
  content: { claim: "User completed onboarding", source: "your-app" },
});
Requirements:
  • Active user approval for your appId and site origin
  • Matching app context on the request (X-Neus-App and origin)
If approval is missing, send the user through Hosted Verify first.

Profile access keys

Create keys under Profile → Account. Use Authorization: Bearer npk_... on server and MCP calls only. Never ship keys in browser bundles. Access keys identify your builder profile for automation. They do not replace per-user approval for backend receipt creation.

Billing

Published gates are the default billing source. Hosted checkout and server eligibility checks should pass gateId; NEUS resolves the gate owner, usage billing, sponsor precedence, and x402 fallback from that gate. appId is public attribution for advanced server/app flows. It does not bill your account, and published gate checkout does not require appId or billingWallet. See Billing. Next: API Authentication
Last modified on June 5, 2026