ASN Partners Estimate Fee

Calculate professional service fees for your clients easily using our interactive ASN Partners Estimate Fee calculator. Get instant fee breakdown.

Info

Created On: June 30, 2025
Created By: @CalculatorTools

Tags

AI

Model: gpt-4o-mini
Time: 80 seconds
Prompt Tokens: 0
Completion Tokens: 0
Total Token Cost: 0

Get This App On Your Website

1. Copy the code above with the iframe and link.
2. Paste the code into your website.
3. Resize the iframe to fit your website.

Javascript, HTML, CSS Code

                    
<html>
<head>
<script type="text/javascript"> window.addEventListener('error', function(event) { var message = JSON.parse(JSON.stringify(event.message)); var source = event.filename; var lineno = event.lineno; var colno = event.colno; var error = event.error; window.parent.postMessage({ type: 'iframeError', details: { message: message, source: source, lineno: lineno, colno: colno, error: error ? error.stack : '' } }, '*'); }); window.addEventListener('unhandledrejection', function(event) { window.parent.postMessage({ type: 'iframePromiseRejection', details: { reason: event.reason } }, '*'); }); </script>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>ASN Partners Estimate Fee</title>
<meta name="description" content="Calculate professional service fees for your clients easily using our interactive ASN Partners Estimate Fee calculator. Get instant fee breakdown.">
<meta name="keywords" content="calculator, fee calculator, accounting fees, business fees, professional services, client fees">

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet">

