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.