Management accountant & finance business partner jobs

Search for a Job

Our recruitment experience in management accounting & finance business partner jobs

We have an extensive network of relationships with a variety of the UK’s leading employers, from large commercial organisations to entrepreneurial start-ups to influential charities and not for profits. With over 300 consultants that specialise in accountancy and finance recruitment, we place over 1,500 new finance jobs every four weeks, finding candidates a new role in finance every ten minutes.  

If you’re a finance business partner or management accounting professional, we’re hiring experts for roles on a temporary, interim, or permanent basis. Browse positions that include financial analysts, senior finance business partners, management accountants, commercial finance managers and heads of management accounting and financial planning & analysis.  

What really sets us apart from other recruiters is our lifelong partnerships; we’re fully invested in your career and will continue to provide you the latest employer insights and market intelligence – even when you’re not actively looking for a new role. Backed by our tenure and scale through knowledge, we’ll help you build a best-in-class market profile that is always in demand. 

Browse our latest finance business partner and management accounting jobs, along with other career paths in finance

 

Finance business partner and management accounting employers we recruit for 

We’ve fostered strong business relationships with a range of accountancy and finance employers, working with over 3,000 employer organisations. This employer network includes long-standing relationships with large FTSE and international businesses in industry, financial services, not for profit organisations and public sector.  

Discover more about some of our recent featured employers

To find out more about the job opportunities we offer finance business partners and management accounting roles, contact one of our specialist consultants today.

We place over 1,500 new finance professionals every four weeks – that’s one every ten minutes.

