strapi-plugin-unirate
v0.1.0
Published
Strapi v5 plugin for the UniRate currency-exchange API — server-side proxy routes (rate/convert/currencies/vat) and an injectable UniRate service. Zero runtime deps.
Maintainers
Readme
strapi-plugin-unirate
Strapi v5 plugin that integrates the UniRate API for currency exchange rates and VAT data. Registers four content-API routes and an injectable unirate service — your API key stays server-side, never exposed to clients.
Install
npm install strapi-plugin-unirateConfiguration
Set your API key as an environment variable:
UNIRATE_API_KEY=your_key_hereOr pass it via Strapi plugin config in config/plugins.ts:
export default {
unirate: {
enabled: true,
config: {
apiKey: process.env.UNIRATE_API_KEY,
// baseUrl: 'https://api.unirateapi.com', // default
// timeoutMs: 30000, // default
},
},
};Routes
The plugin registers these content-API routes (prefix: /api/unirate):
| Method | Path | Description |
|--------|------|-------------|
| GET | /api/unirate/rate?base=USD&target=EUR | Exchange rate (single or all) |
| GET | /api/unirate/convert?from=USD&to=EUR&amount=100 | Convert amount |
| GET | /api/unirate/currencies | List supported currencies |
| GET | /api/unirate/vat?country=DE | VAT rates (optional country filter) |
Routes have no Strapi auth by default — add Strapi API token restrictions in the admin panel as needed.
Service usage
Access the service in lifecycle hooks, custom controllers, or middleware:
// In a Strapi lifecycle hook or custom controller
const unirate = strapi.plugin('unirate').service('unirate');
// Get a single rate
const rate = await unirate.getRate('USD', 'EUR'); // → 0.92
// Get all rates for a base
const rates = await unirate.getRate('USD'); // → { EUR: 0.92, GBP: 0.79, ... }
// Convert an amount
const result = await unirate.convert('EUR', 100, 'USD'); // → 92.00
// List supported currencies
const currencies = await unirate.listCurrencies(); // → ['USD', 'EUR', 'GBP', ...]
// VAT rates
const vat = await unirate.getVatRates(); // all countries
const de = await unirate.getVatRates('DE'); // single countryError handling
All errors extend UniRateError:
import { UniRateError, AuthenticationError, RateLimitError, ProRequiredError } from 'strapi-plugin-unirate';
try {
const rate = await unirate.getRate('USD', 'EUR');
} catch (err) {
if (err instanceof AuthenticationError) { /* invalid key */ }
if (err instanceof RateLimitError) { /* slow down */ }
if (err instanceof ProRequiredError) { /* upgrade plan */}
}Free vs Pro tier
Free-tier endpoints: rates, convert, currencies, VAT rates. Historical data and time series require a Pro subscription.
Related packages
UniRate API client libraries: Python · Node.js · Go · Rust · Ruby · PHP · Java · Swift · .NET
Framework integrations: Next.js · Nuxt · SvelteKit · Astro · NestJS · Eleventy · React · Vue · tRPC · Strapi (this package)
CMS & e-commerce: WordPress · Directus · Medusa · Hugo · Jekyll
Data & AI: LangChain Python · FastAPI · Flask · Django REST · dbt · Airflow
Other: MCP server · CLI · Obsidian · money gem · laravel-money
License
MIT © Unirate Team
