NZD – New Zealand Dollar
USD – United States Dollar
AUD – Australian Dollar
GBP – British Pound
EUR – Euro
JPY – Japanese Yen
CAD – Canadian Dollar
SGD – Singapore Dollar
USD – United States Dollar
NZD – New Zealand Dollar
AUD – Australian Dollar
GBP – British Pound
EUR – Euro
JPY – Japanese Yen
CAD – Canadian Dollar
SGD – Singapore Dollar
* Rate automatically estimated based on typical bank spreads. You can manually edit this field to match the exact BNZ board rate.
Converting:
Exchange Rate Used:
Inverse Rate:
Converted Amount:
Understanding the Exchange Rate BNZ Calculator
When dealing with international finances in New Zealand, understanding the exchange rate offered by major banks like BNZ (Bank of New Zealand) is crucial. Whether you are planning a holiday, sending money overseas via telegraphic transfer, or purchasing foreign currency notes, the exchange rate directly impacts how much value you receive.
How BNZ Exchange Rates Work
Like most commercial banks, BNZ offers different exchange rates depending on the nature of the transaction. It is important to distinguish between the "Mid-Market Rate" (the rate you see on Google) and the "Retail Rate" (the rate the bank offers you).
Buy Rate: The rate at which the bank buys foreign currency from you (converting Foreign Currency to NZD).
Sell Rate: The rate at which the bank sells foreign currency to you (converting NZD to Foreign Currency).
Important Tip: The gap between the Buy and Sell rates is known as the "spread." This spread represents the bank's margin.
Telegraphic Transfers vs. Cash Rates
The method of conversion significantly changes the rate you are offered:
Telegraphic Transfer (TT) Rate: This applies when you send money electronically between bank accounts. These rates are generally more favorable (closer to the market rate) than cash rates because electronic handling costs are lower for the bank.
Cash / Notes Rate: This applies when you physically exchange paper money at a branch or travel center. Cash rates usually have a wider spread (are more expensive for the customer) due to the costs associated with shipping, storing, and securing physical currency.
Using This Calculator
This calculator helps you estimate the conversion based on typical bank spreads relative to the New Zealand Dollar (NZD).
Enter Amount: Input the total value you wish to convert.
Select Type: Choose between "International Transfer" or "Cash/Notes" to adjust the estimated spread.
Select Currencies: Choose your source currency (what you have) and your target currency (what you want).
Verify Rate: The calculator provides an estimated rate. If you have the exact live rate from the BNZ website, you can manually edit the "Effective Exchange Rate" field for precise calculations.
Common Currency Pairs
New Zealanders most frequently trade NZD against the USD (United States Dollar), AUD (Australian Dollar), GBP (Great British Pound), and EUR (Euro). When converting NZD to these major currencies, always check if the rate is quoted as "1 NZD = X Foreign Currency" (Indirect Quote) or "1 Foreign Currency = X NZD" (Direct Quote). This tool uses the standard Indirect Quote format (1 Unit of From Currency = X Units of To Currency).
// Indicative mid-market rates relative to NZD (Base: 1 NZD)
// These are approximations for demonstration logic.
// In a real app, these would come from an API.
var baseRates = {
"NZD": 1.0,
"USD": 0.61,
"AUD": 0.92,
"GBP": 0.48,
"EUR": 0.56,
"JPY": 90.50,
"CAD": 0.83,
"SGD": 0.82
};
// Margins to simulate bank spreads (Cost to consumer)
// Banks buy low and sell high.
// If converting NZD to Foreign (Selling NZD), bank gives less Foreign currency (Rate * (1 – margin)).
// If converting Foreign to NZD (Buying NZD), bank gives less NZD.
var margins = {
"telegraphic": 0.025, // approx 2.5% spread
"cash": 0.055 // approx 5.5% spread for cash
};
function getBaseRate(from, to) {
var fromRate = baseRates[from]; // Amount of Foreign per 1 NZD
var toRate = baseRates[to]; // Amount of Foreign per 1 NZD
// Cross rate calculation: (1 NZD -> To) / (1 NZD -> From)
// Example: NZD to USD = 0.61 / 1 = 0.61
// Example: USD to NZD = 1 / 0.61 = 1.639
// Example: USD to AUD = 0.92 / 0.61 = 1.508
return toRate / fromRate;
}
function updateDisplayedRate() {
var from = document.getElementById("fromCurrency").value;
var to = document.getElementById("toCurrency").value;
var type = document.getElementById("rateType").value;
if (from === to) {
document.getElementById("exchangeRate").value = "1.000000";
return;
}
var midRate = getBaseRate(from, to);
var margin = margins[type];
// Apply bank spread logic
// The customer always gets the "worse" rate.
// The rate displayed is essentially: How much TO currency do I get for 1 FROM currency?
// We reduce the rate by the margin to simulate the bank fee built into the rate.
var customerRate = midRate * (1 – margin);
// Update the input field
document.getElementById("exchangeRate").value = customerRate.toFixed(6);
}
function calculateExchange() {
// 1. Get Inputs
var amountInput = document.getElementById("amount").value;
var rateInput = document.getElementById("exchangeRate").value;
var fromCurr = document.getElementById("fromCurrency").value;
var toCurr = document.getElementById("toCurrency").value;
// 2. Validation
if (amountInput === "" || isNaN(amountInput) || Number(amountInput) < 0) {
alert("Please enter a valid positive amount.");
return;
}
if (rateInput === "" || isNaN(rateInput) || Number(rateInput) <= 0) {
alert("Please enter a valid exchange rate.");
return;
}
var amount = parseFloat(amountInput);
var rate = parseFloat(rateInput);
// 3. Calculation
var convertedAmount = amount * rate;
var inverseRate = 1 / rate;
// 4. Formatting output
// Currency formatting helper
var formatCurrency = function(val, currency) {
return new Intl.NumberFormat('en-NZ', { style: 'currency', currency: currency }).format(val);
};
// 5. Update DOM
document.getElementById("resAmount").innerHTML = formatCurrency(amount, fromCurr) + " " + fromCurr;
document.getElementById("resRate").innerHTML = "1 " + fromCurr + " = " + rate.toFixed(6) + " " + toCurr;
document.getElementById("resInverse").innerHTML = "1 " + toCurr + " = " + inverseRate.toFixed(6) + " " + fromCurr;
document.getElementById("resTotal").innerHTML = formatCurrency(convertedAmount, toCurr);
// Show result box
document.getElementById("resultBox").style.display = "block";
}
// Initialize rate on load
window.onload = function() {
updateDisplayedRate();
};