決済機能を作っていて、お金が実際にどうやって国境を越えるのか疑問に思ったことがあるなら、その答えはほぼ必ず、奇妙なラテン語の名前を持つ2つの口座に行き着きます。ノストロ(nostro)とボストロ(vostro)です。これらは、あらゆる国際送金、海外送金、多通貨支払いの背後にある配管です。ノストロ口座とボストロ口座についての多くの説明は、辞書的な定義で止まっています。本ガイドはさらに踏み込みます。概念を平易な言葉で説明し、複式簿記の具体例を一通りたどり、そのうえで、これらの残高を為替レートAPIを使ってコードでモデル化・評価・照合する方法を示します。フィンテック、財務、会計のソフトウェアを開発しているなら、これが必要な思考モデルです。
ノストロ口座とボストロ口座とは?
Nostro と vostro はイタリア語(ラテン語経由)に由来し、nostro は「私たちの」、vostro は「あなたたちの」を意味します。これらは、銀行間関係の相対する2つの側から見た同じ口座の2つのラベルです。
- ノストロ口座とは「私たちのお金があなたたちのところにある」ものです。ある銀行が外国の銀行に開設する、その外貨建ての口座です。本国側の銀行の帳簿では資産になります。
- ボストロ口座とは「あなたたちのお金が私たちのところにある」ものです。資金を保管する側の銀行から見た、まったく同じ口座です。その帳簿では負債になります。
開発者にとって重要な洞察はこれです。ノストロとボストロは2つの異なる口座ではなく、2つの視点から記述された1つの口座である。 A銀行がB銀行にある自行のUSDノストロと呼ぶものを、B銀行はA銀行向けのボストロと呼びます。同じ残高、同じ取引、2つの元帳、逆の符号です。
これが典型的な例です。あるドイツの銀行は顧客のために米ドルの支払いをする必要がありますが、米国に支店がなく、ドルの清算への直接アクセスもありません。そこで米国のコルレス銀行にUSD口座を開設し、そこにドルを保管します。
- ドイツの銀行にとって、そのUSD口座はノストロです(「私たちのドルが向こうにある」)。
- 米国の銀行にとって、その同じ口座はボストロです(「ドイツ側のドルが、ここ私たちのところにある」)。
ノストロ対ボストロ:重要な違い
区別はすべて視点にあります。この表がまとめています。
| 属性 | ノストロ口座 | ボストロ口座 |
|---|---|---|
| 意味 | 「私たちのお金があなたたちのところに」 | 「あなたたちのお金が私たちのところに」 |
| 誰の視点か | 資金を所有する銀行 | 資金を保管する銀行 |
| どこに置かれるか | 外国のコルレス銀行 | 国内の(保管する)銀行 |
| 通貨 | 外貨 | 保管銀行の現地通貨 |
| 貸借対照表上の扱い | 所有者にとって資産 | 保管者にとって負債 |
| 典型的な用途 | 外貨建ての送金決済 | 外国の銀行が現地通貨で支払えるようにする |
ロロ口座はどこに位置づけられるか
ときどき3つ目の用語、ロロ(loro、「彼らの」)を目にします。ロロ口座は新しい種類の口座ではなく、他の2つの銀行に属する口座について話すときに、ある銀行が使う参照です。A銀行が、B銀行がC銀行のために保有する口座について語るとき、A銀行はそれをロロ口座と呼びます。これは主に、複数銀行にまたがる決済チェーンでのSWIFTメッセージの明確化に関係します。直接モデル化する必要はめったにありません。
これらの口座が存在する理由:コルレス銀行業務
すべての国に支店を持つ銀行はなく、すべての国の国内清算システムに直接加盟している銀行もありません。コルレス銀行業務がこれを解決します。より小さな「委託銀行(respondent)」が、実際に現地アクセスを持つより大きな「コルレス銀行(correspondent)」と提携し、そこにノストロ口座を事前に資金投入します。これで委託銀行は、現地のインフラを一切構築せずに、その通貨での支払いを提供できます。
1つの大手銀行は、決済が必要な通貨ごとに1つずつ、世界中で数十のノストロ口座を維持することがあり、それぞれが事前資金投入された流動性のプールです。反対側では、大手コルレス銀行が世界中の委託銀行のために数百のボストロ口座を運用します。これらの口座間で残高を動かす指図は、標準化されたメッセージとしてSWIFTネットワークを通じて送られます(ますますISO 20022形式で)。
だからこそ「単純な」国境をまたぐ支払いが3〜4行を経由し、1〜3日かかり、途中で手数料と為替スプレッドに一部を失うのです。各ホップは、どこかにあるノストロまたはボストロ残高に対する借方と貸方です。
具体例:ノストロ/ボストロのペア間の複式簿記
お金を追うと概念はすぐに具体的になります。FNBA(オーストラリアの銀行)がCMB(米国の銀行)にUSDノストロを保有しているとします。FNBAは合意レートで、顧客CにAUD 1,000,000を売り、USD 2,000,000と交換します。
FNBAの元帳(そのノストロは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 AUDCMBの元帳では、その同じUSD口座はボストロ(FNBAに対する負債)です:
Dr Customer C (USD) 2,000,000 USD
Cr FNBA Vostro (USD) 2,000,000 USD鏡写しに注目してください。FNBAは保有ドルの増加を記録するために自行のノストロを借記し、CMBは負うドルの増加を記録するために同一のボストロを貸記します。両行の口座に対する見方を合計すると、設計上ゼロに照合されます。この鏡写しこそが要点であり、まさにあなたの照合コードが利用するものです。
開発者としてノストロ/ボストロ残高をモデル化する
財務、元帳、決済のソフトウェアを作っているなら、このモデルを使うために銀行である必要はありません。他者に代わって複数通貨の残高を保有するあらゆるシステム——多通貨ウォレット、マーケットプレイスの支払いエンジン、ネオバンクの元帳——は同じ問題に直面します。複数通貨で実際の残高を保有しており、それらの合計価値を単一の基準通貨で報告しなければなりません。
最小限のスキーマから始めます。各ノストロ型の残高は、通貨、金額、それを保管する相手方だけです:
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()
);2つ以上の通貨を保有した瞬間、報告上の疑問が生じます。今この瞬間、合計は私たちの基準通貨でいくらの価値があるのか? USD、EUR、JPYをそのまま足すことはできません。まず各残高を現在の為替レートで評価する必要があります。ここで通貨APIがその価値を発揮します。以下は、選択した基準通貨で一連のノストロ残高を評価するPython関数です:
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"))このAPI呼び出しは、きれいなレートオブジェクト——{"base": "EUR", "date": "2026-08-08", "rates": {"USD": 1.0842, ...}}——を返すので、各外貨残高を基準通貨に戻す換算は1回の除算です。エンドポイントとそのパラメータの完全な内訳は為替レートAPIのドキュメントを参照してください。初めてなら、無料の通貨APIのプランで全体をプロトタイプするのに十分です。
ノストロ照合と為替差損益
実際のノストロ運用では2つの問題が支配的で、どちらも明確に開発者の仕事です。
1. 照合。 ノストロとその鏡写しのボストロは一致していなければならないため、照合とは、その口座の自行内部の記録を、コルレス銀行が送ってくる明細(今日では通常、SWIFTのMT940/camt.053明細)と突き合わせることです。あなたの帳簿の各仕訳は、相手の帳簿にも対応する仕訳があるはずです。ブレーク——一方の側にあってもう一方の側にない仕訳——は、流動性やコンプライアンスの問題になる前に調査すべき、欠落・重複・遅延した取引を示します。上の例の鏡写しの性質こそが、自動突合を可能にします。
2. 為替の再評価。 ノストロ残高は外貨で保有されますが、報告は基準通貨で行います。為替レートは動くため、静的な外貨残高の基準通貨価値は毎日変化します。この差が未実現の為替差損益であり、会計基準はこれを認識するよう求めます。パターンはこうです。残高が設定された時点のレートをスナップショットとして記録し、今日のレートと比較し、その差を計上します。
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);期末報告や監査証跡のためには、リアルタイムだけでなく過去のレートも必要になります——過去の特定日付の正確な終値レートを取得することです。それが過去の為替レートエンドポイントの用途であり、月末の再評価を数か月後に再現するのに不可欠です。残高数と照合頻度が増えるにつれ、リクエスト量を見積もるために料金プランを確認してください。数十通貨を数分ごとに更新する財務ダッシュボードは、あっという間に積み上がります。
これらの残高の上でエンドユーザーにリアルタイム換算を提供したい場合——たとえば、顧客が自分の通貨で表示された支払いを見られるようにする——ホスト型の通貨コンバーターや同じlatestエンドポイントが、それを直接動かします。
現代の代替手段:ノストロ/ボストロの行方
ノストロ/ボストロのモデルは何世紀も前からあり、今なお国境をまたぐ価値の大半を動かしていますが、その摩擦——数十の口座に縛られた事前資金の流動性、複数日にわたる決済、不透明な手数料——が業界を代替手段へと押しやってきました。
- SWIFT gpi は、口座を置き換えることなく、既存のコルレスのレール上にエンドツーエンドの追跡と当日決済を追加します。
- ステーブルコインとトークン化預金 は、各通貨でノストロを事前資金投入することなく、機関が数分で決済できるようにします。ただし規制の明確化はまだ追いつきつつある段階です。
- CBDCとホールセール決済のパイロット(複数の中央銀行が国境をまたぐ回廊を試験中)は、仲介者の連鎖を丸ごと短縮することを目指します。
とはいえ、今後数年で作る大半のソフトウェアにとって、これらの口座——そして上記の照合・再評価ロジック——はどこにも行きません。それらを理解することは、長く役立つスキルです。
よくある質問
ノストロ口座とボストロ口座の違いは? 両者は2つの側から見た同じ口座です。ノストロは、所有する側の銀行の視点で「私たちのお金があなたたちのところにある」(外貨建ての資産)であり、ボストロは、保管する側の銀行の視点で「あなたたちのお金が私たちのところにある」(現地通貨建ての負債)です。
ノストロ口座は資産ですか、それとも負債ですか? ノストロ口座は、所有する銀行の貸借対照表では資産です——コルレス銀行に預けた自行の資金を表します。鏡写しのボストロは、その資金を保管する銀行にとっては負債です。
なぜ銀行はノストロ口座とボストロ口座を必要とするのですか? どの銀行もすべての国に支店や直接の清算アクセスを持っていないからです。ノストロ/ボストロ残高に裏打ちされたコルレス関係により、銀行は現地拠点を持たない通貨でも支払いの送受信ができます。
ノストロ口座はどのように照合しますか?
その口座の自行内部の元帳を、コルレス銀行の明細(例:SWIFTのcamt.053)と突き合わせます。各仕訳は両側に現れるはずで、突合できない仕訳(「ブレーク」)は調査されます。ノストロとボストロは互いに鏡写しなので、2つの記録は差し引きゼロになるはずです。
通貨APIはノストロ/ボストロ会計にどう役立ちますか? 残高は複数の外貨にありますが、報告は単一の基準通貨で行います。通貨APIは、各残高を評価し、未実現の為替差損益を計算し、一貫した多通貨レポートを作成するために必要な、リアルタイムおよび過去のレートを提供します。
自分で試してみる
実際の為替レートで多通貨残高を評価・照合する準備はできましたか?無料のFinexly APIキーを取得——クレジットカードは不要です。月1,000リクエストの無料枠から始め、170以上の通貨のリアルタイムおよび過去のレートを取得し、財務ロジックの成長に合わせてアップグレードしてください。
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 →