Skip to main content

Currency API

Manage currencies for multi-currency environments. Currency records define the available currencies in NetSuite and their properties.

Endpoints

MethodEndpointDescription
GET/record/v1/currencyList all currencies
GET/record/v1/currency/{id}Get a specific currency by ID
POST/record/v1/currencyCreate a new currency
PATCH/record/v1/currency/{id}Update an existing currency
DELETE/record/v1/currency/{id}Delete a currency

Key Fields

Required Fields

FieldTypeDescriptionRequired
nameStringCurrency name (e.g., "US Dollar", "Euro")Yes
symbolStringCurrency symbol (e.g., "$", "€", "£")Yes

Optional Fields

FieldTypeDescriptionRequired
currencyPrecisionIntegerNumber of decimal places (typically 2)No
isBaseCurrencyBooleanWhether this is the base currencyNo
isInactiveBooleanWhether the currency is inactiveNo
displaySymbolStringSymbol displayed in the UINo
symbolPlacementObjectWhere to place symbol (before/after amount)No
localeObjectLocale for formattingNo
formatSampleStringExample of how amounts are formattedNo
exchangeRateNumberDefault exchange rate to base currencyNo

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

  1. Base Currency: Every NetSuite account must have exactly one base currency. This is typically set during initial setup and should rarely be changed.

  2. Currency Precision: Most currencies use 2 decimal places, but some (like Japanese Yen) use 0. Set currencyPrecision accordingly.

  3. Exchange Rates: Currency records define the currency itself, not exchange rates. Use the Currency Rate API to manage exchange rates over time.

  4. Deletion Restrictions: Currencies that have been used in transactions cannot be deleted. Mark them as inactive instead using isInactive: true.

  5. Symbol Placement: The symbolPlacement field controls whether the currency symbol appears before or after the amount (e.g., "$100" vs "100$").

  6. Format Sample: The formatSample field helps users understand how amounts will be displayed for this currency.

  7. Multi-Currency Setup: Before using multiple currencies, ensure that Multi-Currency Management is enabled in NetSuite under Setup > Company > Enable Features.

  8. Permissions: Requires "Lists > Currency" permission in NetSuite.

  9. ISO Standards: It's recommended to follow ISO 4217 currency codes (USD, EUR, GBP, etc.) for consistency.

  10. Inactive Currencies: Making a currency inactive prevents it from being used in new transactions but preserves historical data.