Skip to content

Set up multicurrency payments

By the end of this guide your gateways are correctly scoped to the currencies they can process, and you know exactly how ChargeOn decides which currency any given payment runs in — the part administrators most often get wrong.

Who does this: a Salesforce administrator. How long: about 45 minutes, plus time confirming with each gateway which currencies it actually supports.

Complete the quick start guide first

This guide assumes ChargeOn is already installed and connected to at least one gateway. If you have not worked through the quick start guide yet, do that first.


Before you start

  • ChargeOn is installed and connected to at least one payment gateway. See the quick start guide if it isn't yet.
  • Multiple Currencies is turned on in Salesforce, and every currency you intend to sell in is Active — Setup → Company Information → Currency Setup. This is a Salesforce platform setting, not a ChargeOn one: ChargeOn does not turn it on for you, and Salesforce does not offer a way to turn it back off once it's on.
  • You know which currencies each of your connected gateways can genuinely process. That comes from your gateway's own account or documentation — ChargeOn has no way to check this for you. See Part 2.

Turning on Multiple Currencies is permanent

Confirm this is what you want before switching it on in a production org. If you're not sure, do this step in a sandbox first.


What you will do

  1. Confirm your Salesforce currency setup
  2. Tell ChargeOn which currencies each gateway can process
  3. See how ChargeOn decides a payment's currency
  4. Check the zero- and three-decimal currencies you use
  5. Take a test payment in a second currency

Part 1 — Confirm your Salesforce currency setup

  1. Go to Setup → Company Information.
  2. Click Currency Setup (or Manage Currencies).
  3. Under Active Currencies, confirm every currency you intend to take payments in is listed and Active.
  4. Note the Decimal Places shown for each currency you use — you'll come back to this in Part 4.
  5. Note your Corporate Currency. ChargeOn doesn't change this, but it's the currency your Salesforce reports and rollups convert everything into.

What you should see: every currency you plan to accept payments in appears in the Active Currencies list, each with the decimal places you expect.


Part 2 — Tell ChargeOn which currencies each gateway can process

Repeat this for each gateway you've connected.

  1. Go to Global Settings → Payment Gateways and open the gateway.
  2. Set Default Currency to the currency this gateway is primarily set up for in its own account.
  3. If the gateway can genuinely settle in more than one currency, tick Supports MultiCurrency.
  4. If you ticked it, choose every currency this gateway can actually process in Supported Currencies. Leave it unticked and the gateway is only ever offered for its Default Currency.
  5. Click Save.

ChargeOn takes your word for this list

Ticking Supports MultiCurrency and adding a currency to Supported Currencies doesn't ask the gateway whether it really supports that currency — ChargeOn has no way to check. Get this list from your gateway's own documentation or account team. Add a currency the gateway doesn't genuinely support, and the charge reaches the gateway and is declined there, rather than being caught earlier by ChargeOn.

What you should see: each gateway record shows the currencies you configured — either a single Default Currency, or Supports MultiCurrency ticked with your full list under Supported Currencies.


Part 3 — See how ChargeOn decides a payment's currency

  1. Open a record of your payment object.
  2. Look at its Currency field — every record carries one once Multiple Currencies is on, and this is the exact value ChargeOn uses.
  3. Click Charge.
  4. Confirm the gateways on offer are only the ones you set up to support that currency in Part 2.

The rule, plainly: ChargeOn always charges a payment in whatever currency is already sitting on the record it's raised against. Nobody — not the payer, not the person clicking Charge, not an AI agent — chooses a currency at charge time. It is decided before the Charge screen even opens, by reading the record's own Currency field. A payment link works the same way, reading the currency stamped on the Payment Link record itself when it was generated.

Once the currency is known, ChargeOn only offers gateways configured to support it (Part 2). If Gateway Routing is switched on, the same check applies to routing rules: a rule that would send a payment to a gateway not configured for its currency is skipped, and the next rule (or the default gateway) is tried instead.

What happens when no gateway supports the currency

If none of the gateways linked to a payment object support the record's currency, ChargeOn blocks the charge before it reaches a gateway — no money moves and no decline is generated anywhere. The Charge screen shows:

No payment gateways support (currency). Please contact your administrator to enable payment processing for this currency.

To fix it: add that currency to a linked gateway (Part 2), or link a gateway that already supports it under Global Settings → Object and Rules.

What you should see: for a record in a currency you've configured, the gateway(s) you expect appear on the Charge screen. For a record in a currency none of your gateways support, you see the blocked message above instead of a gateway picker.


Part 4 — Check the zero- and three-decimal currencies you use

Most currencies use two decimal places — dollars and cents, pounds and pence. A few don't work that way, and ChargeOn already knows the difference: it rounds displayed amounts and encodes what it sends to your gateway according to each currency's real minor unit, not a blanket two-decimal assumption. There is nothing to configure for this — it happens automatically for every gateway.

Currencies with no minor unit at all (0 decimal places) — a Japanese yen amount is always a whole number, never ¥100.00:

BIF — Burundian franc CLP — Chilean peso DJF — Djiboutian franc GNF — Guinean franc
JPY — Japanese yen KMF — Comorian franc KRW — South Korean won MGA — Malagasy ariary
PYG — Paraguayan guaraní RWF — Rwandan franc UGX — Ugandan shilling VND — Vietnamese đồng
VUV — Vanuatu vatu XAF — Central African CFA franc XOF — West African CFA franc XPF — CFP franc

Currencies with three decimal places, one more than usual:

