Budget Exchange Rate Record Now Exposed via REST Web Services
The budgetexchangerate record is now available through SuiteTalk REST, allowing programmatic PATCH updates to average, current, and historical exchange rates per period/subsidiary/book. Only REST editing is supported — no SuiteScript record module or SOAP access is documented.
What changed
Oracle has exposed the Budget Exchange Rate record to the REST web services layer. The record ID is budgetexchangerate and it is accessible at:
/services/rest/record/v1/budgetexchangerate/{id}
This record mirrors the Budget Exchange Rates table found at Lists > Accounting > Budget Exchange Rates. In OneWorld accounts, NetSuite seeds this table from the Consolidated Exchange Rates table; you can then maintain budget-specific rates independently.
Record structure
- Not a subrecord and contains no subrecords.
- Each row represents an exchange rate for a specific period, subsidiary, and accounting book combination.
- Rates are either direct (child-to-parent, user-editable) or indirect/derived (grandchild-to-grandparent, system-calculated, read-only).
Editable fields
Only three fields can be written — the same restriction that applies in the UI:
averageRate— Average Exchange RatecurrentRate— Current Exchange RatehistoricalRate— Historical Exchange Rate
All other fields on the record are read-only through REST.
Example PATCH
PATCH /services/rest/record/v1/budgetexchangerate/{id}
{ "averageRate": 1.4, "currentRate": 1.5, "historicalRate": 1.42 }
Prerequisites
- Multiple Currencies feature must be enabled.
- Multiple Budgets feature must be enabled.
- The executing role needs the Currency permission at Full level.
Limitations and unknowns
- The documentation states the record can only be edited through REST. There is no mention of SuiteScript
N/recordsupport (load/save) or SOAP/SuiteTalk WSDL availability. Treat this as REST-only until Oracle documents otherwise. - No governance cost is listed. If you plan to call this in a scheduled or map/reduce script via
N/https(self-calling REST), test governance consumption carefully. - The source does not specify which NetSuite release introduced this record. The slug and release field above are inferred as 2026.1; verify against the actual release notes index for your account version.
What to do
- Check feature flags. Confirm that both Multiple Currencies and Multiple Budgets are enabled in your target account (Setup > Company > Enable Features).
- Verify role permissions. Any integration role or token-based authentication (TBA) role that will call this endpoint needs the Currency permission at Full level.
- Discover record IDs. Use a
GET /services/rest/record/v1/budgetexchangeratecall (with appropriate query parameters for subsidiary, period, and accounting book) to retrieve existing record internal IDs before issuing PATCH requests. - Update existing integrations. If you currently maintain budget exchange rates through CSV imports or manual UI edits, you can now automate this via REST. Build a scheduled integration that PATCHes
averageRate,currentRate, andhistoricalRatefrom your treasury or FX data source. - Do not attempt SuiteScript record operations. Until Oracle confirms
N/recordsupport, avoidrecord.load({ type: 'budgetexchangerate' })— it will likely throw aRECORD_NOT_FOUNDorSSS_INVALID_RECORD_TYPEerror. UseN/httpsto call the REST endpoint if you need to interact with this record from server-side SuiteScript. - Consult the REST API Browser for the full field list, available query parameters, and supported HTTP methods beyond PATCH.
Source: Oracle NetSuite Release Notes