GuíasTutoriales

Crea un control de facturas multidivisa en Excel

Descarga un libro de Excel para facturas en EUR, GBP, JPY e IDR, con tipos de cambio fechados, conversión a USD mediante fórmulas y trazabilidad.

8 sept 2026 · 8 min de lectura

El libro conserva cada importe en su moneda original y lo convierte a USD usando el dato fechado que eliges. Las facturas contabilizadas permanecen reproducibles porque la fecha, la fuente, data_updated_at y el tipo se guardan juntos.

  • Descarga el libro de facturas con datos fechados y fórmulas.
  • rate_per_usd son unidades de moneda por 1 USD.
  • Conserva fecha, fuente, sesión y data_updated_at de cada fila contabilizada.
  • Power Query añade snapshots nuevos sin sustituir los congelados.
  • Los tipos son indicativos y no constituyen asesoramiento fiscal o contable.

Descarga el libro

Descarga el libro de control de facturas y ábrelo en Excel. Incluye diez facturas ilustrativas, datos EUR/GBP/JPY/IDR, columnas USD y una bitácora. Sustituye los ejemplos por tus propios registros.

Entiende las cuatro hojas

Invoice Tracker contiene las facturas y fórmulas. FX Snapshots guarda una observación fechada por moneda. Audit Trail registra la decisión de congelar una fila. Read Me explica el flujo y sus límites.

Añade una factura en su moneda original

Escribe ID, cliente, fechas, moneda, neto, impuesto, fecha del tipo y estado en las celdas azules. Mantén Net, Tax y Gross en la moneda de la factura.

Añade el tipo de cambio fechado

Añade la observación histórica exacta que usaste. Guarda fecha, moneda, source, market_session, data_updated_at y tipo. El tipo significa unidades de la moneda de la factura por 1 USD. Usa un Snapshot ID único como EUR-20260602-v1. Valida exactamente una fila para ese ID y que la moneda del snapshot coincida con la factura. Si corriges una observación, añade v2; no sobrescribas v1. data_updated_at describe cuándo se actualizó el dato histórico; no lo sustituyas por effective_at.

Representative historical response
{  "result": "success",  "base": "USD",  "date": "2026-06-02",  "source": "ecb_daily",  "sources": { "EUR": "ecb_daily" },  "market_session": "open",  "timestamp": "2026-09-08T11:52:18Z",  "data_updated_at": "2026-06-02T00:00:00Z",  "is_forward_filled": false,  "rates": { "EUR": 0.85844 },  "notice": "Indicative rates, not for settlement."}

Revisa las columnas USD calculadas

El libro relaciona la fecha y moneda con FX Snapshots y divide cada importe por FX Rate / USD. Gross es Net + Tax; las columnas USD quedan vacías si falta el dato. Las fórmulas llegan hasta la fila 100 de facturas y la fila 100 de snapshots; amplía ambos rangos juntos. El estado Posted es una etiqueta y no bloquea celdas.

Excel formula · Net USD
=IF(OR(F6<0,G6<0,H6<0,K6="",L6="Missing snapshot ID",L6="Duplicate snapshot ID",L6="Currency mismatch",L6="Invalid rate"),"",F6/K6)

Congela los valores contabilizados

Cuando contabilices una factura, conserva su fila de snapshot. Si la fuente cambia después, añade una nueva fila para una corrección y explica el motivo en Audit Trail.

Añade un dato nuevo con Power Query

El script de Power Query consulta una fecha y moneda explícitas. Carga el resultado como una fila nueva y no pongas una clave en un libro compartido. Power Query devuelve exactamente nueve columnas A:I. Carga primero una hoja de staging, copia solo la fila de datos sin encabezados y pégala como valores desde la fila 7. Refresh All vuelve a cargar la salida de la consulta: no añade automáticamente una fila inmutable. En Windows usa Data → Get Data → From Other Sources → Blank Query; en Microsoft 365 para Mac usa Data → Get Data → Launch Power Query Editor. Elige Anonymous; usa un proxy de servidor si necesitas una clave.

Power Query M · explicit snapshot
let    SnapshotDate = "2026-06-02",    Currency = Text.Upper(Text.Trim("EUR")),    Revision = "v1",    SelectedDate = Date.FromText(SnapshotDate, [Format = "yyyy-MM-dd", Culture = "en-US"]),    RelativePath = "v1/" & Date.ToText(SelectedDate, "yyyy-MM-dd") & "/USD",    Endpoint = "https://api.exchangerate.dev/" & RelativePath & "?symbols=" & Currency,    Payload = Json.Document(Web.Contents("https://api.exchangerate.dev", [        RelativePath = RelativePath,        Query = [symbols = Currency],        Timeout = #duration(0, 0, 0, 10)    ])),    Source = if Payload[base] <> "USD" or Payload[date] <> SnapshotDate        then error "Unexpected response base or date" else Payload,    RawRate = Record.Field(Source[rates], Currency),    Rate = if not Value.Is(RawRate, type number) or RawRate <= 0        then error "Expected a positive numeric rate" else RawRate,    SnapshotId = Currency & "-" & Text.Replace(SnapshotDate, "-", "") & "-" & Revision,    Notes = "Response timestamp=" & Source[timestamp] & "; is_forward_filled=" &        (if Source[is_forward_filled] then "true" else "false"),    Snapshot = #table(        {"Snapshot ID", "Snapshot Date", "Currency", "Source", "Market Session", "Data Updated At (UTC)", "Rate / USD", "API Endpoint", "Notes"},        {{SnapshotId, SelectedDate, Currency, Record.Field(Source[sources], Currency), Source[market_session], Source[data_updated_at], Rate, Endpoint, Notes}}    )in    Snapshot

Conserva la trazabilidad

Registra cuándo se contabilizó, qué snapshot se usó, su fuente/sesión y por qué está congelado. Conserva la respuesta original si tu proceso exige más evidencia. En Notes conserva el timestamp de la respuesta y is_forward_filled. Registra el Snapshot ID, la fuente, la sesión y el motivo de cualquier corrección.

Usa el resultado solo para informes

Es una herramienta ilustrativa para informes y análisis. No determina impuestos, contabilidad, cumplimiento, liquidación ni el importe que cobrará un proveedor de pagos. La capacidad de ejemplo termina en la fila 100; extiende las fórmulas y las búsquedas conjuntamente.

Preguntas

¿El libro actualiza automáticamente las facturas contabilizadas?

No. Las filas contabilizadas usan snapshots congelados para que una actualización posterior no cambie el informe anterior.

¿Qué significa rate_per_usd?

Es la cantidad de moneda de la factura por 1 USD. Divide el importe original por ese tipo para obtener el importe USD ilustrativo.

¿Puedo usar un tipo en vivo?

Puedes añadirlo para un periodo abierto, conservando fecha, fuente, data_updated_at y sesión. No sustituyas un dato histórico contabilizado.

¿Es asesoramiento fiscal o contable?

No. Es un ejemplo de informes; aplica tus propias políticas y asesores.

¿Puedo guardar la clave en Power Query?

Mantén las claves fuera de libros compartidos. Usa acceso anónimo para evaluar o un proxy de servidor.

Sigue leyendo

Empieza con una clave API gratuita

5.000 solicitudes al mes con el plan gratuito. Sin tarjeta de crédito.

Obtén una clave gratuita