<script type="text/javascript">
$(document).ready(function() {
let clientName = '';
let contactNo = '';
let clientType = 'Limited Company';
let turnover = 0;
let employees = 0;
let properties = 1;
let management = true;
let services = {
accounts: true,
vat: true,
payroll: true,
pension: true,
selfAssessment: false
};
let selfAssessmentPersons = 1;
let payrollFrequency = 'Monthly';
let pensionEmployees = 3;

const fees = {
accounts: 0,
vat: 0,
payroll: 0,
pension: 0,
property: 0,
management: 0,
selfAssessment: 0,
subtotal: 0,
vatAmount: 0,
total: 0,
monthly: 0
};

const calculateFees = () => {
const accountsFee = calculateAccountsFee();
const vatFee = calculateVATFee();
const payrollFee = calculatePayrollFee();
const pensionFee = calculatePensionFee();
const propertyFee = calculatePropertyFee();
const managementFee = calculateManagementFee();
const selfAssessmentFee = calculateSelfAssessmentFee();

const subtotal = accountsFee + vatFee + payrollFee + pensionFee + propertyFee + managementFee + selfAssessmentFee;
const vatAmount = subtotal * 0.2;
const total = subtotal + vatAmount;
const monthly = total / 12;

return {
accounts: accountsFee,
vat: vatFee,
payroll: payrollFee,
pension: pensionFee,
property: propertyFee,
management: managementFee,
selfAssessment: selfAssessmentFee,
subtotal: subtotal,
vatAmount: vatAmount,
total: total,
monthly: monthly
};
};

const calculateAccountsFee = () => {
if (!services.accounts) return 0;
const tiers = clientType === 'Sole Trader' ? [700, 850, 900, 1000, 1300, 1400, 1600, 1800, 2000] :
clientType === 'Limited Company' ? [875, 975, 1100, 1250, 1500, 1600, 1800, 2000, 2200] :
clientType === 'Partnership' ? [800, 900, 1000, 1150, 1400, 1500, 1700, 1900, 2100] :
[650, 750, 850, 950, 1200, 1300, 1500, 1700, 1900];
const turnoverThresholds = [90000, 99000, 149000, 249000, 349000, 499000, 749000, 999000];

for (let i = 0; i < turnoverThresholds.length; i++) {
if (turnover <= turnoverThresholds[i]) {
return tiers[i];
}
}
return tiers[tiers.length - 1];
};

const calculateVATFee = () => {
if (!services.vat) return 0;
const thresholds = [99000, 149000, 249000, 349000, 499000, 749000, 999000, Infinity];
const fees = [550, 750, 850, 950, 1150, 1600, 1900, 2300];
for (let i = 0; i < thresholds.length; i++) {
if (turnover <= thresholds[i]) {
return fees[i];
}
}
};

const calculatePayrollFee = () => {
if (!services.payroll) return 0;
let fee;
if (payrollFrequency === 'Weekly') {
fee = employees <= 5 ? 520 : employees <= 10 ? 580 : employees <= 15 ? 675 : employees <= 20 ? 820 : employees <= 30 ? 1085 : employees <= 40 ? 1350 : employees <= 50 ? 1640 : 1800;
} else if (payrollFrequency === 'Monthly') {
fee = employees <= 5 ? 350 : employees <= 10 ? 400 : employees <= 15 ? 450 : employees <= 20 ? 550 : employees <= 30 ? 665 : employees <= 40 ? 780 : employees <= 50 ? 880 : 1000;
} else {
fee = employees <= 5 ? 420 : employees <= 10 ? 475 : employees <= 15 ? 550 : employees <= 20 ? 650 : employees <= 30 ? 785 : employees <= 40 ? 920 : employees <= 50 ? 1100 : 1300;
}
return Math.round(fee);
};

const calculatePensionFee = () => {
if (!services.pension) return 0;
if (pensionEmployees <= 5) return 180;
if (pensionEmployees <= 10) return 195;
if (pensionEmployees <= 15) return 235;
if (pensionEmployees <= 20) return 270;
if (pensionEmployees <= 30) return 365;
if (pensionEmployees <= 40) return 465;
if (pensionEmployees <= 50) return 550;
return 650;
};

const calculatePropertyFee = () => {
if (properties === 0) return 0;
if (properties <= 5) return 150 + (100 * (properties - 1));
return 550 + (75 * (properties - 5));
};

const calculateManagementFee = () => management ? 800 : 0;

const calculateSelfAssessmentFee = () => {
if (!services.selfAssessment) return 0;
if (selfAssessmentPersons === 1) return 175;
if (selfAssessmentPersons === 2) return 300;
return 140 * selfAssessmentPersons;
};

const displayResults = () => {
const calculatedFees = calculateFees();
const resultsDiv = $('#results');
resultsDiv.html(`
<h3 class="text-xl font-semibold text-gray-700 border-b-2 border-maroon-200 pb-2">📊 Fee Breakdown</h3>
<ul class="list-disc pl-5">
<li class="text-gray-600">Accounts & Tax Fee: <span class="font-bold text-maroon-600">£${calculatedFees.accounts.toFixed(2)}</span></li>
<li class="text-gray-600">VAT Fee: <span class="font-bold text-maroon-600">£${calculatedFees.vat.toFixed(2)}</span></li>
<li class="text-gray-600">Payroll Fee: <span class="font-bold text-maroon-600">£${calculatedFees.payroll.toFixed(2)}</span></li>
<li class="text-gray-600">Pension Fee: <span class="font-bold text-maroon-600">£${calculatedFees.pension.toFixed(2)}</span></li>
<li class="text-gray-600">Property Fee: <span class="font-bold text-maroon-600">£${calculatedFees.property.toFixed(2)}</span></li>
<li class="text-gray-600">Management Fee: <span class="font-bold text-maroon-600">£${calculatedFees.management.toFixed(2)}</span></li>
${services.selfAssessment ? `
<li class="text-gray-600">Self Assessment Fee: <span class="font-bold text-maroon-600">£${calculatedFees.selfAssessment.toFixed(2)}</span></li>
` : ''}
</ul>
<div class="mt-6 bg-white rounded-xl p-5 shadow-inner border border-gray-100">
<h4 class="font-semibold text-gray-700">✨ Summary:</h4>
<div class="grid grid-cols-2 py-2">
<span class="font-semibold text-gray-700">Subtotal Fee: </span>
<span class="font-bold text-right text-maroon-600">£${calculatedFees.subtotal.toFixed(2)}</span>
</div>
<div class="grid grid-cols-2 py-2">
<span class="font-semibold text-gray-700">VAT 20%: </span>
<span class="font-bold text-right text-maroon-600">£${calculatedFees.vatAmount.toFixed(2)}</span>
</div>
<div class="grid grid-cols-2 bg-white rounded-lg p-3 shadow mt-3">
<span class="font-semibold text-lg text-gray-800">Total Fee - Annual:</span>
<span class="font-bold text-right text-2xl text-maroon-700">£${calculatedFees.total.toFixed(2)}</span>
</div>
<div class="grid grid-cols-2 bg-white p-3 shadow mt-3">
<span class="font-semibold text-lg text-gray-800">Monthly Fee:</span>
<span class="font-bold text-right text-maroon-600">£${calculatedFees.monthly.toFixed(2)}</span>
</div>
</div>
`);
};

$('#main-container').on('change', 'input, select', function() {
const id = $(this).attr('id');
const value = $(this).val();
if (id === 'clientName') clientName = value;
else if (id === 'contactNo') contactNo = value;
else if (id === 'clientType') clientType = value;
else if (id === 'turnover') turnover = Number(value);
else if (id === 'properties') properties = Number(value);
else if (id === 'management') management = $(this).is(':checked');
else if (id.includes('service')) {
const service = id.split('_')[1];
services[service] = $(this).is(':checked');
updateServiceStatus(service);
}
if (id === 'payrollFrequency') payrollFrequency = value;
if (id === 'employees') employees = Number(value);
if (id === 'pensionEmployees') pensionEmployees = Number(value);
if (id === 'selfAssessmentPersons') selfAssessmentPersons = Number(value);
displayResults();
togglePayrollFields();
});

const updateServiceStatus = (service) => {
const isActive = services[service];
$(`#status_${service}`).text(isActive ? "Yes" : "No").css("color", isActive ? "green" : "red");
togglePayrollFields();
};

const togglePayrollFields = () => {
if (services.payroll) {
$('#payrollFrequency').parent().show();
$('#employees').parent().show();
} else {
$('#payrollFrequency').parent().hide();
$('#employees').parent().hide();
}
};

const resetInputs = () => {
clientName = '';
contactNo = '';
clientType = 'Limited Company';
turnover = 0;
employees = 0;
properties = 1;
management = true;
services = { accounts: true, vat: true, payroll: true, pension: true, selfAssessment: false };
selfAssessmentPersons = 1;
payrollFrequency = 'Monthly';
pensionEmployees = 3;

$('input, select').each(function() {
const el = $(this);
if (el.is('input[type="checkbox"]')) {
el.prop('checked', services[el.attr('id').split('_')[1]]);
updateServiceStatus(el.attr('id').split('_')[1]);
} else {
el.val(el.is('[id="clientType"]') ? clientType :
el.is('[id="turnover"]') ? turnover :
el.is('[id="properties"]') ? properties :
el.is('[id="selfAssessmentPersons"]') ? selfAssessmentPersons :
el.is('[id="pensionEmployees"]') ? pensionEmployees :
el.is('[id="clientName"]') ? clientName :
el.is('[id="contactNo"]') ? contactNo : payrollFrequency);
}
});

displayResults();
};

$('#resetButton').on('click', resetInputs);
displayResults();
togglePayrollFields();
});
</script>

