ASN Fee Calculator - Calculate Professional Service Fees
About this app
Calculate professional service fees for your accounting clients with ease using the ASN Fee Calculator. Adjust client type, services, turnover, and more!
ASN Partners Estimate Fee ASN Partners Estimate Fee Annual Turnover (£): £ 0k – £ 90k £ 91k – £ 99k £ 100k – £ 149k £ 150k – £ 249k £ 250k – £ 349k £ 350k – £ 499k £ 500k – £ 749k £ 750k – £ 999k £ 1m + 📋Selected Services: Accounts & Tax: ✅ Yes / ❌ No VAT: ✅ Yes / ❌ No Payroll: ✅ Yes / ❌ No
Related apps
Put this on your site
Source
<html>
<head>
<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="Estimate professional service fees for your accounting clients at ASN Partners with an organized interface for easy calculations.">
<meta name="keywords" content="ASN Partners, Estimate Fee, Accounting, Services, Fees">
<style>
body {
background: linear-gradient(135deg, #500d0d, #a45c5c);
color: #ffffff;
font-family: 'Arial', sans-serif;
}
#main-container {
padding: 20px;
border-radius: 10px;
box-shadow: 0 4px 20px rgba(0,0,0,0.2);
background-color: #4c0c0c;
max-width: 800px;
margin: auto;
}
h1 {
text-align: center;
color: #f1c40f;
}
.highlight { color: #e74c3c; }
.container {
display: flex;
justify-content: space-between;
margin: 20px 0;
}
.column {
flex: 1;
padding: 10px;
text-align: left;
}
label {
display: block;
margin-top: 10px;
}
input, select {
width: 100%;
border-radius: 5px;
border: 1px solid #f39c12;
padding: 10px;
margin-bottom: 15px;
background-color: #f4f4f4;
}
.service-label {
display: flex;
align-items: center;
}
.service-label span {
margin-left: 10px;
}
button {
background-color: #d35400;
color: white;
border: none;
padding: 12px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
width: 100%;
}
button:hover {
background-color: #c0392b;
}
.section-header {
display: flex;
align-items: center;
margin: 20px 0;
font-size: 1.5em;
}
.section-header span {
margin-right: 10px;
}
.cta {
display: flex;
margin-top: 20px;
flex-direction: column;
align-items: center;
}
.note {
margin-top: 20px;
padding: 10px;
background-color: #34495e;
border-radius: 5px;
}
.summary-header {
margin: 20px 0;
font-size: 1.5em;
display: flex;
align-items: center;
}
.discount-label {
display: inline-block;
margin: 10px 0;
}
.services-list {
list-style-type: none;
padding: 0;
}
.services-list li {
margin: 10px 0;
display: flex;
align-items: center;
}
.services-list li label {
display: flex;
align-items: center;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
const app = {
clientName: '',
contactNo: '',
clientType: 'Limited Company',
turnover: '50000',
properties: 1,
management: true,
employees: 3,
payrollFrequency: 'Monthly',
services: {
accounts: false,
vat: false,
payroll: false,
pension: false,
selfAssessment: false
},
selfAssessmentPersons: 1,
managementAccounts: false,
fees: {
accounts: 0,
vat: 0,
payroll: 0,
pension: 0,
management: 0,
property: 0,
selfAssessment: 0,
subtotal: 0,
discount: 0,
vatAmount: 0,
total: 0,
monthly: 0
},
calculateFees: function() {
const accountsFee = this.services.accounts ? 400 : 0;
const vatFee = this.services.vat ? 550 : 0;
const payrollFee = this.services.payroll ? (this.employees <= 5 ? 350 : 0) : 0;
const pensionFee = this.services.pension ? 180 : 0;
const managementFee = this.managementAccounts ? (this.employees <= 3 ? this.employees * 150 : 450) : 0;
const selfAssessmentFee = this.services.selfAssessment ? (this.selfAssessmentPersons === 1 ? 175 : 0) : 0;
const subtotal = accountsFee + vatFee + payrollFee + pensionFee + managementFee + selfAssessmentFee;
const discountAmount = (this.fees.discount / 100) * subtotal;
const vatAmount = (subtotal - discountAmount) * 0.2;
const total = subtotal - discountAmount + vatAmount;
const monthly = total / 12;
this.fees = { accounts: accountsFee, vat: vatFee, payroll: payrollFee, pension: pensionFee, management: managementFee, selfAssessment: selfAssessmentFee, property: 0, subtotal: subtotal, discount: this.fees.discount, vatAmount: vatAmount, total: total, monthly: monthly };
this.updateDisplay();
},
updateDisplay: function() {
for (let key in this.fees) {
const element = document.getElementById(key);
if (element) {
element.textContent = `£${this.fees[key].toFixed(2)}`;
}
}
this.toggleConditionFields();
},
toggleConditionFields: function() {
const payrollFields = ['payrollFrequencySelect', 'employeesSelect'];
payrollFields.forEach(field => {
document.getElementById(field).style.display = this.services.payroll ? 'block' : 'none';
});
},
toggleService: function(service) {
this.services[service] = !this.services[service];
this.calculateFees();
},
resetInputs: function() {
this.clientName = '';
this.contactNo = '';
this.clientType = 'Limited Company';
this.turnover = '50000';
this.properties = 1;
this.managementAccounts = false;
this.employees = 3;
this.fees.discount = 0;
this.services = { accounts: false, vat: false, payroll: false, pension: false, selfAssessment: false };
this.selfAssessmentPersons = 1;
this.updateDisplay();
},
printQuotation: function() {
window.print();
},
call: function() {
window.location.href = "tel:02089118000";
}
};
app.updateDisplay();
document.getElementById('clientNameInput').oninput = function() { app.clientName = this.value; };
document.getElementById('contactNoInput').oninput = function() { app.contactNo = this.value; };
document.getElementById('clientTypeSelect').onchange = function() { app.clientType = this.value; app.calculateFees(); };
document.getElementById('turnoverSelect').onchange = function() { app.turnover = this.value; app.calculateFees(); };
document.getElementById('accountsToggle').onclick = function() { app.toggleService('accounts'); };
document.getElementById('vatToggle').onclick = function() { app.toggleService('vat'); };
document.getElementById('payrollToggle').onclick = function() { app.toggleService('payroll'); };
document.getElementById('pensionToggle').onclick = function() { app.toggleService('pension'); };
document.getElementById('selfAssessmentToggle').onclick = function() { app.toggleService('selfAssessment'); };
document.getElementById('employeesSelect').onchange = function() { app.employees = this.value; app.calculateFees(); };
document.getElementById('payrollFrequencySelect').onchange = function() { app.payrollFrequency = this.value; };
document.getElementById('discountInput').oninput = function() { app.fees.discount = this.value; app.calculateFees(); };
document.getElementById('resetButton').onclick = function() { app.resetInputs(); };
document.getElementById('printButton').onclick = function() { app.printQuotation(); };
document.getElementById('callButton').onclick = function() { app.call(); };
});
</script>
</head>
<body>
<div id="main-container">
<h1>ASN Partners Estimate Fee</h1>
<label>Annual Turnover (£):</label>
<select id="turnoverSelect">
<option value="0">£ 0k – £ 90k</option>
<option value="91">£ 91k – £ 99k</option>
<option value="100">£ 100k – £ 149k</option>
<option value="150">£ 150k – £ 249k</option>
<option value="250">£ 250k – £ 349k</option>
<option value="350">£ 350k – £ 499k</option>
<option value="500">£ 500k – £ 749k</option>
<option value="750">£ 750k – £ 999k</option>
<option value="1000">£ 1m +</option>
</select>
<div class="section-header">
<span>📋</span><span>Selected Services:</span>
</div>
<ul class="services-list">
<li>
<input type="checkbox" id="accountsToggle" />
<label for="accountsToggle">Accounts & Tax: </label><span>✅ Yes / ❌ No</span>
</li>
<li>
<input type="checkbox" id="vatToggle" />
<label for="vatToggle">VAT: </label><span>✅ Yes / ❌ No</span>
</li>
<li>
<input type="checkbox" id="payrollToggle" />
<label for="payrollToggle">Payroll: </label><span>✅ Yes / ❌ No</span>
</li>
<div id="payrollFields" style="display:none;">
<label Payroll Frequency:</label>
<select id="payrollFrequencySelect">
<option value="Weekly">Weekly</option>
<option value="Monthly" selected>Monthly</option>
<option value="Fortnightly">Fortnightly</option>
<option value="Weekly + Monthly">Weekly + Monthly</option>
</select>
<label>Number of Employees:</label>
<select id="employeesSelect">
<option value="1">01–05</option>
<option value="2">06–10</option>
<option value="3">11–15</option>
<option value="4">16–20</option>
<option value="5">21–30</option>
<option value="6">31–40</option>
<option value="7">41–50</option>
<option value="8">51–75</option>
<option value="9">76–100</option>
<option value="10">100+</option>
</select>
</div>
<li>
<input type="checkbox" id="pensionToggle" />
<label for="pensionToggle">Pension: </label><span>✅ Yes / ❌ No</span>
</li>
<li>
<input type="checkbox" id="selfAssessmentToggle" />
<label for="selfAssessmentToggle">Self-Assessment: </label><span>✅ Yes / ❌ No</span>
</li>
</ul>
<div class="column">
<h4>Fee Breakdown:</h4>
<p>Accounts Fee (£): <span id="accounts">£0.00</span></p>
<p>VAT Fee (£): <span id="vat">£0.00</span></p>
<p>Payroll Fee (£): <span id="payroll">£0.00</span></p>
<p>Pension Fee (£): <span id="pension">£0.00</span></p>
<p>Management Fee (£): <span id="management">£0.00</span></p>
<p>Self Assessment Fee (£): <span id="selfAssessment">£0.00</span></p>
<div class="summary-header">
<span>📊</span><span>Summary</span>
</div>
<p>Subtotal Fee (£): <span id="subtotal">£0.00</span></p>
<label class="discount-label">Discount %:</label>
<input type="number" id="discountInput" placeholder="Enter % discount" />
<p>VAT 20%: <span id="vatAmount">£0.00</span></p>
<p>Total Fee (£): <span id="total">£0.00</span></p>
<p>Monthly Fee (£): <span id="monthly">£0.00</span></p>
</div>
<div class="cta">
<button id="printButton">Print Quotation</button>
<button id="callButton">Call: 0208 911 8000</button>
<button id="resetButton">Reset All Inputs</button>
</div>
<div class="note">
<strong>Note:</strong>
<p>The above is an estimate. To get an exact quote, please call us at 0208 911 8000 or email us at gentral@asnuk.com. If your annual turnover exceeds £1 million or the number of employees for payroll services exceeds 100, please contact us directly.</p>
<p>The confirmation statement filing fee is not included in the above estimate and must be paid separately to Companies House as part of statutory compliance.</p>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const app = {
clientName: '',
contactNo: '',
clientType: 'Limited Company',
turnover: '50000',
properties: 1,
management: true,
employees: 3,
payrollFrequency: 'Monthly',
services: {
accounts: false,
vat: false,
payroll: false,
pension: false,
selfAssessment: false
},
selfAssessmentPersons: 1,
managementAccounts: false,
fees: {
accounts: 0,
vat: 0,
payroll: 0,
pension: 0,
management: 0,
property: 0,
selfAssessment: 0,
subtotal: 0,
discount: 0,
vatAmount: 0,
total: 0,
monthly: 0
},
calculateFees: function() {
const accountsFee = this.services.accounts ? 400 : 0;
const vatFee = this.services.vat ? 550 : 0;
const payrollFee = this.services.payroll ? (this.employees <= 5 ? 350 : 0) : 0;
const pensionFee = this.services.pension ? 180 : 0;
const managementFee = this.managementAccounts ? (this.employees <= 3 ? this.employees * 150 : 450) : 0;
const selfAssessmentFee = this.services.selfAssessment ? (this.selfAssessmentPersons === 1 ? 175 : 0) : 0;
const subtotal = accountsFee + vatFee + payrollFee + pensionFee + managementFee + selfAssessmentFee;
const discountAmount = (this.fees.discount / 100) * subtotal;
const vatAmount = (subtotal - discountAmount) * 0.2;
const total = subtotal - discountAmount + vatAmount;
const monthly = total / 12;
this.fees = { accounts: accountsFee, vat: vatFee, payroll: payrollFee, pension: pensionFee, management: managementFee, selfAssessment: selfAssessmentFee, property: 0, subtotal: subtotal, discount: this.fees.discount, vatAmount: vatAmount, total: total, monthly: monthly };
this.updateDisplay();
},
updateDisplay: function() {
for (let key in this.fees) {
const element = document.getElementById(key);
if (element) {
element.textContent = `£${this.fees[key].toFixed(2)}`;
}
}
this.toggleConditionFields();
},
toggleConditionFields: function() {
const payrollFields = ['payrollFrequencySelect', 'employeesSelect'];
payrollFields.forEach(field => {
document.getElementById(field).style.display = this.services.payroll ? 'block' : 'none';
});
},
toggleService: function(service) {
this.services[service] = !this.services[service];
this.calculateFees();
},
resetInputs: function() {
this.clientName = '';
this.contactNo = '';
this.clientType = 'Limited Company';
this.turnover = '50000';
this.properties = 1;
this.managementAccounts = false;
this.employees = 3;
this.fees.discount = 0;
this.services = { accounts: false, vat: false, payroll: false, pension: false, selfAssessment: false };
this.selfAssessmentPersons = 1;
this.updateDisplay();
},
printQuotation: function() {
window.print();
},
call: function() {
window.location.href = "tel:02089118000";
}
};
app.updateDisplay();
document.getElementById('clientNameInput').oninput = function() { app.clientName = this.value; };
document.getElementById('contactNoInput').oninput = function() { app.contactNo = this.value; };
document.getElementById('clientTypeSelect').onchange = function() { app.clientType = this.value; app.calculateFees(); };
document.getElementById('turnoverSelect').onchange = function() { app.turnover = this.value; app.calculateFees(); };
document.getElementById('accountsToggle').onclick = function() { app.toggleService('accounts'); };
document.getElementById('vatToggle').onclick = function() { app.toggleService('vat'); };
document.getElementById('payrollToggle').onclick = function() { app.toggleService('payroll'); };
document.getElementById('pensionToggle').onclick = function() { app.toggleService('pension'); };
document.getElementById('selfAssessmentToggle').onclick = function() { app.toggleService('selfAssessment'); };
document.getElementById('employeesSelect').onchange = function() { app.employees = this.value; app.calculateFees(); };
document.getElementById('payrollFrequencySelect').onchange = function() { app.payrollFrequency = this.value; };
document.getElementById('discountInput').oninput = function() { app.fees.discount = this.value; app.calculateFees(); };
document.getElementById('resetButton').onclick = function() { app.resetInputs(); };
document.getElementById('printButton').onclick = function() { app.printQuotation(); };
document.getElementById('callButton').onclick = function() { app.call(); };
});
</script>
</body>
</html>
NEW APPS
These are apps made by the community!