Si alguna vez has creado una función de pagos y te has preguntado cómo cruza el dinero una frontera, la respuesta casi siempre involucra dos cuentas con extraños nombres latinos: nostro y vostro. Son la fontanería que hay detrás de cada transferencia internacional, remesa y pago en varias divisas. La mayoría de las explicaciones sobre las cuentas nostro y vostro se quedan en una definición de diccionario. Esta guía va más allá: explica el concepto en lenguaje sencillo, recorre un ejemplo práctico de partida doble y luego te muestra cómo modelar, valorar y conciliar estos saldos en código usando una API de tipos de cambio. Si desarrollas software de fintech, tesorería o contabilidad, este es el modelo mental que necesitas.
¿Qué son las cuentas nostro y vostro?
Nostro y vostro provienen del italiano (a través del latín): nostro significa "nuestro" y vostro significa "vuestro". Son dos etiquetas para la misma cuenta, vista desde lados opuestos de una relación bancaria.
- Una cuenta nostro es "nuestro dinero en poder de vosotros". Es una cuenta que un banco mantiene en un banco extranjero, denominada en la divisa extranjera. En los libros del banco de origen, es un activo.
- Una cuenta vostro es "vuestro dinero en poder de nosotros". Es exactamente la misma cuenta vista por el banco que custodia los fondos. En sus libros, es un pasivo.
La idea clave para un desarrollador: nostro y vostro no son dos cuentas diferentes, sino una sola cuenta descrita desde dos perspectivas. Lo que el Banco A llama su cuenta nostro en USD en el Banco B, el Banco B lo llama su cuenta vostro para el Banco A. Mismo saldo, mismas transacciones, dos libros contables, signos opuestos.
Este es el ejemplo canónico. Un banco alemán necesita realizar pagos en dólares estadounidenses para sus clientes, pero no tiene sucursal en Estados Unidos ni acceso directo a la compensación en dólares. Así que abre una cuenta en USD en un banco corresponsal estadounidense y mantiene allí sus dólares.
- Para el banco alemán, esa cuenta en USD es una nostro ("nuestros dólares, allá lejos").
- Para el banco estadounidense, esa misma cuenta es una vostro ("los dólares de los alemanes, aquí con nosotros").
Nostro frente a vostro: la diferencia clave
La distinción tiene que ver por completo con el punto de vista. Esta tabla lo resume:
| Atributo | Cuenta nostro | Cuenta vostro |
|---|---|---|
| Significado | "Nuestro dinero con vosotros" | "Vuestro dinero con nosotros" |
| Perspectiva de quién | El banco que posee los fondos | El banco que custodia los fondos |
| Dónde se mantiene | En un banco corresponsal extranjero | En el banco nacional (custodio) |
| Divisa | Divisa extranjera | Divisa local del banco custodio |
| Tratamiento en balance | Activo para el propietario | Pasivo para el custodio |
| Uso habitual | Liquidar pagos salientes en divisa extranjera | Permitir que un banco extranjero pague en moneda local |
Dónde encaja la cuenta loro
De vez en cuando verás un tercer término, loro ("de ellos"). Una cuenta loro no es un nuevo tipo de cuenta: es una referencia que un banco usa al hablar de una cuenta que pertenece a otros dos bancos. Si el Banco A habla de la cuenta que el Banco B mantiene para el Banco C, el Banco A la llama cuenta loro. Importa sobre todo para la claridad de los mensajes SWIFT en cadenas de pago con varios bancos; rara vez necesitas modelarla directamente.
Por qué existen estas cuentas: la banca corresponsal
Ningún banco tiene una sucursal en cada país, ni membresía directa en el sistema de compensación nacional de cada país. La banca corresponsal resuelve esto. Un banco "corresponsalizado" (respondent) más pequeño se asocia con un banco "corresponsal" más grande que sí tiene acceso local, y prefinancia allí una cuenta nostro. Ahora el banco pequeño puede ofrecer pagos en esa divisa sin montar nunca infraestructura local.
Un solo banco grande puede mantener decenas de cuentas nostro por todo el mundo —una por cada divisa en la que necesita liquidar—, cada una un fondo de liquidez prefinanciado. En el otro lado, un gran corresponsal gestiona cientos de cuentas vostro para bancos de todo el mundo. Las instrucciones que mueven saldos entre estas cuentas viajan por la red SWIFT como mensajes estandarizados (cada vez más en el formato ISO 20022).
Por eso un pago transfronterizo "sencillo" puede tocar tres o cuatro bancos, tardar de uno a tres días y perder una parte en comisiones y márgenes de cambio por el camino. Cada salto es un cargo y un abono contra un saldo nostro o vostro en algún lugar.
Un ejemplo práctico: partida doble en un par nostro/vostro
Los conceptos se vuelven concretos rápido cuando sigues el dinero. Supón que FNBA (un banco de Australia) mantiene una nostro en USD en CMB (un banco estadounidense). FNBA vende AUD 1.000.000 a un cliente, C, a cambio de USD 2.000.000 a un tipo acordado.
En el libro de FNBA (su nostro es un activo 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 AUDEn el libro de CMB, esa misma cuenta en USD es una vostro (un pasivo que le debe a FNBA):
Dr Customer C (USD) 2,000,000 USD
Cr FNBA Vostro (USD) 2,000,000 USDFíjate en el reflejo: FNBA carga su nostro para registrar más dólares que posee; CMB abona la vostro idéntica para registrar más dólares que debe. Suma las dos visiones que tienen los bancos de la cuenta y, por diseño, se concilian a cero. Ese reflejo es todo el sentido del asunto, y es exactamente lo que explotará tu código de conciliación.
Modelar saldos nostro/vostro como desarrollador
Si construyes software de tesorería, contabilidad o pagos, no necesitas ser un banco para usar este modelo. Cualquier sistema que mantenga saldos en varias divisas por cuenta de terceros —un monedero multidivisa, un motor de pagos de un marketplace, el libro mayor de un neobanco— se enfrenta al mismo problema: mantienes saldos reales en varias divisas y debes informar de su valor combinado en una única divisa base.
Empieza con un esquema mínimo. Cada saldo de tipo nostro es simplemente una divisa, un importe y la contraparte que lo custodia:
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()
);En cuanto mantienes más de una divisa aparece una pregunta de reporte: ¿cuánto vale el total en nuestra divisa base ahora mismo? No puedes sumar USD, EUR y JPY directamente: primero debes valorar cada saldo al tipo de cambio actual. Ahí es donde una API de divisas se gana su sitio. Esta es una función en Python que valora un conjunto de saldos nostro en la divisa base elegida:
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"))La llamada a la API devuelve un objeto de tipos limpio —{"base": "EUR", "date": "2026-08-08", "rates": {"USD": 1.0842, ...}}— por lo que reconvertir cada saldo extranjero a la divisa base es una simple división. Para un desglose completo del endpoint y sus parámetros, consulta la documentación de la API de tipos de cambio, y si eres nuevo, el nivel de API de divisas gratuita basta para prototipar todo esto.
Conciliación nostro y ganancia/pérdida por tipo de cambio
Dos problemas dominan las operaciones nostro reales, y ambos son claramente trabajo del desarrollador.
1. Conciliación. Como una nostro y su vostro reflejada deben coincidir, conciliar significa cotejar tu registro interno de la cuenta con el extracto que envía el corresponsal (hoy, normalmente un extracto SWIFT MT940/camt.053). Cada apunte en tus libros debería tener su apunte correspondiente en los suyos. Las diferencias —un apunte en un lado pero no en el otro— señalan una transacción ausente, duplicada o retrasada que hay que investigar antes de que se convierta en un problema de liquidez o cumplimiento. La propiedad de reflejo del ejemplo anterior es lo que hace posible el cotejo automático.
2. Revaluación por tipo de cambio. Un saldo nostro se mantiene en divisa extranjera, pero informas en tu divisa base. Como los tipos de cambio se mueven, el valor en divisa base de un saldo extranjero estático cambia cada día. Esa diferencia es una ganancia o pérdida cambiaria no realizada, y las normas contables exigen reconocerla. El patrón: captura el tipo cuando se estableció el saldo, compáralo con el tipo de hoy y contabiliza la diferencia.
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);Para el reporte de fin de periodo y las pistas de auditoría también querrás tipos históricos, no solo en vivo: obtener el tipo de cierre exacto de una fecha pasada. Para eso sirve un endpoint de tipos de cambio históricos, esencial para reproducir una revaluación de fin de mes meses después. A medida que crecen tu número de saldos y la frecuencia de conciliación, revisa los planes de precios para dimensionar tu volumen de peticiones; un panel de tesorería que refresca decenas de divisas cada pocos minutos suma rápido.
Si quieres ofrecer conversiones en vivo a los usuarios finales sobre estos saldos —por ejemplo, que un cliente vea un pago cotizado en su propia divisa—, un conversor de divisas alojado o el mismo endpoint latest lo alimenta directamente.
Alternativas modernas: hacia dónde va el modelo nostro/vostro
El modelo nostro/vostro tiene siglos y sigue moviendo la mayor parte del valor transfronterizo, pero la fricción —liquidez prefinanciada atrapada en decenas de cuentas, liquidación de varios días, comisiones opacas— ha empujado al sector hacia alternativas:
- SWIFT gpi añade seguimiento de extremo a extremo y liquidación en el mismo día sobre los raíles corresponsales existentes, sin sustituir las cuentas.
- Stablecoins y depósitos tokenizados permiten a las entidades liquidar en minutos sin prefinanciar una nostro en cada divisa, aunque la claridad regulatoria aún está poniéndose al día.
- CBDC y pilotos de liquidación mayorista (varios bancos centrales están probando corredores transfronterizos) buscan acortar por completo la cadena de intermediarios.
Aun así, para la mayoría del software que construirás en los próximos años, las cuentas —y la lógica de conciliación y revaluación de arriba— no van a desaparecer. Entenderlas es una habilidad duradera.
Preguntas frecuentes
¿Cuál es la diferencia entre una cuenta nostro y una vostro? Son la misma cuenta vista desde dos lados. Una nostro es "nuestro dinero en poder de vosotros" (un activo, en divisa extranjera) desde la visión del banco propietario; una vostro es "vuestro dinero en poder de nosotros" (un pasivo, en moneda local) desde la visión del banco custodio.
¿Una cuenta nostro es un activo o un pasivo? Una cuenta nostro es un activo en el balance del banco propietario: representa sus propios fondos depositados en un corresponsal. La vostro reflejada es un pasivo para el banco que custodia esos fondos.
¿Por qué los bancos necesitan cuentas nostro y vostro? Porque ningún banco tiene sucursales ni acceso directo a la compensación en cada país. Las relaciones corresponsales respaldadas por saldos nostro/vostro permiten a un banco hacer y recibir pagos en divisas donde no tiene presencia local.
¿Cómo se concilia una cuenta nostro?
Cotejando tu libro mayor interno de la cuenta con el extracto del corresponsal (por ejemplo, un SWIFT camt.053). Cada apunte debería aparecer en ambos lados; los apuntes sin coincidencia ("diferencias") se investigan. Como la nostro y la vostro se reflejan, los dos registros deberían netear a cero.
¿Cómo ayuda una API de divisas con la contabilidad nostro/vostro? Los saldos están en varias divisas extranjeras, pero informas en una única divisa base. Una API de divisas proporciona los tipos en vivo e históricos necesarios para valorar cada saldo, calcular la ganancia/pérdida cambiaria no realizada y producir informes multidivisa coherentes.
Pruébalo tú mismo
¿Listo para valorar y conciliar saldos multidivisa con tipos de cambio reales? Consigue tu clave gratuita de la API de Finexly — sin tarjeta de crédito. Empieza con 1.000 peticiones gratis al mes, obtén tipos en vivo e históricos de más de 170 divisas y amplía a medida que crece tu lógica de tesorería.
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 →