UniRate Currency

July 8, 2026 · View on GitHub

CI PHP 8.1+ Drupal 10.3 | 11

Drupal module providing live currency exchange rates from the UniRate API. Designed to integrate cleanly into any Drupal 10/11 project with zero additional runtime dependencies.

Features

  • Injectable unirate.client service — use UniRate data anywhere in your Drupal code
  • Currency Rate Block — display a live exchange rate in any block region
  • Admin settings at /admin/config/services/unirate-currency — store your API key in Drupal config (or use the UNIRATE_API_KEY environment variable)
  • Zero runtime PHP dependencies beyond Drupal core (uses Drupal's built-in Guzzle HTTP client)
  • 31 PHPUnit unit tests

Installation

Install via Composer from GitHub:

composer require unirate-api/unirate-drupal
drush en unirate

Then set your API key at /admin/config/services/unirate-currency or via the environment variable UNIRATE_API_KEY.

Get a free API key at unirateapi.com.

Usage

Inject the service

use Drupal\unirate\UniRateClient;
use Drupal\unirate\UniRateException;

class MyCurrencyService {
  public function __construct(
    private UniRateClient $uniRate,
  ) {}

  public function getUsdToEur(): float {
    return $this->uniRate->getRate('USD', 'EUR');
  }

  public function convertAmount(float $amount, string $from, string $to): float {
    return $this->uniRate->convert($amount, $from, $to);
  }
}

Register it in your services.yml:

my_module.currency_service:
  class: Drupal\my_module\MyCurrencyService
  arguments:
    - '@unirate.client'

Available methods

// Get a single rate
$rate = $client->getRate('USD', 'EUR');   // float

// Get all rates relative to a base
$rates = $client->getRates('USD');        // array<string, float>

// Convert an amount
$eur = $client->convert(100.0, 'USD', 'EUR'); // float

// List supported currencies
$currencies = $client->listCurrencies();  // array<string, string>

All methods throw UniRateException on error (network failure, invalid API key, Pro-gated endpoint on a free plan, rate limit, etc.).

Use in Twig via Drupal services

{% set rate = drupal_token('unirate:rate:USD:EUR') %}

Or place the UniRate: Currency Rate block via the block layout interface.

Configuration

SettingConfig keyEnvironment variableDefault
API keyunirate.settings:api_keyUNIRATE_API_KEY
Base URLunirate.settings:base_urlhttps://api.unirateapi.com
Timeoutunirate.settings:timeout10 seconds

Drupal.org submission

The module is pending drupal.org project namespace approval. Until then, install directly via the Composer repository above.


Other UniRate integrations

Language / frameworkPackage
Pythonunirate-api
Node.jsunirate-api
Gounirate-api-go
Rustunirate-api
Rubyunirate-api
PHPunirate-api
Javaunirate-api-java
Swiftunirate-api-swift
.NETUniRateApi
React@unirate/react
Next.js@unirate/next
Vue@unirate/vue
Angular@unirate/angular
Svelte@unirate/sveltekit
Nuxt@unirate/nuxt
Remix@unirate/remix
NestJS@unirate/nestjs
Astro@unirate/astro
Eleventy@unirate/eleventy
Hugohugo-unirate
Jekylljekyll-unirate
Djangodjangorestframework-unirate
FastAPIfastapi-unirate
Flaskflask-unirate
Wagtailwagtail-unirate
Laravelunirate-api/laravel-money
Symfonyunirate-api/unirate-bundle
Strapistrapi-plugin-unirate
WordPressunirate-currency-converter
LangChain (Python)langchain-unirate
LangChain (JS)@unirate/langchain-js
MCP server@unirate/mcp
CLIunirate-cli

UniRate ecosystem

UniRate ships official integrations for 40+ ecosystems, all maintained under the UniRate-API org.

Core clients (9 languages) Python · Node.js / TypeScript · Go · Rust · Java · Ruby · PHP · .NET · Swift

JavaScript / TypeScript React · Next.js · Remix · SvelteKit · Vue · Angular · Nuxt · NestJS · tRPC

Static-site generators Astro · Eleventy · Hugo · Jekyll

CMS & e-commerce Wagtail · WordPress · WooCommerce · Drupal · Strapi · Medusa · Symfony · Laravel · Directus

Data, AI & backend LangChain (Python) · LangChain.js · FastAPI · Flask · Django REST Framework · Apache Airflow · dbt

Platform & tools MCP server · CLI · Cloudflare Workers · Home Assistant · n8n · Google Sheets · VS Code · Obsidian

Money library bridges money gem (Ruby) · NodaMoney (.NET)

Get a free API key at unirateapi.com.