- Adaptive pricing automatically converts your price into a customer’s local currency at checkout, using the live exchange rate.
- Currency options let you set your own exact price per currency, overriding the automatic conversion for markets you care about.
Before you start
- A sandbox API key (
sk_sandbox_...). See Authentication. - Know your product’s primary currency. It can be any supported currency, and it’s the default customers are charged in, and the one you can’t add as a currency option. See Charge in any currency for the full list and how settlement works.
How pricing resolves at checkout
This applies to a product whose primary currency isUSD. A product priced in any other currency is charged in that currency, and the rest of this section does not apply to it. See Charge in any currency.
For a USD product, Bachs detects the customer’s location at checkout and picks a price in this order:
- The currency option you set for their currency, if you configured one.
- The adaptive auto-converted price in their local currency, if adaptive pricing is on.
- Your primary price, as a fallback.
Currency options are always accepted on the product, but they only take effect when adaptive pricing is enabled in your dashboard. With adaptive pricing off, everyone pays the primary currency.
Steps
1
Set your own price per currency
Add A customer in Ghana pays exactly GHS 150.00; one in Kenya pays KES 1,300.00. Everyone else falls back to adaptive conversion or the USD primary price.
currency_options to the product’s price. Each entry sets an exact amount for one additional currency, so you control the price in that market instead of relying on the live rate.2
Turn on adaptive pricing
Currency options only take effect once adaptive pricing is enabled. Turn it on in your dashboard under checkout settings. With it on, customers in currencies you didn’t set explicitly get an automatic conversion; with it off, everyone pays your primary currency.
3
Check out and confirm the currency
Send the customer to a checkout. Bachs resolves the price for their location using the order above. You can pin a currency for testing with However the customer pays, Bachs settles to your account in
billing_currency:USD or NGN. If they paid in a local currency without a currency option, Bachs handles the conversion and deposits the equivalent.A USD product that resolves to an NGN currency option is treated as NGN-initiated for settlement. NGN-initiated checkout payments settle to your NGN balance by default unless you choose USD settlement in withdrawal settings. See NGN checkout settlement.
Supported currencies
You can set currency options in any of these:
Your primary currency can be any of these too. It cannot also be a currency option on the same product.
Custom and free products
Currency options carry the same pricing shape as the base price:- Fixed products: set
amountper currency (as above). - Custom (pay-what-you-want) products: set
preset_amount,minimum_amount, andmaximum_amountper currency instead ofamount. - Free products: no amounts needed.
Update the currencies later
Update a product’s price to change itscurrency_options. Send the complete set you want to keep; the list is replaced, so omitting a currency removes it.
Next steps
- Products: pricing, currencies, and recurring products.
- The product object: the full
currency_optionsfield reference. - Accept a payment: send the customer to checkout.

