a:6:{i:0;s:14178:"					<section class="headBg theme2 bread-right">
					<div class="wrap">
					<div class="page-title-inner fo"> 
					<div class="h1"><h1>Job openings for accountant in kolhapur</h1></div>
					<p class="breadcrumb ar uu small"><a href="https://www.pacificconsultancy.in/" title="Home">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="https://www.pacificconsultancy.in/current-jobs.htm" title="Current Jobs">Current Jobs</a>
																
					<b class="ffv p2px">&rsaquo;</b> Job openings for accountant in kolhapur</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="dt w100">
				<div class="dtc">
				<div class="xxxlarge fw6 dif">Accountant</div>
									<p class="mt7px fw6">Kolhapur</p>
								
				</div>
				<div class="dtc w125px"><div class="mt7px">
									
					<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="434170">
					<input type="hidden" name="enq_type" value="2"><input type="hidden" name="vacancy_id" value="990026"><input type="hidden" name="subject" value="Applied for Accountant">
					</form>
			
									</div></div>
				</div>
								<br />
				<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-53d0b0627cb3c661"></script>
				<div class="fo">
				<div class="addthis_sharing_toolbox dib vam mr10px"></div>
				<a href="https://www.pacificconsultancy.in/vacancy_990026.rss" target="_blank" class="p5px15px dib c3px" style="background:#f8991b;color:#ffffff;"><i class="fa fa-feed"></i> RSS Feed </a>
				</div>
				<br>
				<p class="aj mt7px">Job Position - Accountant (Female)<br />
Location - Kolhapur<br />
The post is for a Female Accountant having an experience in the required field of minimum 1 year. The candidate should have good knowledge of accountancy and should be efficient and hard working.<br />
**<br />
**<br />
Responsibilities and Duties<br />
•	Preparing or managing accounts and tax returns.<br />
•	Play a hand in payroll administration and manage the expenditure of the organization.<br />
•	Responsible for auditing the financial information.<br />
•	Gather and present the reports, budgets, financial statements and business plans.<br />
•	Analyze the accounts of the organization and business plans.<br />
•	Contribute towards an efficient working of the organization and ensure the awareness of the company of its financial condition.<br />
•	Should be able to work under tremendous pressure dealing with the bankruptcy cases if any situation arises.<br />
•	Handle the negotiation by managing the terms of deals made in business and other such moves or agreement made with clients or organizations.<br />
•	Manage colleagues by monitoring their work and help with their workload in order to increase efficiency by meeting the deadlines.<br />
Qualifications and Skills<br />
Skills -<br />
•	This position demands candidates who can self-motivate themselves and get it through to implement with more efficiency.<br />
•	Should have the ability to reflect on one's own work as well as the wider importance of financial decisions.<br />
•	Should have knowledge about the business and should have the willingness to work.<br />
•	Should be well organized and should have the ability to finish the work before the deadline.<br />
•	Should have a good team-work skills and interpersonal skills.<br />
•	Should be Computer literate.<br />
•	Should have good analytical skills to monitor the growth of the organization.<br />
•	Should be very good with numbers and should be well versed with problem-solving skill.<br />
•	Excellent knowledge of MS Office tools.<br />
**<br />
Education :<br />
•	Bachelor's (BCom)<br />
•	PG (MCom)<br />
•	Advanced Compute</p>
				
				<table class="w100 formTable bdr0 mt20px">	
				<tr>
				<td class="w195 alpha75 p5px">Experience</td>
				<td class="p5px">1 - 3 Years</td>
				</tr>			
									<tr>
					<td class="alpha75 p5px">Salary</td>
					<td class="p5px">Not Disclosed</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">B.Com, M.Com</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"> GST</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Accountant</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Accounts Executive</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Accounts Assistant</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Finance Coordinator</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Audit</span>
												<span class="bdr dib p2px10px mr5px mt2px"> income tax</span>
												<span class="bdr dib p2px10px mr5px mt2px"> TDS</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Service Tax</span>
												<span class="bdr dib p2px10px mr5px mt2px"> Indirect Taxation</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">Contact Person</td>
						<td class="p5px">Aishwarya</td>
						</tr>					
												<tr>
						<td class="w195 alpha75 p5px">Address</td>
						<td class="p5px">1785 E Ward, Ghugare Complex, G Enterprises Building, Shahupuri 4th Lane, Kolhapur Maharashtra Pin-416008</td>
						</tr>					
												<tr>
						<td class="w195 alpha75 p5px">Mobile </td>
						<td class="p5px">7030633999 </td>
						</tr>
												<tr>
						<td class="w195 alpha75 p5px">Email ID</td>
						<td class="p5px"><a href="mailto:info@pacificconsultancy.in"> info@pacificconsultancy.in </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="434170">
					<input type="hidden" name="enq_type" value="2"><input type="hidden" name="vacancy_id" value="990026"><input type="hidden" name="subject" value="Applied for Accountant">
					</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-kolhapur.htm" title="Jobs in Kolhapur">Kolhapur</a> <b class="alpha50 bn small">(121)</b></span>
										<span class="dib p5px10px c2px bdr mr7px mb7px "><a class="dif" href="jobs-in-belgaum.htm" title="Jobs in Belgaum">Belgaum</a> <b class="alpha50 bn small">(2)</b></span>
										<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">(21)</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">(14)</span><a href="jobs-in-hr-recruitment-administration-ir-training-development-operations-fid.htm" title="HR / Recruitment / Administration / IR / Training & Development / Operations Jobs">HR / Recruitment / Administrat...</a></p>
										<p class="mb5px "><span class="fr">(13)</span><a href="jobs-in-financial-services-banking-investments-insurance-stock-market-loan-fid.htm" title="Financial Services / Banking, Investments / Insurance / stock market / Loan Jobs">Financial Services / Banking, ...</a></p>
										<p class="mb5px "><span class="fr">(12)</span><a href="jobs-in-front-office-reception-computer-operator-assistant-fid.htm" title="Front Office / Reception/Computer Operator/Assistant Jobs">Front Office / Reception/Compu...</a></p>
										<p class="mb5px "><span class="fr">(11)</span><a href="jobs-in-sales-marketing-business-development-telecaller-fid.htm" title="Sales & Marketing / Business Development/telecaller Jobs">Sales & Marketing / Business D...</a></p>
										<p class="mb5px "><span class="fr">(10)</span><a href="jobs-in-manufacturing-production-fid.htm" title="Manufacturing / Production / Quality Jobs">Manufacturing / Production / Q...</a></p>
										<p class="mb5px "><span class="fr">(7)</span><a href="jobs-in-application-programming-fid.htm" title="IT Software - Application Programming / Maintenance Jobs">IT Software - Application Prog...</a></p>
										<p class="mb5px "><span class="fr">(6)</span><a href="jobs-in-corporate-planning-fid.htm" title="Corporate Planning & Strategy / Management Consulting Jobs">Corporate Planning & Strategy ...</a></p>
										<p class="mb5px "><span class="fr">(4)</span><a href="jobs-in-engineering-design-rd-quality-fid.htm" title="Engineering/ Engineering Design / R&D / Quality Jobs">Engineering/ Engineering Desig...</a></p>
										<p class="mb5px "><span class="fr">(4)</span><a href="jobs-in-web-designing-programming-fid.htm" title="IT Software - Others Jobs">IT Software - Others</a></p>
										<p class="mb5px "><span class="fr">(3)</span><a href="jobs-in-health-care-pharmaceuticals-medical-fid.htm" title="Health Care / Pharmaceuticals / Medical Jobs">Health Care / Pharmaceuticals ...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(3)</span><a href="jobs-in-ites-bpo-kpo-lpo-customer-service-fid.htm" title="ITES / BPO / KPO / LPO / Customer Service Jobs">ITES / BPO / KPO / LPO / Custo...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(3)</span><a href="jobs-in-property-construction-fid.htm" title="Real Estate / Construction Jobs">Real Estate / Construction</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(2)</span><a href="jobs-in-analytic-business-intelligence-fid.htm" title="Analytic and Business Intelligence Jobs">Analytic and Business Intellig...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(2)</span><a href="jobs-in-education-teaching-training-counselling-fid.htm" title="Education / Teaching / Training / Counselling / Academic Jobs">Education / Teaching / Trainin...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(2)</span><a href="jobs-in-client-server-fid.htm" title="IT Software - Client Server Jobs">IT Software - Client Server</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(2)</span><a href="jobs-in-supply-chain-purchase-procurement-fid.htm" title="Supply Chain / Purchase / Procurement Jobs">Supply Chain / Purchase / Proc...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(1)</span><a href="jobs-in-defence-forces-security-forces-fid.htm" title="Defence Forces / Security Forces Jobs">Defence Forces / Security Forc...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(1)</span><a href="jobs-in-network-administration-security-fid.htm" title="IT Software - Network Administration, Security Jobs">IT Software - Network Administ...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(1)</span><a href="jobs-in-media-entertainment-tv-films-production-broadcasting-fid.htm" title="Media / Entertainment /  TV / Films / Production / Broadcasting Jobs">Media / Entertainment /  TV / ...</a></p>
										<p class="mb5px spanlist dn"><span class="fr">(1)</span><a href="jobs-in-it-analyst-software-testing-fid.htm" title="IT Software - QA / Testing / Documentation Jobs">IT Software - QA / Testing / D...</a></p>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
									
				</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: 'N2FYVnRRQllDb0JaT1poR0tmL3hLdz09',data_type: 'RExzRmw1cmRsdlh6YkJlVUZBNnA4UT09'},
	  cache : false,
	  async: true
	  
	}).done(function(resp) {
	  //alert(resp)
	});
	</script>
	";i:1;s:95:"Job openings for accountant in kolhapur | Pacific Placements and Business Consultancy Pvt. Ltd.";i:2;s:149:"Accountant Jobs,Accountant Jobs in Kolhapur,Accountant Vacancy in Kolhapur,Accountant jobs in India,Accounting / Auditing / Taxation jobs in Kolhapur";i:3;s:355:"Apply for Accountant Jobs in Kolhapur India - Accountant Vacancy  in Accounting / Auditing / Taxation field with 1 to 3 years Work Experience, Key Skills are Tally, GST, Accountant, Accounts Executive, Accounts Assistant, Finance Coordinator, Audit, income tax, TDS, Service Tax, Indirect Taxation, Accounting / Auditing / Taxation jobs in Kolhapur  India";i:4;s:3225:"
		<script type="application/ld+json">
		{
		  "@context": "http://schema.org",
		  "@type": "JobPosting",
		  "title": "Accountant",
		  "identifier": {
	        "@type": "PropertyValue",
	        "name": "",
	        "value":  "990026"
	      },
		  "hiringOrganization": {
	      "@type" : "Organization",
	      "name" : "",
	      "description": "",
	      "telephone" : "7030633999",
	      "email" : "info@pacificconsultancy.in"  
	       },
		  "url": "https://www.pacificconsultancy.in/job-openings-for-accountant-kolhapur-990026.htm",
          "datePosted": "2021-08-17",
          
		  "baseSalary": "",
		  "description": "Job Position - Accountant (Female)
Location - Kolhapur
The post is for a Female Accountant having an experience in the required field of minimum 1 year. The candidate should have good knowledge of accountancy and should be efficient and hard working.
**
**
Responsibilities and Duties
•	Preparing or managing accounts and tax returns.
•	Play a hand in payroll administration and manage the expenditure of the organization.
•	Responsible for auditing the financial information.
•	Gather and present the reports, budgets, financial statements and business plans.
•	Analyze the accounts of the organization and business plans.
•	Contribute towards an efficient working of the organization and ensure the awareness of the company of its financial condition.
•	Should be able to work under tremendous pressure dealing with the bankruptcy cases if any situation arises.
•	Handle the negotiation by managing the terms of deals made in business and other such moves or agreement made with clients or organizations.
•	Manage colleagues by monitoring their work and help with their workload in order to increase efficiency by meeting the deadlines.
Qualifications and Skills
Skills -
•	This position demands candidates who can self-motivate themselves and get it through to implement with more efficiency.
•	Should have the ability to reflect on one's own work as well as the wider importance of financial decisions.
•	Should have knowledge about the business and should have the willingness to work.
•	Should be well organized and should have the ability to finish the work before the deadline.
•	Should have a good team-work skills and interpersonal skills.
•	Should be Computer literate.
•	Should have good analytical skills to monitor the growth of the organization.
•	Should be very good with numbers and should be well versed with problem-solving skill.
•	Excellent knowledge of MS Office tools.
**
Education :
•	Bachelor's (BCom)
•	PG (MCom)
•	Advanced Compute",
		  "educationRequirements": "B.Com, M.Com",
		  "experienceRequirements": "1 - 3 Years",
		  "industry": "Accounting / Auditing / Taxation",
		  "jobLocation": {
		    "@type": "Place",
		    "address": {
		      "@type": "PostalAddress",
		      "addressLocality": "Maharashtra",
		      "addressRegion": "Kolhapur"
		    }
		  },
		 "qualifications": "B.Com, M.Com",
		     "skills": "Tally, GST, Accountant, Accounts Executive, Accounts Assistant, Finance Coordinator, Audit, income tax, TDS, Service Tax, Indirect Taxation"
		  }
		</script>
		";i:5;N;}