免費匯率 API:資料來源、涵蓋範圍與限制
免費匯率 API 適合做什麼
免費匯率 API 回傳的是參考匯率:每種貨幣每天公布一個匯率,而不是即時交易報價。對大多數應用程式來說,這樣就夠了。以訪客當地貨幣顯示價格、估算發票金額、編列旅遊預算或彙整月底報表,使用每日匯率都能勝任。它做不到的,是告訴你銀行此刻會給你什麼匯率,所以了解限制與了解功能同樣重要。
ipto 的貨幣端點正是以這個概念建構。你可以在貨幣換算器中試用相同的資料,也可以透過 /v1/currency/convert、/v1/currency/rates 與 /v1/currency/history 以程式呼叫,詳見 API 文件。
匯率從哪裡來
主要來源是開放的 fawazahmed0/currency-api 資料集。它屬於公共領域,不需要 API 金鑰,並且每天更新。資料由兩個彼此獨立的內容傳遞網路提供,ipto 會依序嘗試,因此單一網路中斷不會讓匯率更新停擺。服務會依每日排程更新資料並存入高速快取,所以頁面上的換算不必等待外部請求。
歐洲中央銀行(ECB)公布的參考匯率則是另一回事,在這裡僅作為備援。如果主要來源的兩個網路都無法使用,ipto 會繼續提供 ECB 公布的約 31 種主要貨幣,而不是完全失去匯率資料。在正常運作下,你看到的並不是 ECB 的資料。
涵蓋範圍
ipto 支援 154 種世界貨幣,是從規模大得多的來源清單中篩選而來。來源中還包含加密貨幣與非支付用途的會計單位,這些都被刻意排除。每種支援的貨幣都有名稱與旗幟,因此換算器呈現的是易讀的內容,而不只是一組代碼。
歷史資料
歷史端點會回傳貨幣對在過去 30、60 或 90 天的每日參考匯率,換算器頁面上的圖表也是以此繪製。歷史資料可用來觀察趨勢、查核交易入帳當天的匯率,以及檢驗看起來不對勁的數字。它是 90 天的視窗,而不是多年的封存資料。如果稽核工作需要回溯到 1999 年的匯率,請使用提供該封存資料的來源,並自行保存一份副本。
你應該預先規劃的限制
- 每日更新,非即時。匯率是單一的每日數值。請勿用於交易或支付結算。
- 不含手續費或加價。銀行與信用卡組織會加上價差,你的客戶實際負擔的成本會與參考匯率不同。
- 週末與假日。遇到缺漏的日期,請沿用前一個可取得的匯率,而不要當成錯誤處理。
- 快取時間。依設計,匯率最多可能是一天前的資料。請在任何換算後的金額旁標示日期。
搭配 IP 地理位置使用
最常見的搭配方式,是先用 IP 查詢端點從訪客的 IP 位址偵測其所在國家(該端點也會回傳該國的貨幣),再將你的價格換算成該貨幣。由於地理位置只是近似值,請務必讓訪客可以自行變更貨幣;也請記得,使用 VPN 的訪客可能看起來位於其他國家,這時可以借助 VPN 檢查工具來偵測。
結論
免費的參考匯率很適合用於顯示、估算與報表,但不適合任何涉及資金流動的場景。只要守住這條界線,免費的每日匯率 API 就比付費資料源更簡單、更便宜,而且在這類用途上同樣準確。