Skip to main content
In this guide you’ll set local-currency prices on a product so customers see and pay in their own currency. Charging in a familiar currency builds trust, avoids the FX fees a customer’s bank would add, and gets more payments approved. Bachs gives you two levers that work together:
  • 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 is USD. 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:
  1. The currency option you set for their currency, if you configured one.
  2. The adaptive auto-converted price in their local currency, if adaptive pricing is on.
  3. 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 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.
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 cannot include the product’s primary currency, and each currency can appear only once. Amounts are decimal strings, like all Bachs money.
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 billing_currency:
However the customer pays, Bachs settles to your account in 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 amount per currency (as above).
  • Custom (pay-what-you-want) products: set preset_amount, minimum_amount, and maximum_amount per currency instead of amount.
  • Free products: no amounts needed.

Update the currencies later

Update a product’s price to change its currency_options. Send the complete set you want to keep; the list is replaced, so omitting a currency removes it.

Next steps