Creates a new product (one-time or subscription) for the authenticated merchant.
The response shape adapts based on the product’s platform — fields irrelevant to the platform are excluded (e.g. no Discord fields for WEB products, no Telegram fields for DISCORD products).
Payment method requirements:
CRYPTO: Merchant must have a receiving address configured (merchantAddressEVM for EVM chains, merchantAddressSOL for Solana)CARD: Merchant must have completed verification (auto-debit approval), a payout address, and a minimum price of 200 cents (2.00 USD/EUR)Asset resolution:
acceptedAssets are specified as token symbols (e.g. "USDC") and are automatically resolved across all accepted chainsacceptedAssets is omitted, all active assets on the accepted chains are enabledacceptedChains is omitted, all active chains are enabledAPI key authentication. Include your API key in the X-Suby-Api-Key header:
X-Suby-Api-Key: your_api_key_hereProduct display name. Must be between 1 and 100 characters
1 - 100"Premium Access"
Price in cents as a string. Must be a positive integer.
Examples: "999" = 9.99, "1500" = 15.00, "100" = 1.00.
For CARD payments, minimum is "200" (2.00 USD/EUR)
"999"
Price currency. Determines how the price is stored and displayed:
USD: Price stored in priceUsd fieldEUR: Price stored in priceEur field. Card (Inflow) payments use EUR natively. Crypto payments are converted via EUR/USD Pyth oracle rateUSD, EUR "EUR"
Payment methods to enable for this product. At least one is required:
CRYPTO: Enables wallet connect and QR code payments. Requires merchant receiving address for the selected chainsCARD: Enables credit/debit card payments via Inflow. Requires merchant verification, payout address, and minimum price of 200 cents1CRYPTO, CARD ["CRYPTO", "CARD"]Optional product description visible to customers. Maximum 500 characters
500"Monthly premium membership with exclusive features"
Billing frequency in days for recurring subscriptions.
Common values: 7 (weekly), 30 (monthly), 90 (quarterly), 365 (yearly).
Set to null or omit for one-time purchases
x >= 130
Target platform for subscription access:
DISCORD: Grants a Discord role to subscribersTELEGRAM: Grants access to a Telegram group/channelWEB: Web application access (managed via webhooks)INVOICE: Invoice-based billing
Defaults to WEB if omitted. Status is ACTIVE for DISCORD/WEB/INVOICE, PENDING for TELEGRAM (requires bot setup)DISCORD, TELEGRAM, WEB, INVOICE "WEB"
Token symbols to accept for payment (e.g. ["USDC", "USDT", "ETH"]).
Symbols are case-insensitive and are automatically resolved across all accepted chains.
For example, "USDC" will enable USDC on Base, Arbitrum, Ethereum, etc. — whichever chains are accepted.
If omitted, all active assets on the accepted chains are enabled
["USDC", "USDT"]Blockchain chain IDs to accept for payment.
Common IDs: 8453 (Base), 42161 (Arbitrum), 1 (Ethereum), 56 (BSC), 101 (Solana).
If omitted, all active chains are enabled.
Chains without matching assets are automatically excluded from the final product
[8453, 42161]Maximum number of subscriptions allowed for this product. Checked on first purchase only, not on renewals. If omitted, defaults to unlimited
x >= 1100
Direct URL to a product image. Displayed on the checkout page
"https://example.com/product.png"
Discord server (guild) ID. Required when platform is DISCORD.
You can find this by enabling Developer Mode in Discord and right-clicking your server
"123456789012345678"
Discord role ID to grant to subscribers. Required when platform is DISCORD.
The Suby bot must have a role higher than this role in the server hierarchy
"987654321098765432"
Discord channel ID where subscription renewal reminders will be sent. Optional, only used with DISCORD platform
"111222333444555666"
Telegram group or channel ID (negative number as string). Required when platform is TELEGRAM.
The Suby bot must be an admin of the group/channel
"-1001234567890"
Product created successfully