Developer playbooks
These playbooks are the shortest path from “something looks wrong” to a concrete next action. They are public, merchant-safe playbooks for Hilt API and webhook workflows.Protect an API endpoint with Hilt Pay API
Use this when an API, agent tool, AI route, dataset, or paid software feature should return402 Payment Required until Hilt confirms access.
Goal
Serve paid work only after Hilt returnshas_access: true.
Sequence
- create a Hilt Pay API app with
POST /v1/access/apps - create a product with
POST /v1/access/products - configure Solana USDC payout with
PUT /v1/access/rail-settings/solana_usdc - call
POST /v1/access/entitlements/checkbefore serving the resource - if access is missing, call
POST /v1/access/payment-sessions - return HTTP
402with the returnedcheckout_urlorpayment_requirement - retry the entitlement check after payment succeeds
- process signed Hilt webhooks for longer-running state updates
Useful routes
Good outcome
- your product never trusts a client-side payment claim
- the
402body contains Hilt’s current handoff for that product - payment, receipt, entitlement, webhook, support, and audit state stay connected in Hilt
Create one-off and recurring Hilt Pay API products
Use this when a backend needs stable product setup instead of manually creating each checkout in the dashboard.Goal
Create access products that match the business model your resource actually sells.Sequence
- create or reuse an access app boundary
- create a one-off product with
billing_model: "one_off"for fixed-period access - create a recurring product with
billing_model: "recurring"andrenewal_mode: "solana_native_subscription"for automatic Solana USDC renewal - set
default_rail: "solana_usdc"and keepallowed_railslimited to rails Hilt says are available - include
live_mode_confirmed: trueonly when the workspace owner is ready for live sessions - check setup readiness before real traffic
- use sandbox sessions to test entitlement, webhook, and receipt object shapes
Useful routes
Good outcome
- one-off products create a paid access period after successful payment
- recurring products use native Solana subscription setup and extend access after successful collections
- your UI shows only the payment options returned by Hilt for that product and account
1. Launch a webhook endpoint safely
Use this when a backend is moving from polling-first integration to native Hilt events.Goal
Receive signed events for payments, receipts, memberships, delivery failures, and support changes without guessing whether the consumer is really ready.Sequence
- create the webhook endpoint in the dashboard or with
POST /v1/webhooks/endpoints - subscribe only to the event types you are ready to process
- if the consumer is product-specific, filter the endpoint to the relevant product ids
- send a signed test event
- verify the signature against the raw body
- make sure your consumer is idempotent on
event.id - after sandbox validation, optionally complete one low-value live settlement check and confirm the real
payment.confirmedevent lands
Useful routes
Good outcome
- test event returns
2xx - delivery log shows a clean first success
- the first real buyer payment or optional low-value live settlement check reaches
payment.confirmed - your consumer unlocks access only after Hilt confirms the payment
2. Recover a failed delivery
Use this when payment succeeded but Telegram, Discord, or another delivery path did not complete cleanly.Sequence
- inspect the membership by
membership_id - load provider diagnostics
- if the problem is transient, retry delivery
- if the issue is still unclear, open or reuse the linked delivery support ticket
- if proof is part of the recovery conversation, send the receipt proof link directly
Useful routes
Good outcome
- provider state is visible before you retry
- the retry result stays tied to the same membership trail
- support history stays attached to the recovery path
3. Prove a payment and send buyer-safe proof
Use this when a buyer or merchant teammate needs verifiable proof instead of a screenshot.Sequence
- list or search receipts
- load the exact receipt
- open the public proof page if a human needs to inspect it
- send the proof link or PDF directly when support needs a clean buyer-facing artifact
Useful routes
Good outcome
- the merchant teammate sees the same payment trail as the workspace
- the buyer gets a stable proof URL and PDF
- the support action is tied to the receipt instead of separate email history
4. Recover a recurring member
Use this when a buyer needs the next approval path, collection check, or recovery action for the next period. Native automatic renewal products use Solana subscription setup evidence, collection evidence, cancellation state, and post-period cleanup state.Sequence
- read renewal intelligence for the cohort view
- inspect the member, paid-through date, cancellation state, and subscription detail
- choose the correct buyer-safe next action from the product and membership state
- for native automatic renewal products, inspect native authorization, collection, cancellation, and revoke-due state before asking the buyer to do anything
- keep the membership and support trail attached to that recovery step
Useful routes
Good outcome
- the buyer gets the right next action quickly
- the merchant sees paid-through dates, grace, expiry, and subscription status clearly
- support does not need to explain recurring operations from scratch
5. Validate an integration before live traffic
Hilt has a sandbox for pre-live API testing. It simulates Hilt lifecycle objects and signed webhooks, but it does not pretend to be a separate Solana settlement rail.Use the sandbox for
- webhook consumer testing
- SDK and Postman flows
- receipt and membership object-shape validation
- delivery-failure and recurring-grace run-throughs
Use an optional low-value live settlement check for
- final end-to-end launch validation
- wallet flow
- chain confirmation
- real merchant payout path
Useful routes
Good outcome
- your webhook consumer accepts
livemode=falsetest traffic correctly - you can replay the same representative Hilt object flow safely
- any live settlement check is the last step, not the first step

