a:6:{i:0;s:8534:"					<section class="headBg theme2 ">
					<div class="wrap">
					<div class="page-title-inner fo"> 
					<div class="h1"><h1>Job openings for accountant in usa</h1></div>
					<p class="breadcrumb ar uu small"><a href="https://www.exelonconsulting.com/" title="Home">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="https://www.exelonconsulting.com/current-jobs.htm" title="Current Jobs">Current Jobs</a>
																
					<b class="ffv p2px">&rsaquo;</b> Job openings for accountant in usa</p>
					</div>
					</div>
					</section>
									<section id="middle">
				<div class="wrap" id="bodyFormatNT">
				<div class="row1 dt columns23"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls detail_pm_15"><!--MIDDLE ROW1 COL-2 STARTS-->
				
								<div class="pt10px">
				<div class="xxxlarge fw6 dif">External Audit</div>
									<p class="mt7px fw6">Pune</p>
									
				<br>
				<p class="aj mt7px">Statutory audit JD<br />
<br />
As an Audit Senior, you will play a critical role in execution of audits and will collaborate with a diverse group of talented audit professionals. This would require you to be involved in all stages of audit (planning, execution and reporting). You’ll use our cutting-edge audit tools and technology to:<br />
<br />
 <br />
<br />
·       plan, execute and monitor audit engagements<br />
<br />
·       ensure you and the team perform audit procedures as planned<br />
<br />
·       perform various test of controls<br />
<br />
·       assist in identifying audit and accounting issues and resolving them<br />
<br />
·       coach, guide and develop staff on the engagements<br />
<br />
·       develop a good understanding of the sources of accounting and auditing literature<br />
<br />
·       identify best practices on engagements and efficiently implement those<br />
<br />
 <br />
<br />
The Team<br />
<br />
Our team culture is collaborative and encourages team members to take initiative and seek on-the-job learning opportunities. Our audit professionals are committed to excellence and to enhancing the trust of the investing public and capital markets. Quality is our top priority, and by focusing on innovation, we continue to raise the bar on quality and deliver greater value to our clients. <br />
<br />
 <br />
<br />
How you’ll grow<br />
<br />
At Deloitte, we’ve invested a great deal to create a rich environment in which our professionals can grow. We want all our people to develop in their own way, playing to their own strengths as they hone their leadership skills. And, as a part of our efforts, we provide our professionals with a variety of learning and networking opportunities—including exposure to leaders, sponsors, coaches, and challenging assignments—to help accelerate their careers along the way. No two people learn in exactly the same way. So, we provide a range of resources including live classrooms, team-based learning, and eLearning. DU: The Leadership Center in India, our state-of-the-art, world-class learning Center in the Hyderabad offices is an extension of the Deloitte University (DU) in Westlake, Texas, and represents a tangible symbol of our commitment to our people’s growth and development. Explore DU: The Leadership Center in India<br />
<br />
 Required<br />
<br />
·       2+ years of auditing or equivalent experience<br />
<br />
·       Charted Accountant/Certified Public Accountant (CPA) certification<br />
<br />
·       Effective interpersonal and communication skills<br />
<br />
·       Leadership skills demonstrating sound judgment, problem-solving, and decision-making abilities<br />
<br />
·       Experience with  working independently on multiple assignments or engagements<br />
<br />
 <br />
<br />
Preferred<br />
<br />
Experience with a regional or Big 4 accounting organization <br />
 <br />
<br />
Work Timing<br />
<br />
9:00AM – 6:00 PM</p>
				
				<table class="w100 formTable bdr0 mt20px">	
				<tr>
				<td class="w195 alpha75 p5px">Experience</td>
				<td class="p5px">2 Years</td>
				</tr>			
											<tr>
							<td class="alpha75 p5px">Salary</td>
							<td class="p5px"> 3  Lac  To  6  Lac  P.A.</td>
							</tr>				
											
					<tr>
					<td class="alpha75 p5px">Industry</td>
					<td class="p5px">Accounting / Auditing / Taxation</td>
					</tr>
									
									<tr>
					<td class="alpha75 p5px">Qualification</td>
					<td class="p5px">CA</td>
					</tr>					
										<tr>
					<td class="alpha75 p5px">Key Skills</td>
					<td class="p5px">
											<span class="bdr dib p2px10px mr5px mt2px">Tally</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Accounting</span>
												<span class="bdr dib p2px10px mr5px mt2px">  Account Management</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Finance</span>
											</td>
					</tr>
									
				</table>
				</div>
				<br>
				<div class="pt20px">
				<p class="large fw6">About Company</p>
				<div class="mt10px">
				
									<table class="w100 formTable bdr0 mt5px">
											<tr>
						<td class="w195 alpha75 p5px vat">Company Name</td>
						<td class="p5px vat"><p class="dif b">Deloitte University</p></td>
						</tr>
												<tr>
						<td class="w195 alpha75 p5px vat">About Company</td>
						<td class="p5px vat">Deloitte University</td>
						</tr>
												<tr>
						<td class="w195 alpha75 p5px">Email ID</td>
						<td class="p5px"><a href="mailto:mahesh@exelonconsulting.com"> mahesh@exelonconsulting.com </a></td>
						</tr>
										
					</table>
									
				<br />
				
									
					<div class="bdrT pt20px">
					<form name="frmvacdetail" method="post" action="enquiry-form-10009.htm">
					<input style="padding:7px 15px;" class="button b ffos" type="submit" value="APPLY NOW !" />
					<input type="hidden" name="catalog_mi" value="314585">
					<input type="hidden" name="enq_type" value="2"><input type="hidden" name="vacancy_id" value="811315"><input type="hidden" name="subject" value="Applied for External Audit">
					</form>
					</div>
			
									</div>
				</div>			
				
				<!--MIDDLE ROW1 COL-2 ENDS--> 
				</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Location</h2>
				</div>
				<div class="ic">
				<div class="mt10px">
									<span class="dib p5px10px c2px bdr mr7px mb7px "><a class="dif" href="jobs-in-pune.htm" title="Jobs in Pune">Pune</a> <b class="alpha50 bn small">(2)</b></span>
									</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Functional Area</h2>
				</div>
				<div style="padding:10px 18px;" class="ic">
									<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-accounting-tax-fid.htm" title="Accounting / Auditing / Taxation Jobs">Accounting / Auditing / Taxati...</a></p>
										<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-application-programming-fid.htm" title="IT Software - Application Programming / Maintenance Jobs">IT Software - Application Prog...</a></p>
									
				</div>
				</div>
				</div>
				
				</div>
				<!--MIDDLE ROW1 COL-1 ENDS-->
				
				<!--MIDDLE ROW1 ENDS--> 
				</div>
				<br><br>
				</div>
				</section>
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
					<script>
	$.ajax({
	  url: "https://www.placementindia.com/job_posting_view.php",
	  type: "POST",
	  dataType: 'html',
	  data: {job_view_id: 'MmovQWhkdXNiU29TdCt5dHpXY25pZz09',data_type: 'RExzRmw1cmRsdlh6YkJlVUZBNnA4UT09'},
	  cache : false,
	  async: true
	  
	}).done(function(resp) {
	  //alert(resp)
	});
	</script>
	";i:1;s:54:"Job openings for accountant in usa | Exelon Consulting";i:2;s:153:"External Audit Jobs,External Audit Jobs in Pune,External Audit Vacancy in Pune,External Audit jobs in India,Accounting / Auditing / Taxation jobs in Pune";i:3;s:258:"Apply for External Audit Jobs in Pune India - External Audit Vacancy  in Accounting / Auditing / Taxation field with 2 years Work Experience, Key Skills are Tally, Accounting,  Account Management, Finance, Accounting / Auditing / Taxation jobs in Pune  India";i:4;s:3334:"
		<script type="application/ld+json">
		{
		  "@context": "http://schema.org",
		  "@type": "JobPosting",
		  "title": "External Audit",
		  "baseSalary": " 3  Lac  To  6  Lac ",
		  "description": "Statutory audit JD

As an Audit Senior, you will play a critical role in execution of audits and will collaborate with a diverse group of talented audit professionals. This would require you to be involved in all stages of audit (planning, execution and reporting). You’ll use our cutting-edge audit tools and technology to:

 

·       plan, execute and monitor audit engagements

·       ensure you and the team perform audit procedures as planned

·       perform various test of controls

·       assist in identifying audit and accounting issues and resolving them

·       coach, guide and develop staff on the engagements

·       develop a good understanding of the sources of accounting and auditing literature

·       identify best practices on engagements and efficiently implement those

 

The Team

Our team culture is collaborative and encourages team members to take initiative and seek on-the-job learning opportunities. Our audit professionals are committed to excellence and to enhancing the trust of the investing public and capital markets. Quality is our top priority, and by focusing on innovation, we continue to raise the bar on quality and deliver greater value to our clients. 

 

How you’ll grow

At Deloitte, we’ve invested a great deal to create a rich environment in which our professionals can grow. We want all our people to develop in their own way, playing to their own strengths as they hone their leadership skills. And, as a part of our efforts, we provide our professionals with a variety of learning and networking opportunities—including exposure to leaders, sponsors, coaches, and challenging assignments—to help accelerate their careers along the way. No two people learn in exactly the same way. So, we provide a range of resources including live classrooms, team-based learning, and eLearning. DU: The Leadership Center in India, our state-of-the-art, world-class learning Center in the Hyderabad offices is an extension of the Deloitte University (DU) in Westlake, Texas, and represents a tangible symbol of our commitment to our people’s growth and development. Explore DU: The Leadership Center in India

 Required

·       2+ years of auditing or equivalent experience

·       Charted Accountant/Certified Public Accountant (CPA) certification

·       Effective interpersonal and communication skills

·       Leadership skills demonstrating sound judgment, problem-solving, and decision-making abilities

·       Experience with  working independently on multiple assignments or engagements

 

Preferred

Experience with a regional or Big 4 accounting organization 
 

Work Timing

9:00AM – 6:00 PM",
		  "educationRequirements": "CA",
		  "experienceRequirements": "2 Years",
		  "industry": "Accounting / Auditing / Taxation",
		  "jobLocation": {
		    "@type": "Place",
		    "address": {
		      "@type": "PostalAddress",
		      "addressLocality": "Maharashtra",
		      "addressRegion": "Pune"
		    }
		  },
		 "qualifications": "CA",
		     "skills": "Tally, Accounting,  Account Management, Finance"
		  }
		</script>
		";i:5;N;}