Si vous avez déjà développé une fonctionnalité de paiement en vous demandant comment l'argent traverse réellement une frontière, la réponse implique presque toujours deux comptes aux noms latins étranges : nostro et vostro. Ils constituent la tuyauterie derrière chaque virement international, transfert de fonds et paiement multidevise. La plupart des explications sur les comptes nostro et vostro s'arrêtent à une définition de dictionnaire. Ce guide va plus loin : il explique le concept en langage clair, déroule un exemple concret en partie double, puis vous montre comment modéliser, valoriser et rapprocher ces soldes en code à l'aide d'une API de taux de change. Si vous développez des logiciels de fintech, de trésorerie ou de comptabilité, c'est le modèle mental qu'il vous faut.
Que sont les comptes nostro et vostro ?
Nostro et vostro viennent de l'italien (via le latin) : nostro signifie « le nôtre » et vostro « le vôtre ». Ce sont deux étiquettes pour le même compte, vu des deux côtés opposés d'une relation bancaire.
- Un compte nostro est « notre argent détenu chez vous ». C'est un compte qu'une banque détient auprès d'une banque étrangère, libellé dans la devise étrangère. Dans les livres de la banque d'origine, c'est un actif.
- Un compte vostro est « votre argent détenu chez nous ». C'est exactement le même compte, vu par la banque qui détient les fonds. Dans ses livres, c'est un passif.
L'idée clé pour un développeur : nostro et vostro ne sont pas deux comptes différents — c'est un seul compte décrit selon deux perspectives. Ce que la Banque A appelle son compte nostro en USD auprès de la Banque B, la Banque B l'appelle son compte vostro pour la Banque A. Même solde, mêmes transactions, deux grands livres, signes opposés.
Voici l'exemple canonique. Une banque allemande doit effectuer des paiements en dollars américains pour ses clients, mais elle n'a pas d'agence aux États-Unis ni d'accès direct à la compensation en dollars. Elle ouvre donc un compte en USD auprès d'une banque correspondante américaine et y conserve ses dollars.
- Pour la banque allemande, ce compte en USD est un nostro (« nos dollars, là-bas »).
- Pour la banque américaine, ce même compte est un vostro (« les dollars des Allemands, ici chez nous »).
Nostro vs vostro : la différence essentielle
La distinction tient entièrement au point de vue. Ce tableau la résume :
| Attribut | Compte nostro | Compte vostro |
|---|---|---|
| Signification | « Notre argent chez vous » | « Votre argent chez nous » |
| Perspective de qui | La banque qui possède les fonds | La banque qui détient les fonds |
| Détenu où | Auprès d'une banque correspondante étrangère | Auprès de la banque nationale (dépositaire) |
| Devise | Devise étrangère | Devise locale de la banque dépositaire |
| Traitement au bilan | Actif pour le propriétaire | Passif pour le dépositaire |
| Usage typique | Régler des paiements sortants en devise étrangère | Permettre à une banque étrangère de payer en monnaie locale |
Où se situe le compte loro
Vous verrez parfois un troisième terme, loro (« le leur »). Un compte loro n'est pas un nouveau type de compte — c'est une référence qu'une banque utilise pour parler d'un compte appartenant à deux autres banques. Si la Banque A évoque le compte que la Banque B détient pour la Banque C, la Banque A l'appelle compte loro. Cela importe surtout pour la clarté des messages SWIFT dans les chaînes de paiement multibanques ; vous avez rarement besoin de le modéliser directement.
Pourquoi ces comptes existent : la banque correspondante
Aucune banque n'a d'agence dans tous les pays, ni d'adhésion directe au système de compensation national de chaque pays. La banque correspondante résout ce problème. Une banque « répondante » plus petite s'associe à une banque « correspondante » plus grande qui, elle, a un accès local, et y préfinance un compte nostro. La répondante peut désormais proposer des paiements dans cette devise sans jamais monter d'infrastructure locale.
Une seule grande banque peut maintenir des dizaines de comptes nostro dans le monde — un par devise dans laquelle elle doit régler — chacun étant une réserve de liquidité préfinancée. De l'autre côté, un grand correspondant gère des centaines de comptes vostro pour des banques répondantes du monde entier. Les instructions qui déplacent les soldes entre ces comptes transitent par le réseau SWIFT sous forme de messages normalisés (de plus en plus au format ISO 20022).
Voilà pourquoi un paiement transfrontalier « simple » peut passer par trois ou quatre banques, prendre un à trois jours et perdre une part en frais et en écart de change en chemin. Chaque étape est un débit et un crédit contre un solde nostro ou vostro quelque part.
Un exemple concret : partie double sur une paire nostro/vostro
Les concepts deviennent concrets dès qu'on suit l'argent. Supposons que FNBA (une banque australienne) détienne un nostro en USD auprès de CMB (une banque américaine). FNBA vend 1 000 000 AUD à un client, C, contre 2 000 000 USD à un taux convenu.
Dans le grand livre de FNBA (son nostro est un actif en USD) :
Dr USD Nostro @ CMB 2,000,000 USD
Cr FX Trading (USD) 2,000,000 USD
Dr FX Trading (AUD) 1,000,000 AUD
Cr Customer C (AUD) 1,000,000 AUDDans le grand livre de CMB, ce même compte en USD est un vostro (un passif qu'elle doit à FNBA) :
Dr Customer C (USD) 2,000,000 USD
Cr FNBA Vostro (USD) 2,000,000 USDRemarquez le miroir : FNBA débite son nostro pour enregistrer plus de dollars qu'elle possède ; CMB crédite le vostro identique pour enregistrer plus de dollars qu'elle doit. Additionnez les deux visions du compte par les banques et, par construction, elles se rapprochent à zéro. Ce miroir est tout l'intérêt — et c'est exactement ce que votre code de rapprochement va exploiter.
Modéliser les soldes nostro/vostro en tant que développeur
Si vous construisez un logiciel de trésorerie, de comptabilité ou de paiement, vous n'avez pas besoin d'être une banque pour utiliser ce modèle. Tout système qui détient des soldes dans plusieurs devises pour le compte de tiers — un portefeuille multidevise, un moteur de versements de marketplace, le grand livre d'une néobanque — affronte le même problème : vous détenez des soldes réels dans plusieurs devises et devez rapporter leur valeur combinée dans une seule devise de référence.
Commencez par un schéma minimal. Chaque solde de type nostro n'est qu'une devise, un montant et la contrepartie qui le détient :
CREATE TABLE nostro_balances (
id BIGSERIAL PRIMARY KEY,
correspondent TEXT NOT NULL, -- who holds the funds
currency CHAR(3) NOT NULL, -- ISO 4217 code, e.g. 'USD'
balance NUMERIC(20,4) NOT NULL DEFAULT 0,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);Dès que vous détenez plus d'une devise, une question de reporting apparaît : combien vaut le total dans notre devise de référence à l'instant présent ? Vous ne pouvez pas additionner directement USD, EUR et JPY — il faut d'abord valoriser chaque solde au taux de change actuel. C'est là qu'une API de change prend tout son sens. Voici une fonction Python qui valorise un ensemble de soldes nostro dans une devise de référence choisie :
import requests
FINEXLY_KEY = "YOUR_API_KEY"
def value_nostros(balances, home="EUR"):
"""balances: dict of {currency: amount}. Returns total in `home`."""
symbols = ",".join(c for c in balances if c != home)
resp = requests.get(
"https://api.finexly.com/v1/latest",
params={"base": home, "symbols": symbols},
headers={"Authorization": f"Bearer {FINEXLY_KEY}"},
timeout=5,
)
resp.raise_for_status()
rates = resp.json()["rates"] # e.g. {"USD": 1.0842, "JPY": 161.4}
total = 0.0
for currency, amount in balances.items():
if currency == home:
total += amount
else:
# rates[X] = units of X per 1 home unit, so divide to convert back
total += amount / rates[currency]
return round(total, 2)
nostros = {"USD": 2_000_000, "JPY": 500_000_000, "GBP": 750_000}
print(value_nostros(nostros, home="EUR"))L'appel à l'API renvoie un objet de taux propre — {"base": "EUR", "date": "2026-08-08", "rates": {"USD": 1.0842, ...}} — de sorte que reconvertir chaque solde étranger dans la devise de référence se fait par une simple division. Pour un détail complet de l'endpoint et de ses paramètres, consultez la documentation de l'API de taux de change, et si vous débutez, le niveau API de change gratuite suffit à prototyper l'ensemble.
Rapprochement nostro et gain/perte de change
Deux problèmes dominent les opérations nostro réelles, et tous deux relèvent clairement du travail du développeur.
1. Rapprochement. Comme un nostro et son vostro miroir doivent concorder, le rapprochement consiste à confronter votre relevé interne du compte au relevé envoyé par le correspondant (aujourd'hui, en général un relevé SWIFT MT940/camt.053). Chaque écriture dans vos livres doit avoir une écriture correspondante dans les siens. Les écarts — une écriture d'un côté mais pas de l'autre — signalent une transaction manquante, dupliquée ou retardée à investiguer avant qu'elle ne devienne un problème de liquidité ou de conformité. La propriété de miroir de l'exemple ci-dessus est ce qui rend le rapprochement automatique possible.
2. Réévaluation de change. Un solde nostro est détenu en devise étrangère, mais vous rapportez dans votre devise de référence. Comme les taux de change bougent, la valeur en devise de référence d'un solde étranger figé change chaque jour. Cet écart est un gain ou une perte de change latent(e), et les normes comptables imposent de le comptabiliser. Le schéma : enregistrez le taux au moment où le solde a été constitué, comparez-le au taux d'aujourd'hui et passez l'écriture de la différence.
const FINEXLY_KEY = "YOUR_API_KEY";
async function fxGainLoss(currency, amount, rateAtBooking, home = "EUR") {
const url = `https://api.finexly.com/v1/latest?base=${home}&symbols=${currency}`;
const res = await fetch(url, {
headers: { Authorization: `Bearer ${FINEXLY_KEY}` },
});
const { rates } = await res.json();
const currentRate = rates[currency]; // currency units per 1 home unit
const valueAtBooking = amount / rateAtBooking;
const valueNow = amount / currentRate;
return {
home,
valueAtBooking: +valueAtBooking.toFixed(2),
valueNow: +valueNow.toFixed(2),
unrealizedPnl: +(valueNow - valueAtBooking).toFixed(2),
};
}
// 2,000,000 USD booked at 1.0800, revalued at today's rate
fxGainLoss("USD", 2_000_000, 1.08).then(console.log);Pour le reporting de fin de période et les pistes d'audit, vous voudrez aussi des taux historiques, pas seulement en temps réel — récupérer le taux de clôture exact d'une date passée. C'est à cela que sert un endpoint de taux de change historiques, essentiel pour reproduire une réévaluation de fin de mois des mois plus tard. À mesure que votre nombre de soldes et votre fréquence de rapprochement augmentent, consultez les offres tarifaires pour dimensionner votre volume de requêtes ; un tableau de bord de trésorerie qui rafraîchit des dizaines de devises toutes les quelques minutes s'additionne vite.
Si vous souhaitez exposer des conversions en temps réel aux utilisateurs finaux au-dessus de ces soldes — par exemple, permettre à un client de voir un versement libellé dans sa propre devise —, un convertisseur de devises hébergé ou le même endpoint latest l'alimente directement.
Alternatives modernes : où va le modèle nostro/vostro
Le modèle nostro/vostro a des siècles et gère encore la majeure partie de la valeur transfrontalière, mais les frictions — liquidité préfinancée bloquée dans des dizaines de comptes, règlement sur plusieurs jours, frais opaques — ont poussé le secteur vers des alternatives :
- SWIFT gpi ajoute un suivi de bout en bout et un règlement le jour même par-dessus les rails correspondants existants, sans remplacer les comptes.
- Les stablecoins et les dépôts tokenisés permettent aux institutions de régler en quelques minutes sans préfinancer un nostro dans chaque devise, même si la clarté réglementaire est encore en train de se mettre en place.
- Les MNBC et les pilotes de règlement de gros (plusieurs banques centrales testent des corridors transfrontaliers) visent à raccourcir entièrement la chaîne d'intermédiaires.
Pour la plupart des logiciels que vous construirez ces prochaines années, cependant, les comptes — et la logique de rapprochement et de réévaluation ci-dessus — ne vont nulle part. Les comprendre est une compétence durable.
Foire aux questions
Quelle est la différence entre un compte nostro et un compte vostro ? Ce sont le même compte vu des deux côtés. Un nostro est « notre argent chez vous » (un actif, en devise étrangère) du point de vue de la banque propriétaire ; un vostro est « votre argent chez nous » (un passif, en monnaie locale) du point de vue de la banque dépositaire.
Un compte nostro est-il un actif ou un passif ? Un compte nostro est un actif au bilan de la banque propriétaire — il représente ses propres fonds placés chez un correspondant. Le vostro miroir est un passif pour la banque qui détient ces fonds.
Pourquoi les banques ont-elles besoin de comptes nostro et vostro ? Parce qu'aucune banque n'a d'agences ni d'accès direct à la compensation dans chaque pays. Les relations de correspondance adossées à des soldes nostro/vostro permettent à une banque d'émettre et de recevoir des paiements dans des devises où elle n'a pas de présence locale.
Comment rapproche-t-on un compte nostro ?
En confrontant votre grand livre interne du compte au relevé du correspondant (par exemple un SWIFT camt.053). Chaque écriture doit apparaître des deux côtés ; les écritures non rapprochées (« écarts ») sont investiguées. Comme le nostro et le vostro se reflètent, les deux relevés doivent s'annuler à zéro.
En quoi une API de change aide-t-elle la comptabilité nostro/vostro ? Les soldes sont en plusieurs devises étrangères, mais vous rapportez dans une seule devise de référence. Une API de change fournit les taux en temps réel et historiques nécessaires pour valoriser chaque solde, calculer le gain/perte de change latent et produire des rapports multidevises cohérents.
Essayez par vous-même
Prêt à valoriser et à rapprocher des soldes multidevises avec de vrais taux de change ? Obtenez votre clé API Finexly gratuite — sans carte bancaire. Commencez avec 1 000 requêtes gratuites par mois, récupérez des taux en temps réel et historiques pour plus de 170 devises, et montez en gamme à mesure que votre logique de trésorerie grandit.
Explore More
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 →