Retour au blog

Développer ou acheter : faut-il créer sa propre API de taux de change ?

V
Vlado Grigirov
June 12, 2026
API Comparison Currency API Exchange Rates Build vs Buy Developer Tools Finexly

Décider s'il faut développer sa propre API de taux de change ou en acheter une gérée est l'une des premières vraies décisions d'architecture que toute équipe manipulant de l'argent dans plus d'une devise doit prendre. Sur le papier, construire semble bon marché : la Banque centrale européenne publie gratuitement des taux de référence, les données ne sont qu'un petit fichier XML, et à quel point peut-il être difficile de parser un flux et de le servir via HTTP ? En pratique, l'écart entre un prototype de week-end et un service de taux prêt pour la production est là où se cache l'essentiel du coût. Ce guide décompose les véritables compromis entre développer et acheter une API de taux de change, avec des chiffres d'ingénierie honnêtes, pour que vous choisissiez la voie qui convient vraiment à votre équipe.

Développer ou acheter en un coup d'œil

Voici la version courte avant d'entrer dans les détails. Le choix porte rarement sur le fait de savoir si vous pouvez construire un flux de taux — presque tout ingénieur compétent le peut — mais sur le fait de savoir si le coût continu de le posséder en vaut la peine par rapport à payer quelques dollars par mois.

FacteurDévelopper (auto-hébergé)Acheter (API gérée)
Ingénierie initialeJours à semainesMinutes
Source des donnéesVous branchez les flux BCE / banques centralesInclus
Fréquence de mise à jourCelle que vous planifiezTemps réel ou quasi réel
Données historiquesVous les construisez et stockezDisponibles sur demande
Responsabilité de disponibilitéLa vôtreSLA du fournisseur
Couverture des devisesLimitée par vos sourcesPlus de 170 d'emblée
Coût mensuelServeur + temps d'ingénierie0 à 129 $ pour la plupart
MaintenanceContinue, pour toujoursAucune
Le titre : construire est « gratuit » de la même manière qu'un chiot est gratuit. Le coût d'acquisition est trivial ; le coût sur la durée ne l'est pas.

Ce que « développer le vôtre » implique réellement

La raison pour laquelle développer ou acheter déroute les gens, c'est que la démo est véritablement facile et que le système en production ne l'est véritablement pas. Voyons à quoi vous vous engagez réellement.

Obtenir les données brutes

La source gratuite la plus courante est la Banque centrale européenne, qui publie des taux de référence de l'euro une fois par jour ouvré, généralement vers 16 h 00 CET. C'est le socle derrière de nombreux flux de taux « gratuits », y compris des projets open source comme Frankfurter, qui combine désormais des données de 84 banques centrales sur 201 devises.

Deux choses posent immédiatement problème. D'abord, le flux de la BCE est basé sur l'EUR et ne se met à jour qu'une fois par jour ouvré — pas de mises à jour le week-end, pas de mouvement intrajournalier, pas de taux les jours fériés TARGET. Si vos utilisateurs effectuent des transactions le dimanche ou attendent des taux qui bougent en cours de journée, un flux quotidien en EUR ne suffira pas. Ensuite, la BCE couvre environ 30 devises. Dès que vous avez besoin d'une paire exotique, d'un métal ou d'un taux crypto, vous revenez à devoir sourcer et réconcilier plusieurs fournisseurs vous-même.

Voici la partie « facile » que tout le monde voit — récupérer et parser le XML quotidien de la BCE :

import requests
import xml.etree.ElementTree as ET

URL = "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
NS = {"x": "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"}

resp = requests.get(URL, timeout=10)
root = ET.fromstring(resp.content)

rates = {"EUR": 1.0}
for cube in root.findall(".//x:Cube[@currency]", NS):
    rates[cube.attrib["currency"]] = float(cube.attrib["rate"])

print(rates["USD"])  # EUR -> USD reference rate

Cela fait peut-être 15 lignes. Ça a l'air terminé. Ça ne l'est pas.

Parser, stocker et servir

