Merchant-scoped credentials
Server credentials resolve to an explicit merchant boundary. Browser-supplied merchant identifiers do not establish authorization.
MemberConsole makes merchant scope, commercial state, customer access, and event integrity explicit on authenticated server paths.
Merchant scope, customer access, pricing, and event verification stay on trusted server paths throughout the request lifecycle.
Server credentials resolve to an explicit merchant boundary. Browser-supplied merchant identifiers do not establish authorization.
Customer-sensitive and merchant-sensitive records are protected by authorization controls, with privileged writes kept behind trusted backend paths.
Pricing, merchant ownership, routing, and other material checkout decisions are validated on trusted server paths before they become canonical.
Outbound merchant events carry identifiers, timestamps, and signatures so consumers can verify authenticity and handle retries safely.
A verified customer can connect eligible purchases without giving one merchant access to another merchant's records.
Orders, payments, refunds, subscriptions, receipts, and fulfillment remain attached to an authoritative commerce model for reconciliation.
The platform derives merchant identity from authenticated server context, validates the requested resource inside that scope, applies trusted configuration, then returns or mutates only records that belong to the authorized boundary.
Read the API key guideResolve the server credential to a merchant scope.
AuthorizationCheck the requested product, order, or action inside that scope.
merchant_idValidate price, currency, ownership, and route configuration.
server statePersist the authoritative record before downstream notification.
canonicalNotify the merchant endpoint independently with retry-safe IDs.
signatureMerchant consumers should verify the event signature and timestamp before processing the payload, persist or deduplicate event IDs, acknowledge valid deliveries promptly, and move longer work to their own background jobs when practical.
const signature = request.headers.get("Webhook-Signature")
const timestamp = request.headers.get("Webhook-Timestamp")
const eventId = request.headers.get("Webhook-Id")
verifySignature({
body: await request.text(),
signature,
timestamp,
secret: process.env.MEMBERCONSOLE_WEBHOOK_SECRET
})
if (alreadyProcessed(eventId)) return new Response(null, { status: 200 })Keep credentials, commerce state, and event verification consistent across code, configuration, testing, and operations.
Use the Resources hub for API keys, checkout, merchant orders, webhook verification, testing, refunds, and fulfillment guidance.
Send a focused report with the affected route or endpoint and safe reproduction steps. Avoid including passwords, raw payment credentials, private keys, or unrelated customer data.