Calculating a foreign exchange transfer involves more than just looking at the mid-market rate. The OFX Rate Calculator factors in the "spread" or "margin" that money transfer services apply to the interbank rate. While banks typically charge between 3% and 5% above the mid-market rate, OFX margins are usually significantly lower, often ranging from 0.4% to 1.5% depending on the volume of the transfer.
The Math Behind the Exchange
To determine how much your recipient will receive, we follow these specific steps:
Step 1: Determine the Interbank Rate. This is the wholesale rate at which banks trade with each other.
Step 2: Apply the Margin. We subtract the OFX margin percentage from the interbank rate. For example, if the interbank rate is 1.10 and the margin is 0.7%, the applied rate is 1.10 × (1 – 0.007) = 1.0923.
Step 3: Calculate Total. Multiply your send amount by the applied rate.
Example Calculation
If you are sending 10,000 units of currency with an interbank rate of 1.2500:
Bank (4.0% margin): Rate = 1.2000. Recipient gets 12,000.00.
Total Savings: 412.50 units of currency.
Why OFX Rates Differ from Google Rates
When you search for an exchange rate on Google or XE, you are seeing the mid-market rate. This is a reference point and not the rate available to consumers or businesses. OFX provides a "customer rate" which is the mid-market rate minus a small fee that covers their operational costs and provides the service of moving funds securely across borders.
function calculateOfxExchange() {
var amount = parseFloat(document.getElementById('transferAmount').value);
var midMarketRate = parseFloat(document.getElementById('midMarketRate').value);
var ofxMarginPercent = parseFloat(document.getElementById('ofxMargin').value);
var bankMarginPercent = parseFloat(document.getElementById('bankMargin').value);
if (isNaN(amount) || isNaN(midMarketRate) || amount <= 0 || midMarketRate <= 0) {
alert("Please enter valid positive numbers for the amount and exchange rate.");
return;
}
// Logic for OFX
var ofxMarginDecimal = ofxMarginPercent / 100;
var appliedOfxRate = midMarketRate * (1 – ofxMarginDecimal);
var totalRecipientGets = amount * appliedOfxRate;
// Logic for Bank Comparison
var bankMarginDecimal = bankMarginPercent / 100;
var appliedBankRate = midMarketRate * (1 – bankMarginDecimal);
var totalBankGets = amount * appliedBankRate;
// Savings Calculation
var savings = totalRecipientGets – totalBankGets;
// Update UI
document.getElementById('recipientGets').innerText = totalRecipientGets.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('appliedOfxRate').innerText = appliedOfxRate.toFixed(4);
document.getElementById('bankAppliedRate').innerText = appliedBankRate.toFixed(4);
document.getElementById('totalSavings').innerText = savings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show results
document.getElementById('ofxResultsDisplay').style.display = 'block';
}