Currency Service
Overview
The Currency Service manages the list of currencies available within the system. Currencies are used on entities (customers and suppliers) to specify their preferred trading currency, and are referenced by sales orders.
Each currency includes:
Id- unique identifierCurrencyCode- ISO currency code (e.g.GBP,USD,EUR)CurrencySymbol- display symbol (e.g.£,$,€)CurrencyLabel- full display name (e.g.British Pound)CreatedAt- creation timestamp
All operations are tenant-aware.
Database table
ref.Currency
Endpoints
GET
/api/v1/Currency
Returns all currencies for the current tenant.
Behavior:
- Returns a list of all currencies
- Returns
404if no currencies exist
Response:
List<CurrencyModel>
Authorization:
- Requires Bearer Token
- Permission:
FullRead
GET
/api/v1/Currency/{id}
Returns a single currency by its ID.
Route parameters:
id(int, required) - currency identifier
Behavior:
- Returns
404if not found
Response:
CurrencyModel
Authorization:
- Requires Bearer Token
- Permission:
FullRead
POST
/api/v1/Currency
Creates a new currency.
Request body (CurrencyModel):
CurrencyCode(string, required) - ISO currency codeCurrencySymbol(string, required) - display symbolCurrencyLabel(string, required) - full display name
Behavior:
- Validates all three required fields
- Writes an audit log entry on success
Response:
201 Created-CurrencyModel
Authorization:
- Requires Bearer Token
- Permission:
FullManage
PUT
/api/v1/Currency/{id}
Updates an existing currency.
Route parameters:
id(int, required) - currency identifier
Request body (CurrencyModel):
CurrencyCode(string, optional) - updated ISO codeCurrencySymbol(string, optional) - updated symbolCurrencyLabel(string, optional) - updated display name
Behavior:
Idis taken from the route- Writes an audit log entry on success
Response:
200 OK-CurrencyModel
Authorization:
- Requires Bearer Token
- Permission:
FullManage
DELETE
/api/v1/Currency/{id}
Soft-deletes a currency by ID.
Route parameters:
id(int, required) - currency identifier
Behavior:
- Performs a soft delete — sets
IsDeleted = trueandDeletedAtto the current timestamp - Record is retained in the database
- Writes an audit log entry on success
Response:
204 No Content
Authorization:
- Requires Bearer Token
- Permission:
FullManage
Model
CurrencyModel
Fields:
Id (type: int)- internal identifierCurrencyCode (type: string?)- ISO currency codeCurrencySymbol (type: string?)- display symbolCurrencyLabel (type: string?)- full display nameCreatedAt (type: DateTime)- creation timestamp
Notes
CurrencyIdonEntityModelreferences this tableCurrencyCodeandCurrencySymbolonEntityModelresponses are resolved from this table (read-only)- Deleting a currency does not automatically update entities that reference it
- All data is tenant-scoped
- Internal errors are logged but not exposed to API consumers