Products & Prices
These are the things you sell. You create them once in the dashboard and reference them by id from checkout. Here's exactly what each object holds.
Products, Prices and Payment Links are managed under Products & prices in the dashboard (the create/list endpoints are authenticated by your dashboard session, not by an API key). What a developer needs day-to-day is the id and the shape — both below.
Product
A named thing you sell. A Product groups one or more Prices.
{
"productId": "prod_1",
"name": "Pro plan",
"description": "Monthly workspace",
"active": true
}
Price
An amount in USD on a Product. This is what your button references. Stablecoins are 1:1 with USD, so unitAmountCents: 2900 means the buyer pays 29.00 USDC or USDT.
{
"priceId": "price_123",
"productId": "prod_1",
"unitAmountCents": 2900,
"amount": "29.00",
"currency": "usd",
"acceptedNetworks": [],
"acceptedTokens": [],
"type": "one_time",
"active": true
}
| Field | Notes |
|---|---|
unitAmountCents | The charge, in USD cents. |
acceptedNetworks | Chains the buyer may use. Empty = all chains you hold a wallet for. |
acceptedTokens | Tokens allowed. Empty = both USDC and USDT (where the chain supports them). |
type | "one_time" by default. "recurring" belongs to the beta subscriptions feature. |
currency | Always "usd". |
Payment Link
A shareable wrapper around a Price, with an optional email capture. Open it with the embed using paymentLinkId or data-hashpay-link — handy for emails, social posts, or a "buy" button where you don't want to reference the raw Price.
{
"paymentLinkId": "plink_1",
"priceId": "price_123",
"collectEmail": true,
"active": true
}