Create a product
Products are created from your dashboard or via the API. Every product requires a name, a currency, and aprice_type. Everything else is optional.
Name
The title of your product. This is shown to customers at checkout and appears across your dashboard and reports.Pricing
A product’s pricing is set by itsprice_type. Bachs supports three modes:
fixed(the default): You set a price inamountand every customer pays that exact amount.free: No charge. Do not send anamount.custom: The customer decides how much to pay, commonly called pay-what-you-want. Setpreset_amountfor a suggested price shown prefilled at checkout, andminimum_amountand/ormaximum_amountto bound what the customer can enter. Apreset_amountset alongside bounds must fall within them. Setminimum_amountto"0.00"to allow free.
Amount
Amounts are decimal strings in the currency:"29.00" for $29.00, "75000.00" for ₦75,000.00. Always send a string, never a number, and always two decimal places.
This applies to amount, minimum_amount, maximum_amount, and any currency_options amounts.
Currency
Every product has a primary currency, which is the default currency your customers are charged in. It can be any supported currency, including one your account does not hold a balance in. See Charge in any currency for the full list. Bachs settles all withdrawals in either USD or NGN regardless of what currency the customer paid in. If a customer pays in another currency, Bachs handles the conversion and deposits the equivalent into your account.Local-currency pricing
By default customers pay in your product’s primary currency. You can also set exact prices per currency withcurrency_options, or, on a USD-priced product, let adaptive pricing auto-convert at checkout so customers pay in their own local currency.
See Sell in local currencies for the full setup and the list of supported currencies.
Recurring pricing
Give a product abilling_cycle to make it recurring. A recurring product is billed on a schedule through a subscription; a product with no billing_cycle is a one-time purchase.
billing_cycle: the cadence.intervalisday,week,month, oryear;frequencyis the number of intervals per cycle ({ "interval": "month", "frequency": 3 }= every three months).trial_period(optional), a free trial before the first charge, expressed as the same cadence shape. Only meaningful on a recurring product.
A product’s
billing_cycle is fixed once set. You can add a cadence to a one-time product, but you can’t change an existing one; create a new product for a different cadence. This protects existing subscribers from surprise changes.