BHD — Bahraini dinar IQD — Iraqi dinar
JOD — Jordanian dinar KWD — Kuwaiti dinar
LYD — Libyan dinar OMR — Omani rial
TND — Tunisian dinar

Everything else uses the standard two decimal places.

  1. If you use any currency from either table above, open Setup → Company Information → Currency Setup and check its Decimal Places value (you already noted this in Part 1).
  2. Compare it against the tables above.

Two separate mechanisms — and they don't have to agree

What you just checked in Salesforce's own Currency Setup, and the tables above, are two independent mechanisms:

  • Salesforce's own decimal places setting governs how amounts display and convert on standard currency fields and in your reports.
  • ChargeOn's own list — the tables above — governs how amounts are rounded on the Charge screen and encoded for your gateway. It does not read Salesforce's setting at all.

Normally the two agree, because both reflect the real-world currency. They can only disagree if someone has changed a currency's decimal places in Salesforce away from the standard value — for example, setting JPY to two decimal places instead of zero. If that happens, the amount your gateway actually receives follows ChargeOn's own list above, not whatever Salesforce's Currency Setup shows. If you rely on a non-standard decimal setting for any currency, verify a real transaction against your gateway's own dashboard rather than assuming the two agree.

What you should see: a payment in a zero-decimal currency (e.g. JPY) shows as a whole number everywhere in ChargeOn — the Charge screen, Transaction History, invoices — and the identical, undivided amount on your gateway's own dashboard.


Part 5 — Take a test payment in a second currency

  1. Open or create a test record in a currency you configured a gateway for in Part 2 — one different from your main currency.
  2. Click Charge.
  3. Confirm the currency shown matches the record, and the gateway offered is the one you expect.
  4. Complete the payment with your gateway's test card or test account details.
  5. Open Transaction History and confirm the transaction's currency and amount.
  6. Check the same transaction in your gateway's own dashboard — the currency and amount should match exactly, decimal places included.

What you should see: a successful transaction in ChargeOn showing the second currency, and a matching transaction — same currency, same amount — in your gateway's own dashboard.


How multicurrency affects recurring payments

A recurring plan's currency is set once, when the plan is created, from the currency of the record it was launched against. Every future cycle — every charge, for the life of the plan — uses that same currency. ChargeOn does not re-check or re-derive it on each cycle, and there is no screen or action to change a plan's currency after the fact.

Choose the right currency before you create the plan

There is no supported way to change a running recurring plan's currency. If a plan was created against the wrong record — and so the wrong currency — the fix is to abort that plan and create a new one against a record in the correct currency, not to edit the existing one.


Multicurrency and the AI surfaces

Every AI-facing action ChargeOn exposes — instant charge, recurring payment setup, scheduled payment, payment link generation — works from a record, exactly like the Charge button, and none of them accept a currency as something to choose. The currency is fixed the moment the payment starts, decided the same way described in Part 3: it comes from the record the action is running against.

This means a customer can't ask an Agentforce agent, or any tool using ChargeOn's Headless 360 surface, to switch currency mid-conversation — there is no currency parameter for an agent to change. To take a payment in a different currency, the action has to run against a different record, or a person has to do it from the record directly.


Reconciliation and multicurrency

Transaction Reconciliation compares what ChargeOn recorded against what your gateway actually processed. For gateways whose API reports amounts in a minor unit — cents, paise and similar — reconciliation has to know how many decimal places that currency actually uses to compare amounts correctly.

A defect fixed in September 2026 affected four such gateways (Stripe, Shift4, FatZebra and RazorPay): reconciliation assumed every amount was expressed in hundredths, which is wrong for a zero-decimal currency like Japanese yen. A ¥5,000 transaction was read back as ¥50, and reconciliation flagged it as Amount Mismatched even though the payment had settled correctly and for the right amount. Reconciliation on these gateways now uses the same currency-aware decimal handling as the rest of ChargeOn (Part 4), so this class of false mismatch is resolved.

If you still see an amount mismatch on a multicurrency transaction, don't assume it's this issue — check the transaction against your gateway's own dashboard before treating it as a reconciliation defect.


Next

Post-configuration testing guide — work through every payment type, including any second currency, before you go live.

ChargeOn terminology — definitions for Gateway fallback, Payment orchestration and other terms used in this guide.


If something went wrong

Symptom Likely cause What to do
The Charge screen shows "No payment gateways support (currency)" No active gateway linked to this payment object has that currency in its Default Currency or Supported Currencies Add the currency to a linked gateway (Part 2), or link a gateway that already supports it under Global Settings → Object and Rules
A payment link shows the same "no gateway" behaviour Same cause as above, checked against the Payment Link record's own currency rather than the original payment object Same fix — Part 2
A recurring plan is charging in a currency you didn't intend, or you need to change one that's running Currency is fixed on the plan when it's created and is never re-evaluated Abort the plan and create a new one against a record in the correct currency — there is no way to edit a running plan's currency
A zero- or three-decimal currency (e.g. JPY, BHD) looks wrong compared to your gateway's dashboard Check whether someone has customised that currency's Decimal Places in Salesforce's own Currency Setup away from the standard value (Part 4) Confirm the real amount against your gateway's dashboard; ChargeOn's own decimal handling, not Salesforce's setting, decides what the gateway receives
An Agentforce or Headless 360 conversation can't switch which currency it's paying in Expected — currency comes from the record the action runs against, not a value the agent or caller can set Run the action against a record in the correct currency, or have a person change the underlying record first