Skip to main content
A published gate owns the checks, price, and billing. Your code passes its gateId.

Send people through the gate

getHostedCheckoutUrl builds three separate recipes: gateId for a published gate, intent: 'login' for sign-in only, or verifiers (or preset) for direct checks. Use one per URL. Shared options are returnUrl, mode, origin, and oauthProvider. appId and billingWallet are advanced sponsor options; omit them with gateId.

React

Every prop is in VerifyGate.

Check access on your server

With a gateId, the response carries a per-requirement data.gate block. Only gate.allRequiredSatisfied === true means the visitor is ready. Top-level eligible covers criteria-only checks and is not gate readiness.
gateCheck reads public and unlisted proofs by default. Private proofs count when that user is signed in. For a strict live check, create a fresh proof and wait for verified.

Private proofs

gateCheck or checkGate

Drive checkout yourself

Most apps never need this. Use it to mirror hosted checkout from your own backend.
A payment is bound to one gate and proof and cannot be reused (409 PAYMENT_ALREADY_USED). The full sequence is in Gate checkout.
Last modified on September 12, 2026