> ## 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.
</Note>

## Decimal place rules

Different currencies have different decimal place requirements.

<Warning>
  Passing the wrong number of decimal places returns a parameter error (A0003).
</Warning>

### 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`                                                                                                                                                                                                                                        |

### 0 decimal places (no decimals)

The following currencies **must not include a decimal point**:

```
"1000"    ✅
"1000.00" ❌ (decimals not allowed)
"999.50"  ❌ (decimals not allowed)
```

| 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.

## 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              | No decimals                         |
| `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                      |
