Currency API
Manage currencies for multi-currency environments. Currency records define the available currencies in NetSuite and their properties.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /record/v1/currency | List all currencies |
| GET | /record/v1/currency/{id} | Get a specific currency by ID |
| POST | /record/v1/currency | Create a new currency |
| PATCH | /record/v1/currency/{id} | Update an existing currency |
| DELETE | /record/v1/currency/{id} | Delete a currency |
Key Fields
Required Fields
| Field | Type | Description | Required |
|---|---|---|---|
name | String | Currency name (e.g., "US Dollar", "Euro") | Yes |
symbol | String | Currency symbol (e.g., "$", "€", "£") | Yes |
Optional Fields
| Field | Type | Description | Required |
|---|---|---|---|
currencyPrecision | Integer | Number of decimal places (typically 2) | No |
isBaseCurrency | Boolean | Whether this is the base currency | No |
isInactive | Boolean | Whether the currency is inactive | No |
displaySymbol | String | Symbol displayed in the UI | No |
symbolPlacement | Object | Where to place symbol (before/after amount) | No |
locale | Object | Locale for formatting | No |
formatSample | String | Example of how amounts are formatted | No |
exchangeRate | Number | Default exchange rate to base currency | No |
Example: Create Currency
Request
POST /record/v1/currency
Content-Type: application/json
{
"name": "Euro",
"symbol": "€",
"displaySymbol": "EUR",
"currencyPrecision": 2,
"isBaseCurrency": false,
"isInactive": false,
"symbolPlacement": {
"id": "_beforeNumber"
},
"locale": {
"id": "_internationalEnglish"
},
"formatSample": "€1.234,56"
}
Response
{
"id": "2",
"name": "Euro",
"symbol": "€",
"displaySymbol": "EUR",
"currencyPrecision": 2,
"isBaseCurrency": false,
"isInactive": false,
"symbolPlacement": {
"id": "_beforeNumber",
"refName": "Before Number"
},
"locale": {
"id": "_internationalEnglish",
"refName": "International English"
},
"formatSample": "€1.234,56",
"links": [
{
"rel": "self",
"href": "https://{accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/currency/2"
}
]
}
Example: Update Currency
Request
PATCH /record/v1/currency/2
Content-Type: application/json
{
"displaySymbol": "€",
"formatSample": "€1,234.56"
}
Response
{
"id": "2",
"name": "Euro",
"symbol": "€",
"displaySymbol": "€",
"formatSample": "€1,234.56",
"links": [
{
"rel": "self",
"href": "https://{accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/currency/2"
}
]
}
Query Filters
You can filter currencies using query parameters:
Filter by Base Currency
GET /record/v1/currency?q=isBaseCurrency IS true
Filter by Active Status
GET /record/v1/currency?q=isInactive IS false
Filter by Name
GET /record/v1/currency?q=name CONTAINS Dollar
Search by Symbol
GET /record/v1/currency?q=symbol IS €
Complex Filter Example
GET /record/v1/currency?q=isBaseCurrency IS false AND isInactive IS false
Pagination
GET /record/v1/currency?limit=50&offset=0&orderby=name ASC
Important Notes
-
Base Currency: Every NetSuite account must have exactly one base currency. This is typically set during initial setup and should rarely be changed.
-
Currency Precision: Most currencies use 2 decimal places, but some (like Japanese Yen) use 0. Set
currencyPrecisionaccordingly. -
Exchange Rates: Currency records define the currency itself, not exchange rates. Use the Currency Rate API to manage exchange rates over time.
-
Deletion Restrictions: Currencies that have been used in transactions cannot be deleted. Mark them as inactive instead using
isInactive: true. -
Symbol Placement: The
symbolPlacementfield controls whether the currency symbol appears before or after the amount (e.g., "$100" vs "100$"). -
Format Sample: The
formatSamplefield helps users understand how amounts will be displayed for this currency. -
Multi-Currency Setup: Before using multiple currencies, ensure that Multi-Currency Management is enabled in NetSuite under Setup > Company > Enable Features.
-
Permissions: Requires "Lists > Currency" permission in NetSuite.
-
ISO Standards: It's recommended to follow ISO 4217 currency codes (USD, EUR, GBP, etc.) for consistency.
-
Inactive Currencies: Making a currency inactive prevents it from being used in new transactions but preserves historical data.