Un vrai service a besoin de plus que le dernier instantané. Vous devrez persister les taux de chaque jour pour pouvoir répondre aux requêtes historiques (pensez aux factures, remboursements, comptabilité et déclarations fiscales qui doivent utiliser le taux d'une date précise). Cela signifie un schéma de base de données, une tâche d'ingestion quotidienne, une logique de relance pour quand l'endpoint de la BCE est lent ou en panne, et une arithmétique de conversion de devise de base pour répondre « USD vers JPY » alors que votre source ne donne que « EUR vers tout ».

La conversion de base via une devise pivot est de l'arithmétique simple mais facile à fausser subtilement :

def convert(rates, amount, base, quote):
    # rates are all relative to EUR
    if base != "EUR":
        amount = amount / rates[base]   # to EUR
    return round(amount * rates[quote], 6)

convert(rates, 100, "USD", "JPY")

Ensuite, vous devez exposer cela via une API avec mise en cache, limitation de débit, authentification et CORS si des navigateurs l'appellent. Rien de tout cela n'est difficile isolément. Tout cela ensemble est un petit produit.

Le fardeau de maintenance caché

C'est la partie que le prototype ne révèle jamais. Une fois que votre entreprise dépend du flux, vous prenez en charge un ensemble d'obligations récurrentes : surveiller la tâche d'ingestion et alerter quand elle échoue silencieusement ; gérer les jours où le format ou l'URL de la source change ; combler les lacunes quand une récupération est manquée ; faire évoluer le service à mesure que le trafic croît ; et être la personne réveillée à 2 h du matin quand un flux de paiement casse parce que les taux sont devenus obsolètes. Un flux de taux n'est pas une fonctionnalité que vous livrez une fois. C'est un système que vous exploitez indéfiniment.

Le vrai coût de développer

Les équipes le sous-estiment systématiquement parce que le poste qui compte — le temps d'ingénierie — n'apparaît pas sur une facture. Une ventilation prudente pour un flux auto-hébergé prêt pour la production ressemble à ceci :

  1. Construction initiale : ingestion, stockage, conversion, couche API, authentification, tests — généralement une à trois semaines de travail d'ingénierie concentré.
  2. Infrastructure : un petit serveur ou conteneur plus une base de données. Modeste en dollars, mais jamais nul.
  3. Maintenance continue : de façon réaliste, quelques heures par mois en régime stable, avec des pics chaque fois qu'une source casse ou que les exigences augmentent.
  4. Coût d'opportunité : chaque heure passée à exploiter un flux de taux générique est une heure non consacrée au produit pour lequel vos clients paient réellement.

Appliquez un taux d'ingénierie moyen à ces semaines et le flux « gratuit » coûte discrètement des milliers de dollars rien que pour son premier trimestre — avant même d'avoir servi un seul taux en temps réel ou une seule requête historique que votre source ne fournit pas. Comparez cela à une API de devises gratuite gérée qui démarre à zéro dollar et un palier payant qui, pour la plupart des équipes, se situe bien en dessous de 129 $ par mois.

Ce que vous obtenez en achetant une API de devises

Acheter réduit toute cette construction à une requête HTTP. Un fournisseur géré comme Finexly gère la source, la normalisation, la conversion de base, le stockage historique et la disponibilité, de sorte que vous consommez une interface propre et cohérente. La même tâche qui exigeait ci-dessus un schéma et un pipeline d'ingestion devient :

curl "https://api.finexly.com/v1/latest?base=USD&symbols=EUR,GBP,JPY&apikey=YOUR_API_KEY"
{
  "success": true,
  "base": "USD",
  "timestamp": 1760000000,
  "rates": {
    "EUR": 0.9241,
    "GBP": 0.7886,
    "JPY": 156.32
  }
}

N'importe quelle devise de base fonctionne à tous les paliers — pas de restriction EUR uniquement — et les données historiques sont un changement d'un paramètre plutôt qu'une base de données que vous maintenez :

curl "https://api.finexly.com/v1/historical?base=USD&symbols=EUR&date=2026-01-15&apikey=YOUR_API_KEY"

Ce que vous achetez vraiment, ce sont des données que vous n'avez pas à sourcer, des conversions que vous n'avez pas à vérifier et une disponibilité que vous n'avez pas à posséder. Une couverture de plus de 170 devises, des réponses sous 50 ms et des mises à jour en temps réel sont fournies de série. L'ensemble complet des endpoints est documenté dans la documentation de l'API Finexly, et vous pouvez comparer les fournisseurs côte à côte avec l'outil de comparaison.

Quand développer a du sens

Développer n'est pas toujours le mauvais choix. L'auto-hébergement a véritablement du sens lorsque :

  • Vos besoins sont minimes et statiques. Un taux de référence quotidien en EUR pour un tableau de bord interne sans exigence historique ou en temps réel est une raison légitime d'encapsuler vous-même le flux de la BCE.
  • Vous avez des exigences strictes de résidence des données ou d'isolement. Si les taux ne peuvent pas quitter votre infrastructure pour des raisons de conformité, auto-héberger un flux open source comme Frankfurter peut être obligatoire.
  • Les données de taux sont votre produit principal. Si vous construisez une plateforme de trading forex où le moteur de taux est le différenciateur, le posséder de bout en bout peut valoir le coût.

Pour tous les autres, construire un flux de taux générique revient à résoudre un problème déjà mieux résolu.

Quand acheter a du sens

Acheter l'emporte dans le cas courant, et les signaux sont faciles à repérer :

  • Vous avez besoin de n'importe quelle devise de base, pas seulement l'EUR.
  • Vous avez besoin d'un mouvement en temps réel ou intrajournalier, pas d'un unique instantané quotidien.
  • Vous avez besoin de taux historiques à des dates arbitraires pour la facturation, la comptabilité ou le reporting.
  • Vous avez besoin d'une large couverture incluant exotiques, métaux ou crypto.
  • Vous préférez livrer des fonctionnalités produit plutôt qu'exploiter une infrastructure.
  • Vous voulez que quelqu'un d'autre soit responsable de la disponibilité et d'un SLA.

Si vous avez coché deux de ces points ou plus, le calcul penche presque toujours vers l'achat.

Une approche hybride : achetez les données, mettez-les en cache vous-même

Les configurations de production les plus intelligentes sont rarement du pur développer ou du pur acheter. Elles achètent les données et les mettent en cache localement pour maîtriser coût et latence. Vous obtenez la couverture et la fiabilité d'un fournisseur géré tout en gardant faible le volume de requêtes — et votre facture. Voici une couche de cache minimale en Node.js :

const cache = new Map();
const TTL_MS = 60 * 60 * 1000; // refresh hourly

async function getRates(base = "USD") {
  const hit = cache.get(base);
  if (hit && Date.now() - hit.time < TTL_MS) return hit.rates;

  const url = `https://api.finexly.com/v1/latest?base=${base}&apikey=${process.env.FINEXLY_KEY}`;
  const res = await fetch(url);
  const data = await res.json();

  cache.set(base, { rates: data.rates, time: Date.now() });
  return data.rates;
}

Ce schéma vous offre le meilleur des deux mondes : vous n'exploitez pas de pipeline d'ingestion, mais vous ne faites pas non plus un appel réseau à chaque vue de page. Pour des schémas plus poussés, consultez notre guide sur les bonnes pratiques de cache et de gestion des erreurs. À mesure que le volume croît, les offres tarifaires évoluent avec vous au lieu de forcer une reconstruction.

Une liste de contrôle rapide pour décider

Posez-vous honnêtement ces questions :

  1. Ai-je besoin de plus qu'un instantané quotidien en EUR ? Si oui, penchez vers l'achat.
  2. Aurai-je besoin de taux historiques pour des dates précises ? Si oui, penchez vers l'achat.
  3. Les données de taux sont-elles mon produit principal ou une fonctionnalité de support ? Si support, penchez vers l'achat.
  4. Ai-je une raison de conformité empêchant les données de quitter mon infrastructure ? Si oui, penchez vers le développement (auto-hébergement).
  5. Le temps de l'équipe est-il mieux investi dans le produit ? Presque toujours oui — penchez vers l'achat.

Pour la grande majorité des bâtisseurs de fintech, des plateformes SaaS et des équipes e-commerce, la réponse pointe dans la même direction : achetez le générique, construisez le différenciateur.

Foire aux questions

Est-il moins cher de développer ma propre API de taux de change ? Seulement si vos besoins sont triviaux et ne croissent jamais. La source des données peut être gratuite via la BCE, mais le temps d'ingénierie pour construire et maintenir un flux de production — ingestion, stockage, conversion, disponibilité, surveillance — coûte généralement plus cher au premier trimestre que des années d'abonnement à une API gérée.

Puis-je utiliser directement le flux gratuit de la BCE ? Vous le pouvez, avec deux grosses réserves : il est basé sur l'EUR et ne se met à jour qu'une fois par jour ouvré, sans taux le week-end ni intrajournaliers. Pour des tableaux de bord internes, c'est bien ; pour tout ce qui est destiné à l'utilisateur ou transactionnel, généralement non.

Quelle est la différence entre Frankfurter et une API payante comme Finexly ? Frankfurter est un excellent flux gratuit et open source bâti sur des taux de référence de banques centrales, sans clé API ni quotas, idéal pour un usage à faible enjeu ou auto-hébergé. Une API payante comme Finexly ajoute la conversion vers n'importe quelle base, les mises à jour en temps réel, plus de 170 devises, une disponibilité/un SLA garantis et du support — ce dont vous avez besoin dès que l'argent dépend des taux.

Puis-je combiner les deux approches ? Oui, et la plupart des équipes matures le font. Achetez les données auprès d'une API gérée pour la couverture et la fiabilité, puis mettez-les en cache localement avec un TTL raisonnable pour garder une faible latence et un faible volume de requêtes — et un faible coût.

Comment migrer d'un flux maison vers une API gérée ? Remplacez la source de données de votre fonction de taux interne par un seul appel API, conservez votre couche de cache existante et comblez tout besoin historique via l'endpoint historique du fournisseur. C'est généralement quelques heures de travail, pas une réécriture.


Prêt à sauter l'étape du développement et à livrer la fonctionnalité à la place ? Obtenez votre clé API Finexly gratuite — sans carte bancaire. Commencez avec 1 000 requêtes gratuites par mois sur plus de 170 devises, et passez à un palier supérieur seulement quand votre trafic croît réellement.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Partager cet article