<style>
body {
font-family: 'Inter', sans-serif;
background-color: #FFFFFF;
color: #333;
}

#main-container {
margin: 0 auto;
max-width: 1200px;
padding: 20px;
}

.two-columns {
display: grid;
grid-template-columns: 1fr 1.5fr;
gap: 20px;
}

button {
background: #9A0A24;
border: none;
border-radius: 5px;
color: white;
padding: 10px 20px;
cursor: pointer;
transition: background 0.3s;
margin-top: 10px;
}
button:hover {
background: #7A0A19;
}

h1, h3, h4 {
text-align: center;
margin: 10px 0;
}

.bg-white {
background-color: #FFFFFF;
}

.results-upper {
margin-top: 20px;
background: #f1f1f1;
padding: 15px;
border-radius: 10px;
}

ul {
padding: 0;
list-style-type: none;
}

.service-point {
display: flex;
justify-content: space-between;
align-items: center;
margin: 5px 0;
}

.service-point label {
width: 70%;
}

.status {
font-weight: bold;
margin-left: 10px;
}

label {
margin-top: 10px;
display: block;
}

select {
width: 100%;
height: 35px;
margin-bottom: 10px;
}

.conditional {
display: none;
}
</style>

<link rel="canonical" href="https://calculator.tools/prompt/10024/">
<meta charset="utf-8">
</head>
<body>
<div id="main-container" class="container">
<div class="bg-white rounded-lg p-6 shadow-md">
<h1 class="text-3xl font-bold">ASN Partners Estimate Fee</h1>
<p>Calculate professional service fees for your clients easily with instant breakdowns!</p>
</div>
<div class="two-columns">
<div class="p-6 bg-gray-100 rounded-lg">
<h3 class="font-bold text-lg">👤 Client Details</h3>
<form id="inputForm">
<label>Client Name:</label>
<input type="text" id="clientName" placeholder="Enter client name">
<label>Contact Number:</label>
<input type="tel" id="contactNo" placeholder="Enter contact number">
<label>Client Type:</label>
<select id="clientType">
<option value="Sole Trader">Sole Trader</option>
<option value="Limited Company">Limited Company</option>
<option value="Partnership">Partnership</option>
</select>
<label>Annual Turnover (£):</label>
<select id="turnover">
<option value="0">£ 0k - £ 90k</option>
<option value="90000">£ 91k - £ 99k</option>
<option value="100000">£ 100k - £ 149k</option>
<option value="150000">£ 150k - £ 249k</option>
<option value="250000">£ 250k - £ 349k</option>
<option value="350000">£ 350k - £ 499k</option>
<option value="500000">£ 500k - £ 749k</option>
<option value="750000">£ 750k - £ 999k</option>
<option value="1000000">£ 1m +</option>
</select>
<label>Properties Managed:</label>
<input type="number" id="properties" value="1" min="0">
<label>✔️ Management Accounts:</label>
<input type="checkbox" id="management" checked>
<h4 class="font-bold mt-4">🛠️ Selected Services</h4>
<div class="service-point">
<label>Accounts Service:</label>
<input type="checkbox" id="service_accounts" checked>
<span id="status_accounts" class="status">Yes</span>
</div>
<div class="service-point">
<label>VAT Service:</label>
<input type="checkbox" id="service_vat" checked>
<span id="status_vat" class="status">Yes</span>
</div>
<div class="service-point">
<label>Payroll Service:</label>
<input type="checkbox" id="service_payroll" checked>
<span id="status_payroll" class="status">Yes</span>
</div>
<div class="conditional">
<label>Payroll Frequency:</label>
<select id="payrollFrequency">
<option value="Weekly">Weekly</option>
<option value="Monthly">Monthly</option>
<option value="Fortnightly">Fortnightly</option>
</select>
<label>Number of Employees:</label>
<select id="employees">
<option value="1">01 – 05</option>
<option value="6">06 – 10</option>
<option value="11">11 – 15</option>
<option value="16">16 – 20</option>
<option value="21">21 – 30</option>
<option value="31">31 – 40</option>
<option value="41">41 – 50</option>
<option value="51">51 – 75</option>
<option value="76">76 – 100</option>
<option value="101">100+</option>
</select>
</div>
<div class="service-point">
<label>Pension Service:</label>
<input type="checkbox" id="service_pension" checked>
<span id="status_pension" class="status">Yes</span>
</div>
<label>Number of Employees (for Pension):</label>
<select id="pensionEmployees">
<option value="1">01 – 05</option>
<option value="6">06 – 10</option>
<option value="11">11 – 15</option>
<option value="16">16 – 20</option>
<option value="21">21 – 30</option>
<option value="31">31 – 40</option>
<option value="41">41 – 50</option>
<option value="51">51 – 75</option>
<option value="76">76 – 100</option>
<option value="101">100+</option>
</select>
<div class="service-point">
<label>Self-Assessment Service:</label>
<input type="checkbox" id="service_selfAssessment">
<span id="status_selfAssessment" class="status">No</span>
</div>
<label>Number of Persons for Self-Assessment:</label>
<input type="number" id="selfAssessmentPersons" value="1" min="1">
<button type="button" id="resetButton">Reset All Inputs</button>
</form>
</div>
<div id="results" class="results-upper mt-6"></div>
</div>
</div>
<script type="text/javascript"> var localStoragePrefix = "ct-{{ cachebreaker }}"; var lastSave = 0; function saveLocal(data) { if (Date.now() - lastSave < 1000) { return; } let cookie = localStoragePrefix + "=" + JSON.stringify(data) + "; path=" + window.location.pathname + "'; SameSite=Strict"; cookie += "; expires=" + new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 1000).toUTCString(); document.cookie = cookie; lastSave = Date.now(); } function loadLocal() { var cookiePrefix = localStoragePrefix + "="; var cookieStart = document.cookie.indexOf(cookiePrefix); if (cookieStart > -1) { let cookieEnd = document.cookie.indexOf(";", cookieStart); if (cookieEnd == -1) { cookieEnd = document.cookie.length; } var cookieData = document.cookie.substring(cookieStart + cookiePrefix.length, cookieEnd); return JSON.parse(cookieData); } } </script>

<script type="text/javascript"> window.addEventListener('load', function() { var observer = new MutationObserver(function() { window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); observer.observe(document.body, {attributes: true, childList: true, subtree: true}); window.parent.postMessage({height: document.documentElement.scrollHeight || document.body.scrollHeight},"*"); }); </script>
</body>
</html>

FAQ

What is Calculator Tools?

Calculator Tools allows you to instantly create and generate any simple one page web app for free and immediately have it online to use and share. This means anything! Mini apps, calculators, trackers, tools, games, puzzles, screensavers... anything you can think of that the AI can handle.

The AI uses Javacript, HTML, and CSS programming to code your app up in moments. This currently uses GPT-4 the latest and most powerful version of the OpenAI GPT language model.

What Do You Mean Make An App?

Have you ever just wanted a simple app but didn't want to learn programming or pay someone to make it for you? Calculator Tools is the solution! Just type in your prompt and the AI will generate a simple app for you in seconds. You can then customize it to your liking and share it with your friends.

AI has become so powerful it is that simple these days.

Does This Use ChatGPT?

It uses GPT-4 which is the most powerful model for ChatGPT.

Calculator Tools does not remember things from prompt to prompt, each image is a unique image that does not reference any of the images or prompts previously supplied.