Currency Support
This document provides comprehensive information about supported currencies, formatting requirements, and amount restrictions for Onerway payment processing.
Currency Types
Zero-Decimal Currencies
The following currencies do not support decimal places and must be formatted as whole numbers:
Currency | Code | Minimum Amount | Format Example | Notes |
---|---|---|---|---|
Japanese Yen | JPY | 1 |
| No decimal places allowed |
Korean Won | KRW | 100 |
| Typically 100+ for practical transactions |
Indonesian Rupiah | IDR | 10,000 |
| Minimum 5 digits (10,000 IDR) |
Vietnamese Dong | VND | 1,000 |
| Typically thousands for practical use |
Lao Kip | LAK | 1 |
| No decimal places allowed |
Cambodian Riel | KHR | 1 |
| No decimal places allowed |
Myanmar Kyat | MMK | 1 |
| No decimal places allowed |
Paraguayan Guarani | PYG | 1 |
| No decimal places allowed |
Hungarian Forint | HUF | 1 |
| No decimal places allowed |
Icelandic Krona | ISK | 1 |
| No decimal places allowed |
Standard Decimal Currencies
Most currencies support up to 2 decimal places:
Currency | Code | Decimal Places | Format Example | Notes |
---|---|---|---|---|
US Dollar | USD | 2 |
| Standard international currency |
Euro | EUR | 2 |
| European Union currency |
British Pound | GBP | 2 |
| United Kingdom currency |
Canadian Dollar | CAD | 2 |
| Canadian currency |
Australian Dollar | AUD | 2 |
| Australian currency |
Singapore Dollar | SGD | 2 |
| Singapore currency |
Hong Kong Dollar | HKD | 2 |
| Hong Kong currency |
Chinese Yuan | CNY | 2 |
| Chinese currency |
Amount Formatting Guidelines
For Zero-Decimal Currencies
Zero-Decimal Currency Rules
- Use whole numbers only
- Do not include decimal separator
- Do not add
.00
suffix - Examples:
1000
,50000
,100
Correct Examples:
{
"orderAmount": "1000",
"orderCurrency": "JPY"
}
2
3
4
Incorrect Examples:
{
"orderAmount": "1000.00", // ❌ No decimals allowed
"orderCurrency": "JPY"
}
2
3
4
For Standard Decimal Currencies
Decimal Currency Rules
- Use up to 2 decimal places
- Use dot (.) as decimal separator
- Include decimals even for whole amounts
- Examples:
99.99
,100.00
,0.01
Correct Examples:
{
"orderAmount": "99.99",
"orderCurrency": "USD"
}
2
3
4
Minimum Amount Requirements
Special Minimum Amount Rules
- IDR (Indonesian Rupiah): Minimum 10,000 IDR (5 digits required)
- VND (Vietnamese Dong): Typically processed in thousands for practical use
- KRW (Korean Won): Usually minimum 100 KRW for practical transactions
- JPY (Japanese Yen): Minimum 1 JPY, but typically 100+ for practical use
General Guidelines
- Most payment methods have their own minimum amount requirements
- Local payment methods may have specific restrictions based on the payment provider
- Check individual payment method documentation for specific limits
Payment Method Considerations
Credit Card Payments
All supported currencies can be used with credit card payments, following the formatting rules above.
Local Payment Methods
Local payment methods have additional restrictions:
- Currency Support: Each local payment method supports specific currencies
- Amount Limits: May have different minimum/maximum amounts than credit cards
- Regional Restrictions: Some methods only work in specific countries
Reference Local Payment Documentation
For detailed information about local payment method currency support and limits, see the Local Payment Methods documentation and the Transaction Limit column in the payment method tables.
API Implementation
Request Format
When making API requests, ensure currency formatting follows these rules:
{
"orderAmount": "99.99", // For decimal currencies
"orderCurrency": "USD"
}
2
3
4
{
"orderAmount": "1000", // For zero-decimal currencies
"orderCurrency": "JPY"
}
2
3
4
Validation
The Onerway system will validate:
- Currency Format: Must be 3-letter ISO 4217 code
- Amount Format: Must follow decimal rules for the currency
- Minimum Amounts: Must meet currency-specific minimums
- Payment Method Compatibility: Currency must be supported by chosen payment method
Error Handling
Common Currency-Related Errors
Error Scenario | Description | Solution |
---|---|---|
Invalid decimal format | Using decimals with zero-decimal currency | Remove decimal places |
Amount too small | Below minimum amount for currency | Increase amount |
Currency not supported | Currency not available for payment method | Use supported currency |
Format mismatch | Incorrect number format | Follow formatting guidelines |
Best Practices
- Validate Before API Call: Check currency format and amount before making requests
- Handle Errors Gracefully: Provide clear error messages to users
- Currency Selection: Only show supported currencies for chosen payment methods
- Amount Input: Implement proper input validation based on currency type
Examples
Multi-Currency Implementation
// Currency validation function
function validateCurrencyAmount(amount, currency) {
const zeroDecimalCurrencies = ['JPY', 'KRW', 'IDR', 'VND', 'LAK', 'KHR', 'MMK', 'PYG', 'HUF', 'ISK'];
if (zeroDecimalCurrencies.includes(currency)) {
// Zero-decimal currency - must be whole number
return /^\d+$/.test(amount);
} else {
// Standard currency - up to 2 decimal places
return /^\d+(\.\d{1,2})?$/.test(amount);
}
}
// Format amount for API
function formatAmount(amount, currency) {
const zeroDecimalCurrencies = ['JPY', 'KRW', 'IDR', 'VND', 'LAK', 'KHR', 'MMK', 'PYG', 'HUF', 'ISK'];
if (zeroDecimalCurrencies.includes(currency)) {
return Math.round(amount).toString();
} else {
return amount.toFixed(2);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Integration Examples
// Standard decimal currency transaction
{
"merchantNo": "800000",
"orderAmount": "99.99",
"orderCurrency": "USD",
"productType": "CARD"
}
2
3
4
5
6
7
// Zero-decimal currency transaction
{
"merchantNo": "800000",
"orderAmount": "1000",
"orderCurrency": "JPY",
"productType": "CARD"
}
2
3
4
5
6
7
Related Documentation
- Local Payment Methods - Currency support for local payment methods
- Payment Methods Query - Query available methods by currency
- API Card Payment - Credit card payment implementation
- SDK Card Payment - SDK payment implementation
- Checkout Integration - Multi-currency checkout setup