إذا سبق لك أن بنيت ميزة للمدفوعات وتساءلت كيف يعبر المال الحدود فعليًا، فإن الإجابة تتعلق دائمًا تقريبًا بحسابين يحملان اسمين لاتينيين غريبين: نوسترو (nostro) وفوسترو (vostro). إنهما البنية التحتية الخفية وراء كل حوالة دولية وتحويل مالي ودفعة متعددة العملات. تتوقف معظم شروحات حسابات نوسترو وفوسترو عند تعريف القاموس. هذا الدليل يذهب أبعد من ذلك: يشرح المفهوم بلغة بسيطة، ويمر بمثال عملي على القيد المزدوج، ثم يوضح كيف تنمذج هذه الأرصدة وتقيّمها وتسوّيها في الكود باستخدام واجهة برمجة أسعار الصرف. إذا كنت تطوّر برمجيات للتقنية المالية أو الخزينة أو المحاسبة، فهذا هو النموذج الذهني الذي تحتاجه.
ما هي حسابات نوسترو وفوسترو؟
Nostro وvostro مشتقتان من الإيطالية (عبر اللاتينية): nostro تعني «حسابنا» وvostro تعني «حسابكم». وهما تسميتان للحساب نفسه، منظورًا إليه من الجانبين المتقابلين لعلاقة مصرفية.
- حساب نوسترو هو «أموالنا المحفوظة لديـكم». إنه حساب يحتفظ به بنك لدى بنك أجنبي، مقوَّمًا بالعملة الأجنبية. في دفاتر البنك المحلي، هو أصل.
- حساب فوسترو هو «أموالكم المحفوظة لديـنا». إنه الحساب نفسه تمامًا منظورًا إليه من البنك الذي يحتفظ بالأموال. في دفاتره، هو التزام.
الفكرة الجوهرية للمطوّر: نوسترو وفوسترو ليسا حسابين مختلفين، بل حساب واحد موصوف من منظورين. ما يسميه البنك A حساب نوسترو بالدولار لديه في البنك B، يسميه البنك B حساب فوسترو للبنك A. الرصيد نفسه، والمعاملات نفسها، ودفتران، وإشارتان متعاكستان.
هذا هو المثال النموذجي. يحتاج بنك ألماني إلى تنفيذ مدفوعات بالدولار الأمريكي لعملائه، لكن ليس له فرع في الولايات المتحدة ولا وصول مباشر إلى المقاصة بالدولار. لذا يفتح حسابًا بالدولار لدى بنك مراسل أمريكي ويحتفظ بالدولارات هناك.
- بالنسبة إلى البنك الألماني، ذلك الحساب بالدولار هو نوسترو («دولاراتنا، هناك في الخارج»).
- بالنسبة إلى البنك الأمريكي، الحساب نفسه هو فوسترو («دولارات الألمان، هنا لدينا»).
نوسترو مقابل فوسترو: الفرق الجوهري
الفرق يتعلق كليًا بـوجهة النظر. يلخّص هذا الجدول الأمر:
| السمة | حساب نوسترو | حساب فوسترو |
|---|---|---|
| المعنى | «أموالنا لديكم» | «أموالكم لدينا» |
| منظور مَن | البنك الذي يملك الأموال | البنك الذي يحفظ الأموال |
| يُحتفظ به أين | لدى بنك مراسل أجنبي | لدى البنك المحلي (الحافظ) |
| العملة | عملة أجنبية | العملة المحلية للبنك الحافظ |
| المعالجة في الميزانية | أصل للمالك | التزام للحافظ |
| الاستخدام النموذجي | تسوية المدفوعات الصادرة بالعملة الأجنبية | تمكين بنك أجنبي من الدفع بالعملة المحلية |
أين يقع حساب لورو (loro)
ستصادف أحيانًا مصطلحًا ثالثًا هو لورو (loro، «حسابهم»). حساب لورو ليس نوعًا جديدًا من الحسابات، بل إشارة يستخدمها بنك عند الحديث عن حساب يخص بنكين آخرين. إذا ناقش البنك A الحساب الذي يحفظه البنك B للبنك C، فإن البنك A يسميه حساب لورو. يهم ذلك أساسًا لوضوح رسائل SWIFT في سلاسل الدفع متعددة البنوك؛ ونادرًا ما تحتاج إلى نمذجته مباشرة.
لماذا توجد هذه الحسابات: العمل المصرفي بالمراسلة
لا يملك أي بنك فرعًا في كل بلد، ولا عضوية مباشرة في نظام المقاصة المحلي لكل بلد. العمل المصرفي بالمراسلة يحل هذا. يتشارك بنك «مستجيب» أصغر مع بنك «مراسل» أكبر يملك بالفعل وصولًا محليًا، ويموّل مسبقًا حساب نوسترو هناك. الآن يستطيع المستجيب تقديم مدفوعات بتلك العملة دون بناء أي بنية تحتية محلية.
قد يحتفظ بنك كبير واحد بـعشرات حسابات نوسترو حول العالم — واحد لكل عملة يحتاج إلى التسوية بها — كل منها مجمّع سيولة ممول مسبقًا. وعلى الجانب الآخر، يدير مراسل كبير مئات حسابات فوسترو لبنوك مستجيبة حول العالم. تنتقل التعليمات التي تحرّك الأرصدة بين هذه الحسابات عبر شبكة SWIFT كرسائل موحّدة (وبشكل متزايد بصيغة ISO 20022).
لهذا قد تمر دفعة «بسيطة» عابرة للحدود عبر ثلاثة أو أربعة بنوك، وتستغرق من يوم إلى ثلاثة أيام، وتفقد جزءًا في الرسوم وفارق سعر الصرف على الطريق. كل قفزة هي قيد مدين وقيد دائن مقابل رصيد نوسترو أو فوسترو في مكان ما.
مثال عملي: القيد المزدوج عبر زوج نوسترو/فوسترو
تصبح المفاهيم ملموسة بسرعة حين تتبع المال. لنفترض أن FNBA (بنك في أستراليا) يحتفظ بـنوسترو بالدولار لدى CMB (بنك أمريكي). يبيع FNBA مبلغ 1,000,000 دولار أسترالي لعميل، C، مقابل 2,000,000 دولار أمريكي بسعر متفق عليه.
في دفتر FNBA (نوسترو لديه أصل بالدولار):
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 AUDفي دفتر CMB، الحساب نفسه بالدولار هو فوسترو (التزام مستحق لـ 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()
);بمجرد أن تحتفظ بأكثر من عملة واحدة، يظهر سؤال في التقارير: كم تساوي القيمة الإجمالية بعملة الأساس لدينا الآن؟ لا يمكنك جمع الدولار واليورو والين مباشرة — عليك أولًا تقييم كل رصيد بـسعر الصرف الحالي. هنا تستحق واجهة برمجة العملات مكانها. إليك دالة بلغة 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"))يُعيد استدعاء الواجهة كائن أسعار نظيفًا — {"base": "EUR", "date": "2026-08-08", "rates": {"USD": 1.0842, ...}} — لذا فإن إعادة تحويل كل رصيد أجنبي إلى عملة الأساس هي عملية قسمة واحدة. للاطلاع على تفصيل كامل لنقطة النهاية ومعاملاتها، راجع توثيق واجهة برمجة أسعار الصرف، وإذا كنت مبتدئًا فإن مستوى واجهة برمجة العملات المجانية يكفي لبناء النموذج الأولي بالكامل.
تسوية نوسترو وأرباح/خسائر الصرف
تهيمن مشكلتان على عمليات نوسترو الحقيقية، وكلتاهما بوضوح من عمل المطوّر.
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 يضيف تتبعًا من طرف إلى طرف وتسوية في اليوم نفسه فوق مسارات المراسلة القائمة، دون استبدال الحسابات.
- العملات المستقرة والودائع المرمّزة تتيح للمؤسسات التسوية في دقائق دون تمويل مسبق لنوسترو بكل عملة، وإن كان الوضوح التنظيمي لا يزال يلحق بالركب.
- العملات الرقمية للبنوك المركزية والبرامج التجريبية للتسوية بالجملة (تختبر عدة بنوك مركزية ممرات عابرة للحدود) تهدف إلى تقصير سلسلة الوسطاء بالكامل.
ومع ذلك، بالنسبة لمعظم البرمجيات التي ستبنيها في السنوات القليلة القادمة، فإن الحسابات — ومنطق التسوية وإعادة التقييم أعلاه — لن تذهب إلى أي مكان. فهمها مهارة دائمة.
الأسئلة الشائعة
ما الفرق بين حساب نوسترو وحساب فوسترو؟ هما الحساب نفسه منظورًا إليه من جانبين. نوسترو هو «أموالنا لديكم» (أصل، بعملة أجنبية) من منظور البنك المالك؛ وفوسترو هو «أموالكم لدينا» (التزام، بالعملة المحلية) من منظور البنك الحافظ.
هل حساب نوسترو أصل أم التزام؟ حساب نوسترو أصل في ميزانية البنك المالك — فهو يمثل أمواله الخاصة المودعة لدى مراسل. أما الفوسترو المرآوي فهو التزام على البنك الذي يحفظ تلك الأموال.
لماذا تحتاج البنوك إلى حسابات نوسترو وفوسترو؟ لأنه لا يوجد بنك له فروع أو وصول مباشر إلى المقاصة في كل بلد. علاقات المراسلة المدعومة بأرصدة نوسترو/فوسترو تتيح للبنك إرسال واستقبال المدفوعات بعملات ليس له فيها حضور محلي.
كيف تُسوّى حسابات نوسترو؟
بمطابقة دفتر الأستاذ الداخلي للحساب مع كشف المراسل (مثل SWIFT camt.053). ينبغي أن يظهر كل قيد على الجانبين؛ وتُدقَّق القيود غير المتطابقة («الفروق»). ولأن نوسترو وفوسترو متعاكسان مرآويًا، ينبغي أن يبلغ صافي السجلين صفرًا.
كيف تساعد واجهة برمجة العملات في محاسبة نوسترو/فوسترو؟ تقع الأرصدة في عدة عملات أجنبية، لكنك تُبلّغ بعملة أساس واحدة. توفّر واجهة برمجة العملات الأسعار الحية والتاريخية اللازمة لتقييم كل رصيد، وحساب ربح/خسارة الصرف غير المحققة، وإنتاج تقارير متسقة متعددة العملات.
جرّبه بنفسك
هل أنت مستعد لتقييم وتسوية أرصدة متعددة العملات بأسعار صرف حقيقية؟ احصل على مفتاح 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 →