DonutworkHelp Center
Api ReferenceStrumenti di utilità
Documentazione Donutwork

Currency

Access organizational currency settings and perform cross-currency conversions using real-time market data.

Currency

The Currency API provides programmatic access to platform-supported monetary denominations and enables precision-grade currency conversion based on Donutwork's centralized exchange data.


List Enabled Currencies

Retrieve the full collection of ISO 4217 currency codes supported by the platform.

GET
/2026-02-01/currencies.json
Required permissioncurrencies:read

Path, query, and header parameters

No path, query, or additional header parameters.

Responses

List of supported ISO 4217 currency codes (uppercase).

[
  "EUR",
  "USD",
  "GBP"
]

Request examples

curl --request GET 'https://api.hub.donutwork.com/2026-02-01/currencies.json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.hub.donutwork.com/2026-02-01/currencies.json', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ' + process.env.DONUTWORK_API_KEY,
  },
});
const requestId = response.headers.get('x-request-id');
if (!response.ok) {
  const error = await response.text();
  throw new Error(`${response.status} ${error} [${requestId}]`);
}
const contentType = response.headers.get('content-type') ?? '';
const data = response.status === 204 ? null
  : contentType.includes('application/json') ? await response.json()
  : await response.text();
$request = curl_init('https://api.hub.donutwork.com/2026-02-01/currencies.json');
curl_setopt_array($request, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('DONUTWORK_API_KEY'),
    ],
]);
$response = curl_exec($request);
if ($response === false) {
    $error = curl_error($request);
    curl_close($request);
    throw new RuntimeException($error);
}
$status = curl_getinfo($request, CURLINFO_RESPONSE_CODE);
$contentType = (string) curl_getinfo($request, CURLINFO_CONTENT_TYPE);
curl_close($request);
if ($status >= 400) { throw new RuntimeException($response); }
$data = $status === 204 ? null
    : (str_contains($contentType, 'application/json')
        ? json_decode($response, true, flags: JSON_THROW_ON_ERROR) : $response);

Replace uppercase placeholders and sample values with your own data and company resource IDs. Keep the API key on a trusted server. Reuse an idempotency key only for the same logical request and payload.


Perform Currency Conversion

Execute a real-time conversion between two supported currencies.
The response field amount is the converted value, not the original request amount.

POST
/2026-02-01/currencies/{fromCurrency}/{toCurrency}.json
Required permissioncurrencies:write

Path, query, and header parameters

fromCurrencystring· pathRequired
The source ISO currency code (e.g., EUR).
toCurrencystring· pathRequired
The target ISO currency code (e.g., USD).

Request Body

JSON
{
  "amount": 100
}
amountnumber
The monetary value to be converted. Defaults to `0` when omitted.

Responses

Conversion successfully processed.

{
  "from": "EUR",
  "to": "USD",
  "rate": 1.085,
  "amount": 108.5
}

Unsupported base or destination currency code.

{
  "error": "Invalid currency passed"
}

Request examples

curl --request POST 'https://api.hub.donutwork.com/2026-02-01/currencies/FROMCURRENCY/TOCURRENCY.json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "amount": 100
}'
const response = await fetch('https://api.hub.donutwork.com/2026-02-01/currencies/FROMCURRENCY/TOCURRENCY.json', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.DONUTWORK_API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "amount": 100
  }),
});
const requestId = response.headers.get('x-request-id');
if (!response.ok) {
  const error = await response.text();
  throw new Error(`${response.status} ${error} [${requestId}]`);
}
const contentType = response.headers.get('content-type') ?? '';
const data = response.status === 204 ? null
  : contentType.includes('application/json') ? await response.json()
  : await response.text();
$request = curl_init('https://api.hub.donutwork.com/2026-02-01/currencies/FROMCURRENCY/TOCURRENCY.json');
curl_setopt_array($request, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('DONUTWORK_API_KEY'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => '{
  "amount": 100
}',
]);
$response = curl_exec($request);
if ($response === false) {
    $error = curl_error($request);
    curl_close($request);
    throw new RuntimeException($error);
}
$status = curl_getinfo($request, CURLINFO_RESPONSE_CODE);
$contentType = (string) curl_getinfo($request, CURLINFO_CONTENT_TYPE);
curl_close($request);
if ($status >= 400) { throw new RuntimeException($response); }
$data = $status === 204 ? null
    : (str_contains($contentType, 'application/json')
        ? json_decode($response, true, flags: JSON_THROW_ON_ERROR) : $response);

Replace uppercase placeholders and sample values with your own data and company resource IDs. Keep the API key on a trusted server. Reuse an idempotency key only for the same logical request and payload.

Technical Implementation

On this page