Sorting your money needs

If you are looking to buy a vehicle, we would love to help you sort your money needs.

boat category hero rect

Why choose AA Money?

Trusted NZ brand

Borrow with confidence

Since 1903, the AA has helped millions of Kiwis in times of need. Choose a loan backed by the brand you can trust.

Quick Easy process

Quick & easy process

Fill out our simple online application form or call us on 0800 500 555 to have one of our friendly lending specialists help you through the process.

No surprise costs

No surprise costs

All of our fees are communicated to you up front and there are no hidden costs.

How do I get a loan?

Car_left

Get it sorted today

  1. Complete our simple application form

  2. Send us any supporting documentation we ask for

  3. If successful, your loan will be paid out!

Want even more information about applying? Go to our application guide.

Lending criteria, fees, terms and conditions apply.

Want even more information about applying? Go to our application guide.

Lending criteria, fees, terms and conditions apply.

We can help sort all your vehicle needs

Choose a loan with the name more Kiwis trust

AA Member benefits

AA Member Benefits

AA Members receive a $50 establishment fee discount upon presentation of a valid AA Membership number.

AA brand

The AA

The AA has been trusted with helping millions of Kiwis through life’s journeys since 1903. Since then the AA has expanded to provide many diverse services including finance. AA Money would like to help you sort your money needs.

Trusted

Fixed Interest Rates

Enjoy a competitive interest rate fixed for the term of your loan.

Contact us form

Preferred call back date

Apply with ease

Using our fast and secure approval process

GET STARTED

(function() { // Set the timeout for when the dataLayer history should be purged. The default is 30 minutes. // The timeout needs to be in milliseconds. var timeout = 30*60*1000; // Change dataLayerName only if you've defined another named for the dataLayer array in your // GTM container snippet. var dataLayerName = 'dataLayer'; // Don't change anything below. // Initial settings var oldPush = window[dataLayerName].push, containerId = GTM-NPBQ9QG; // Method to copy items from dataLayer from before the GTM container snippet was loaded. var backfillHistory = function() { var tempHistory = [], i = 0, len = window[dataLayerName].length; for (; i < len; i++) { tempHistory.push(window[dataLayerName][i]); } return tempHistory; }; // Method to check if object is a plain object. // From https://bit.ly/2A3Fuqe var isPlainObject = function(value) { if (!value || typeof value !== 'object' || // Nulls, dates, etc. value.nodeType || // DOM nodes. value === value.window) { // Window objects. return false; } try { if (value.constructor && !value.hasOwnProperty('constructor') && !value.constructor.prototype.hasOwnProperty('isPrototypeOf')) { return false; } } catch (e) { return false; } var key; for (key in value) {} return key === undefined || value.hasOwnProperty(key); }; // Method to merge the stored data model and the history model together. // From https://bit.ly/2FrPQWL var mergeStates = function(storedModel, historyModel) { for (var property in storedModel) { if (storedModel.hasOwnProperty(property)) { var storedProperty = storedModel[property]; if (Array.isArray(storedProperty)) { if (!Array.isArray(historyModel[property])) historyModel[property] = []; mergeStates(storedProperty, historyModel[property]); } else if (isPlainObject(storedProperty)) { if (!isPlainObject(historyModel[property])) historyModel[property] = {}; mergeStates(storedProperty, historyModel[property]); } else { historyModel[property] = storedProperty; } } } }; var getODataModel = function() { return window.google_tag_manager[containerId].dataLayer.get({split: function() { return []; }}); }; // **Initialize upon first load** // Build the history array from local storage var dHistory = window._dataLayerHistory = JSON.parse( window.localStorage.getItem('_dataLayerHistory') || '{}' ); // Method to reset the history array to the current page state only dHistory.reset = function() { dHistory.timeout = new Date().getTime() + timeout; dHistory.history = backfillHistory(); for (var prop in dHistory.model) { if (dHistory.model.hasOwnProperty(prop) && prop !== 'get') { delete dHistory.model[prop]; } } mergeStates(getODataModel(), dHistory.model); window.localStorage.setItem('_dataLayerHistory', JSON.stringify(dHistory)); }; // If initial load if (!dHistory.timeout) { dHistory.timeout = new Date().getTime() + timeout; dHistory.history = []; dHistory.model = {}; } dHistory.history = dHistory.history.concat(backfillHistory()); mergeStates(getODataModel(), dHistory.model); // If timeout is reached, reset the history array if (dHistory.hasOwnProperty('timeout') && dHistory.timeout < (new Date().getTime())) { dHistory.reset(); } // From https://bit.ly/2A2ZcCG dHistory.model.get = function(key) { var target = dHistory.model; var split = key.split('.'); for (var i = 0; i < split.length; i++) { if (target[split[i]] === undefined) return undefined; target = target[split[i]]; } return target; }; // Write the new history into localStorage window.localStorage.setItem('_dataLayerHistory', JSON.stringify(dHistory)); window[dataLayerName].push = function() { try { // Initial settings var states = [].slice.call(arguments, 0), timeNow = new Date().getTime(), results = oldPush.apply(window[dataLayerName], states), oDataLayer = window[dataLayerName], oDataModel = getODataModel(); // If timeout is reached, reset the history array if (dHistory.hasOwnProperty('timeout') && dHistory.timeout < (new Date().getTime())) { dHistory.reset(); } // Push latest item from dataLayer into the history array dHistory.history.push(oDataLayer[oDataLayer.length-1]); // Merge GTM's data model with the history model mergeStates(oDataModel, dHistory.model); // Update the timeout dHistory.timeout = timeNow + timeout; // Write the new history into localStorage window.localStorage.setItem('_dataLayerHistory', JSON.stringify(dHistory)); return results; } catch(e) { console.log('Problem interacting with dataLayer history: ' + e); var states = [].slice.call(arguments, 0), results = oldPush.apply(window[dataLayerName], states); return results; } }; })();