An error occurred while processing the template.
The following has evaluated to null or missing:
==> haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)  [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 36]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign jobsResults = haysJobsLocalSe...  [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 13]
----
1<div class="py-16"> 
2 
3<#assign haysJobsLocalService = serviceLocator.findService("com.hays.jobs.service.HaysJobsService")> 
4<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
5<#assign mobileUrlKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_Mobile_Hostname"> 
6<#assign jobURLKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_JobSearch"> 
7<#assign jobSearchUrl = propsUtil.get(jobURLKey)!""> 
8<#assign ucmLocale = propsUtil.get(ucmLocaleKey)!""> 
9<#assign mobilePortalUrl = propsUtil.get(mobileUrlKey) !""> 
10<#assign langId = themeDisplay.getLanguageId() /> 
11<#assign currency = staticUtil["java.util.Currency"]> 
12<#assign textFormatter = staticUtil["java.net.URLEncoder"]> 
13 
14<#assign index = 3 /> 
15<#assign jobCardTitle = ""/> 
16<#assign portalSearchURL = "" /> 
17<#assign jobFriendlyUrl = "" /> 
18<#assign jobCardSalaryDescription = ""/> 
19<#assign jobCardLocationDescription = ""/> 
20 
21<#if JobsByKewords.getSiblings()?has_content> 
22	<#list JobsByKewords.getSiblings() as cur_JobsByKeword> 
23        <#assign keyword = cur_JobsByKeword.Keyword.getData()> 
24        <#assign encodedKeyword = textFormatter.encode(keyword, "UTF-8")> 
25        <#if keyword?? && keyword?has_content> 
26            <#assign jobsResults = haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)> 
27            <#assign portalSearchURL = mobilePortalUrl + "/" + jobSearchUrl + "?q=${encodedKeyword}" /> 
28 
29            <#if !jobsResults.getJSONObject("result").isNull("jobs")> 
30                <div> 
31 
32                        <div class="d-flex justify-content-between align-items-end container-content flex-wrap mb-9"> 
33                            <#if cur_JobsByKeword.Title.getData()?has_content> 
34                                <h2 class="text-brand-blue font-weight-light mb-0 fs-700 fs-lg-800 mb-0 section-heading"> 
35                                    ${cur_JobsByKeword.Title.getData()?keep_before(" ")} 
36                                    <span class="font-weight-semibold">${cur_JobsByKeword.Title.getData()?keep_after(" ")}</span> 
37                                </h2> 
38                            </#if> 
39                            <#if cur_JobsByKeword.CTA.getData()?has_content> 
40                                <a class="button button--arrow button--no-style-teal-dark" href=${portalSearchURL}>${cur_JobsByKeword.CTA.getData()}</a> 
41                            </#if> 
42                        </div> 
43 
44                    <#assign resultJobs = jobsResults.getJSONObject("result").getJSONArray("jobs")> 
45                    <#assign jobsResultsLength = resultJobs.length() /> 
46                    <#assign index = (jobsResultsLength > 3)?then(3, jobsResultsLength) /> 
47 
48                    <div class="carousel"> 
49                        <ul class="container-content grid grid-3 grid-gap-16 grid-gap-lg-32 grid-lg-3"> 
50                            <#list 0..index-1 as i> 
51                                <#if jobsResultsLength != 0> 
52                                    <#if resultJobs.getJSONObject(i).has("nonFilterableCustomFields")> 
53                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("JobTitle")> 
54                                            <#assign jobCardTitle = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("JobTitle").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
55                                            <#assign jobCardTitle = jobCardTitle?replace("\\\\u(....)", "&#x$1;", "r")/> 
56                                        </#if> 
57                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocationDescription")> 
58                                            <#assign jobCardLocationDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocationDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
59                                            <#assign jobCardLocationDescription = jobCardLocationDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
60                                        </#if> 
61                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xSalaryDescription")> 
62                                            <#assign jobCardSalaryDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xSalaryDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
63                                            <#assign jobCardSalaryDescription = jobCardSalaryDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
64                                        </#if> 
65                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocaleRecordID")> 
66                                            <#assign url = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocaleRecordID").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
67                                            <#assign jobUrl = url?keep_after("//")?keep_after("/") /> 
68                                          <#assign jobFriendlyUrl = mobilePortalUrl + "/" + jobUrl + "?jobSource=HaysGCJ" /> 
69                                        </#if> 
70                                    </#if> 
71                                </#if> 
72 
73                                <li class="carousel-slide"> 
74                                    <a href="${jobFriendlyUrl}" class="job-card job-card--grid-teal is-active d-block rounded-lg border border-borders py-7 pb-lg-6 pt-lg-5 px-6 d-flex"> 
75                                        <h4 class="text-black lh-title fs-500 fs-lg-600 font-weight-bold mb-4"> 
76                                            ${jobCardTitle} 
77                                        </h4> 
78                                        <ul class="font-weight-light mb-4 mb-lg-4 fs-400 fs-lg-400"> 
79                                            <li class="d-flex mb-3"> 
80                                                <svg class="feather-icon mr-3 mr-lg-5"> 
81                                                    <path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path> 
82                                                    <circle cx="12" cy="10" r="3"></circle> 
83                                                </svg> 
84                                                <span class="job-card-label font-weight-normal">${jobCardLocationDescription}</span> 
85                                            </li> 
86                                            <li class="d-flex align-items-start"> 
87                                                <div class="group-center mr-3 mr-lg-5"> 
88                                                    <svg class="feather-icon"> 
89                                                        <circle cx="12" cy="12" r="10"></circle> 
90                                                    </svg> 
91                                                     <span> 
92                                                        <#if langId == "en_AE" || langId == "en_CZ" || langId == "en_PL"> 
93                                                            <svg class="feather-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="width:13px;height:13px"> 
94                                                                <path d="M13 5C13 6.10457 10.5376 7 7.5 7C4.46243 7 2 6.10457 2 5M13 5C13 3.89543 10.5376 3 7.5 3C4.46243 3 2 3.89543 2 5M13 5V9.45715C11.7785 9.82398 11 10.3789 11 11M2 5V17C2 18.1046 4.46243 19 7.5 19C8.82963 19 10.0491 18.8284 11 18.5429V11M2 9C2 10.1046 4.46243 11 7.5 11C8.82963 11 10.0491 10.8284 11 10.5429M2 13C2 14.1046 4.46243 15 7.5 15C8.82963 15 10.0491 14.8284 11 14.5429M22 11C22 12.1046 19.5376 13 16.5 13C13.4624 13 11 12.1046 11 11M22 11C22 9.89543 19.5376 9 16.5 9C13.4624 9 11 9.89543 11 11M22 11V19C22 20.1046 19.5376 21 16.5 21C13.4624 21 11 20.1046 11 19V11M22 15C22 16.1046 19.5376 17 16.5 17C13.4624 17 11 16.1046 11 15" stroke="" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
95                                                            </svg> 
96                                                        <#else> 
97                                                            ${currency.getInstance(themeDisplay.getLocale()).getSymbol(themeDisplay.getLocale())} 
98                                                        </#if> 
99                                                    </span> 
100                                                </div> 
101                                                <span class="job-card-label font-weight-normal">${jobCardSalaryDescription}</span> 
102                                            </li> 
103                                        </ul> 
104 
105                                        <div class="job-card__action"> 
106                                            <#if (JobDetailText.getData())??> 
107                                                <button onClick="location.href='${jobFriendlyUrl}'" class="button button--small button--teal-dark button--arrow"> 
108                                                    ${JobDetailText.getData()} 
109                                                </button> 
110                                            </#if> 
111                                        </div> 
112 
113                                    </a> 
114                                </li> 
115                            </#list> 
116                        </ul> 
117                    </div> 
118                </div> 
119                <br/> 
120            </#if> 
121        </#if> 
122    </#list> 
123</#if> 
124</div> 

Finance business partner and management accounting jobs FAQs

The salary for a finance business partner varies depending on location, level of the role and your experience. Management accountants working in London can typically earn £65,000, while experienced business partners can earn closer to £80,000 for example.  

See our Salary Guide for a full region to region breakdown and compare with other job profiles. 

The skills required to become a finance business partner include good commercial business knowledge, technical skills, strategic thinking and analytical skills. The ability to work with complex data sets and translate them for business will also require excellent communication skills and presentation skills. Since this is a senior position with plenty of responsibility candidates will also be likely require an accounting qualification.

You must have excellent numeracy and analytical thinking skills to perform this role, sound business acumen and an ability to question and challenge.

To practice as a management accountant, you’ll be likely to need a relevant professional qualification – Chartered Institute of Management Accountants (CIMA) is the global leader in management accountancy training and so will be a good option, however ACCA and ACA qualifications are also excellent routes, and CIPFA if you want to work or are working within public sector and not-for-profit.  

Our recruitment process