normalizeAmount) and verifies the scale against the currency metadata before persisting the intent.
Allowed decimals
| Currency type | Examples | Maximum decimals |
|---|---|---|
| Fiat | USD, EUR, BRL | 2 |
| Stablecoins | USDC, USDT | 6 |
| Native tokens | ETH, MATIC, OP | 18 |
| Bitcoin | BTC | 8 |
Examples
AmountValidationError describing the constraints:
Recommendations
- Treat amounts as strings end-to-end. Convert user input to a string early and avoid floating-point math in JavaScript.
- Store the canonical amount from the intent response (
intent.metadata.transferAmount) for later display or reconciliation. - When bridging to blockchain SDKs, convert the validated string to smallest units using the decimals metadata before broadcasting the transaction.