> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Amounts and currencies

> Waffo amount formatting specifications and multi-currency payment guidance.

## Amount format

Waffo amounts are represented uniformly as the **String type**. Do not use Number, float, or double.

```
✅ "100.00"
✅ "0.99"
✅ "10000"     (zero-decimal currencies such as JPY)

❌ 100.00      (Number type — floating-point precision issues)
❌ 100         (Number type)
```

> [!NOTE]
>
> String is required instead of Number to avoid floating-point precision issues. `0.1 + 0.2 = 0.30000000000000004` is not acceptable in financial contexts.

## Decimal place rules

Different currencies have different decimal place requirements.

> [!WARNING]
>
> Passing the wrong number of decimal places returns a parameter error (A0003).

### 2 decimal places (most currencies)

The following currencies require amounts expressed to exactly 2 decimal places:

```
"100.00"  ✅
"9.99"    ✅
"100"     ❌ (missing decimal places)
"100.0"   ❌ (only 1 decimal place)
```

| Region | Currencies |
| - | - |
| Asia-Pacific | `PHP` (Philippine Peso), `MYR` (Malaysian Ringgit), `THB` (Thai Baht), `KHR` (Cambodian Riel), `SGD` (Singapore Dollar), `HKD` (Hong Kong Dollar), `MOP` (Macanese Pataca), `CNY` (Chinese Yuan), `AUD` (Australian Dollar), `MNT` (Mongolian Tögrög) |
| Americas | `USD` (US Dollar), `BRL` (Brazilian Real), `MXN` (Mexican Peso), `PEN` (Peruvian Sol), `CAD` (Canadian Dollar), `AWG` (Aruban Florin) |
| Europe & Africa | `EUR` (Euro), `GBP` (British Pound), `RUB` (Russian Ruble), `TRY` (Turkish Lira), `PLN` (Polish Złoty), `SEK` (Swedish Krona), `NGN` (Nigerian Naira) |
| Crypto | `USDC`, `USDT` |

### Currencies with 0 decimal places

The following currencies use 0 decimal places. For `VND`, you can omit the decimal places or include fractional digits that are all zeros. Amount validation fails if any fractional digit is non-zero.

```text theme={null}
"10000"    ✅
"10000.00" ✅ (fractional digits are all zero)
"10000.01" ❌ (contains a non-zero fractional value)
```

| Currency | Name |
| - | - |
| `JPY` | Japanese Yen |
| `KRW` | South Korean Won |
| `VND` | Vietnamese Dong |
| `CLP` | Chilean Peso |

### Special currencies (0 decimals same-currency, 2 decimals cross-currency)

The following currencies do not allow decimals for same-currency orders, but allow 2 decimal places for cross-currency orders:

| Currency | Name | Same-currency order | Cross-currency order |
| - | - | - | - |
| `IDR` | Indonesian Rupiah | `"10000"` ✅ / `"10000.50"` ❌ | `"10000.50"` ✅ |
| `COP` | Colombian Peso | `"5000"` ✅ / `"5000.00"` ❌ | `"5000.00"` ✅ |
| `KES` | Kenyan Shilling | `"100"` ✅ / `"100.50"` ❌ | `"100.50"` ✅ |
| `TWD` | New Taiwan Dollar | `"300"` ✅ / `"300.00"` ❌ | `"300.00"` ✅ |

## Same-currency vs cross-currency orders

| Scenario | Example | Description |
| - | - | - |
| **Same-currency** | Product priced in IDR, user pays with DANA (IDR) | `orderCurrency` matches the user's payment currency |
| **Cross-currency** | Product priced in USD, user pays with DANA (IDR) | `orderCurrency` differs from the user's payment currency |

### Cross-currency order parameters

```json theme={null}
{
  "orderCurrency": "USD",
  "orderAmount": "10.00"
}
```

In a cross-currency scenario, `userCurrency` is optional. However, if `payMethodType` or `payMethodName` is not fully specified, pass `payMethodCountry` to tell Waffo which country the user is in.

Waffo handles exchange rate conversion automatically. The user sees the local currency amount on the checkout page.

## Country and region codes

Country and region fields such as `payMethodCountry` and `userCountryCode` use **ISO 3166-1 alpha-3** three-letter codes, for example `IDN` (Indonesia), `PHL` (the Philippines), and `HKG` (Hong Kong). Do not pass two-letter alpha-2 codes such as `ID`, `PH`, or `HK`.

See the [ISO 3166-1 alpha-3 country and region code list](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for all codes.

## Full currency list

| Currency code | Name | Decimal places | Notes |
| - | - | - | - |
| `IDR` | Indonesian Rupiah | 0 / 2 | Same-currency: 0, cross-currency: 2 |
| `USD` | US Dollar | 2 | |
| `PHP` | Philippine Peso | 2 | |
| `BRL` | Brazilian Real | 2 | |
| `MXN` | Mexican Peso | 2 | |
| `MYR` | Malaysian Ringgit | 2 | |
| `THB` | Thai Baht | 2 | |
| `CAD` | Canadian Dollar | 2 | |
| `EUR` | Euro | 2 | |
| `AUD` | Australian Dollar | 2 | |
| `GBP` | British Pound | 2 | |
| `VND` | Vietnamese Dong | 0 | Omit decimal places or use zero-only fractional digits |
| `CLP` | Chilean Peso | 0 | No decimals |
| `COP` | Colombian Peso | 0 / 2 | Same-currency: 0, cross-currency: 2 |
| `PEN` | Peruvian Sol | 2 | |
| `RUB` | Russian Ruble | 2 | |
| `KES` | Kenyan Shilling | 0 / 2 | Same-currency: 0, cross-currency: 2 |
| `NGN` | Nigerian Naira | 2 | |
| `TWD` | New Taiwan Dollar | 0 / 2 | Same-currency: 0, cross-currency: 2 |
| `HKD` | Hong Kong Dollar | 2 | |
| `JPY` | Japanese Yen | 0 | No decimals |
| `KRW` | South Korean Won | 0 | No decimals |
| `MOP` | Macanese Pataca | 2 | |
| `SGD` | Singapore Dollar | 2 | |
| `CNY` | Chinese Yuan | 2 | |
| `PLN` | Polish Złoty | 2 | |
| `TRY` | Turkish Lira | 2 | |
| `KHR` | Cambodian Riel | 2 | |
| `SEK` | Swedish Krona | 2 | |
| `AWG` | Aruban Florin | 2 | |
| `MNT` | Mongolian Tögrög | 2 | |
| `USDC` | USD Coin | 2 | Cryptocurrency |
| `USDT` | Tether | 2 | Cryptocurrency |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.