Products and checkout
If you are integrating Hilt into your own product, this is the core public runtime surface:- products
- hosted checkout
- identity handoff
- payment broadcast
- payment confirmation
- payment status
The basic model
- a merchant publishes a template in the dashboard
- your backend reads or manages that same object as a product
- the buyer opens the hosted checkout
- the buyer pays
- Hilt confirms the payment and updates the merchant trail
Auth model
Use:X-Hilt-Keyfor server-side backend or bot integrationsAuthorization: Bearer JWT_TOKENfor session-assisted merchant tools- no auth for the public buyer payload and buyer session start
Supported product routes
These are the main merchant-managed routes:Product route guidance
| Route | Use it when |
|---|---|
POST /v1/products | You want to create a new offer from your own backend |
GET /v1/products | You need the merchant’s launched product list |
GET /v1/products/{product_id} | You need the full stored definition for one product |
PATCH /v1/products/{product_id} | You want to update pricing, destination, or metadata |
DELETE /v1/products/{product_id} | You want to archive a product from sale |
GET /v1/products/{product_id}/payments | You want the payment trail for one product |
GET /v1/products/{product_id}/analytics | You want product-level performance data |
POST /v1/products/{product_id}/handoff-link | Your backend already knows the buyer identity before checkout |
Create a product
UsePOST /v1/products when your backend needs to create the same kind of offer a merchant could otherwise launch from the dashboard.
Product request fields
| Field | Required | Meaning |
|---|---|---|
product_type | yes | Use PAYMENT_LINK for a fixed-price hosted checkout |
title | yes | Buyer-facing offer name |
description | no | Buyer-facing offer description |
amount_minor_units | yes for payment links | Price in minor units of the selected asset |
token_mint | no | Asset mint; for launch, this is usually USDC on Solana |
merchant_wallet | yes | Merchant payout wallet |
delivery_type | yes | What the buyer receives after payment |
delivery_value | no | The invite, redirect, or delivery target |
membership_config | no | Renewal and identity settings for access flows |
Membership fields worth setting deliberately
For recurring or gated access products, these are the fields that most affect the buyer flow:| Field | Why it matters |
|---|---|
membership_config.enabled | Turns the product into an access-bearing flow |
membership_config.platform | Tells Hilt which access surface the merchant is using |
membership_config.identity_type | Defines what buyer identity must be tied to the payment |
membership_config.billing_interval_days | Defines renewal length |
membership_config.grace_period_days | Gives the merchant a post-expiry cushion before access fully lapses |
Read products for a workspace
Update a product
UsePATCH /v1/products/{product_id} when the merchant changes the offer rather than creating a second one.
Archive a product
Supported public checkout routes
These are the main public buyer-flow routes:Read the public checkout payload
Checkout payload fields that matter most
| Field | Meaning |
|---|---|
title / description | Buyer-facing offer copy |
amount_minor_units | Published buyer price in minor units |
merchant_wallet | Wallet that receives the merchant payout |
membership_* | Membership and identity requirements |
checkout_config.default_route | Which payment lane the hosted checkout prefers first |
checkout_config.payment_asset | Asset label shown in checkout |
checkout_config.identity_connect | Platform-native buyer connect actions when available |
Start a buyer checkout session
payment_id your integration should keep all the way through confirmation and post-payment lookups.
Connect response fields
| Field | Meaning |
|---|---|
payment_id | Canonical Hilt payment identifier |
amount_minor_units | Buyer total in minor units |
merchant_amount_minor_units | Estimated merchant net after Hilt fees |
fee_minor_units | Hilt fee amount for this payment |
asset_symbol | Display asset such as USDC or SOL |
expires_at | Session expiry timestamp |
phantom_mobile | Present when mobile Phantom app-switch is available |
Resolve a handoff token in checkout
If the buyer arrives with a signed handoff token, the checkout can resolve it before payment:Create a signed buyer handoff link
Use a handoff link when your bot or backend already knows who the buyer is before checkout starts.Hosted checkout versus custom wallet orchestration
If you use the standard hosted checkout, the typical public flow is:GET /v1/products/p/{slug}POST /v1/products/p/{slug}/connect- Hilt-hosted buyer wallet flow
GET /v1/payments/{payment_id}
Confirm a payment
Confirm response fields
| Field | Meaning |
|---|---|
status | Final payment state returned by the confirmation path |
payment_id | Canonical Hilt payment identifier |
delivery_type / delivery_value | What the buyer receives after payment |
delivery_status | Access handoff state |
membership_id | Membership record created or extended by the payment |
membership_status | Current membership status |
membership_period_end_at | Renewal or access end timestamp when relevant |
Poll payment status
PENDING_SIGNATUREPENDING_CONFIRMATIONCONFIRMEDFAILED
CONFIRMED and FAILED as terminal and everything else as transitional. Expired sessions typically surface as 410 during the session flow or as FAILED with an expiry-style failure reason.
What to persist from checkout
Persist at least:product_idslugpayment_idtx_signatureonce it exists- your own buyer reference if you already know it
Good integration patterns
Use this pattern when you want the cleanest production integration:- create or update the product from your backend when needed
- use the hosted checkout slug as the buyer entry point
- generate a handoff link if the buyer identity is already known
- keep the
payment_id - poll
GET /v1/payments/{payment_id}until terminal - read memberships and receipts after confirmation
What not to build
Do not build your own parallel truth from:- wallet screenshots
- uncorrelated transaction lookups
- assumptions about behavior outside the supported Hilt contract
- hosted checkout
- Hilt payment status
- Hilt memberships
- Hilt receipts

