qaldev

Why I Built a Currency Exchange Rate API as a Side Project — And What I Learned

by

A while back, I needed exchange rate data for a small personal project. Nothing fancy — just convert a few currencies, maybe pull some historical rates for a simple chart.

So I did what most developers do: went to RapidAPI, picked the first free currency API that looked decent, and integrated it.

It worked. Until it didn't.

💬 The problems nobody talks about

The more I used these APIs, the more friction I ran into — not bugs, just poor design decisions that compound over time:

No batch endpoint. Converting 30 line items in an invoice meant 30 separate requests. Quota burned fast, code got messy.

No timeseries. Need rates over a date range for a chart or accounting reconciliation? Good luck stitching together 90 individual daily calls.

No transparency. Is this rate fresh or cached from 6 hours ago? No idea. The response just gave me a number. No source, no timestamp, no cache signal — nothing to audit or debug with.

Cross-rate inconsistency. Most cheap APIs source from ECB (EUR base) but don't tell you that. Ask for USD/GBP and you'd get silently computed cross-rates with no indication of how they were derived.

These aren't dealbreakers individually. But when you're building something production-grade — an invoicing tool, a BI dashboard, a fintech app — they add up.

🛠️ So I built the version I wanted to use

I didn't set out to build a business. I set out to fix the specific things that annoyed me, then figured other developers probably had the same frustrations.

The rules I gave myself were simple:

Every response must tell you where the data came from (source: "ecb"), whether it's stale, and when it was last updated — via both response fields and HTTP headers (X-Cache, X-Last-Updated).

Batch first. POST /convert/batch handles multiple conversions in one request. One call, one quota unit, clean code.

Timeseries as a first-class endpoint. GET /timeseries returns rates over a date range — ready for charts, accounting, BI pipelines without any stitching.

Cross-rates done correctly. ECB publishes EUR-based rates. The API computes accurate cross-rates for any base currency — USD, GBP, JPY, whatever — consistently and transparently.

No database required. Everything runs on in-memory caching with hourly auto-refresh from ECB. Fast, simple, cheap to operate.

📦 What it looks like in practice

One batch request replaces 50 individual calls. A timeseries endpoint gives you 90 days of data in a single response. Every response tells you exactly what you're working with — fresh data or cached, ECB-sourced, cross-rate computed. Full OpenAPI/Swagger spec so integration takes minutes, not hours.

It's available on RapidAPI with a free tier to try, and Pro/Ultra plans for production use.

🌱 Why I'm sharing this

This is a side project, not a startup. I'm not raising money or building a team. I built something I wanted to exist, made it production-ready, and put it out there.

If you're a developer who's ever burned quota on unnecessary requests, shipped a chart with silently stale rates, or spent 20 minutes debugging why your cross-rates were slightly off — this was built for you.

Feedback welcome. Especially the critical kind.

Developer of Currency Exchange Rate API (https://rapidapi.com/Lequanganh241209/api/currency-exchange-rate-api10)

4 views

Add a comment

Replies

Be the first to comment