function oxDone() { var gads = document.createElement('script'), useSSL = 'https:' === document.location.protocol, node = document.getElementsByTagName('script')[0]; gads.async = true; gads.type = 'text/javascript'; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; node.parentNode.insertBefore(gads, node); } setTimeout(function() { if (!('OX' in window || 'oxhbjs' in window)) { oxDone(); } }, 2500); (function() { var openx = document.createElement('script'), useSSL = 'https:' === document.location.protocol, node = document.getElementsByTagName('script')[0]; openx.async = true; openx.type = 'text/javascript'; openx.src = (useSSL ? 'https:' : 'http:') + '//lovetk-d.openx.net/w/1.0/jstag?nc=1004147-LoveToKnow'; node.parentNode.insertBefore(openx, node); })(); ltk.ads = { retries: [], contentUnit: 'LTK_Business_Finance_Business_Content', debug: false, refreshInterval: 25000, excludedIds: ['ad-carambola-desktop', 'ad-carambola-mobile'], slots: [], numOxSlotsDefined: 0, define: function(id, unit, size, sizes, delay) { var help = this.helpers, debug = this.debug; var sizeDef = size; googletag.cmd.push(function() { if (sizeDef.length === 0) { sizeDef = help.getMaxSizeArr(sizes); } if (sizeDef.length) { if (debug) help.title('define'); var def = googletag.defineSlot('/1004147/' + unit, sizeDef, id) .addService(googletag.pubads()); if (ltk.ads.debug) help.logDeep('define unit: ' + unit + ' for ' + id); if (help.isOxAd(id)) { ltk.ads.numOxSlotsDefined++; if (ltk.ads.numOxSlotsDefined === OX_dfp_ads.length) { OX.dfp_bidder.setOxTargeting(); } if (debug) help.logDeep('set OX target: ' + sizeDef[0] + 'x' + sizeDef[1] + ' for ' + unit); } ltk.ads.slots.push({ id: id, ad: def, visible: false, firstRefresh: true, timer: { state: 'stopped', counter: (ltk.ads.refreshInterval / 1000), isStopped: function() { return this.state === 'stopped'; }, isPaused: function() { return this.state === 'paused'; }, isActive: function() { return this.state === 'active'; }, getState: function() { return this.state; }, pause: function() { this.state = 'paused'; if (debug) help.logTimerPaused('pause timer for ' + id + ': ' + help.getSlotById(id).timer.state); }, resume: function() { this.state = 'active'; if (this.counter <= 1) this.counter++; // make sure we have a minimum impression time of 1 sec if (debug) help.logTimerPaused('resume timer for ' + id + ': ' + help.getSlotById(id).timer.state); }, startTimer: function(slot) { this.state = 'active'; // set to a property in case we need to clear it slot.timer.interval = setInterval(function() { if (!slot.timer.isPaused() && !slot.timer.isStopped() && slot.visible) { if (debug) help.logTimer('refresh ' + id + ' in ' + slot.timer.counter + ' seconds'); slot.timer.counter--; } else { if (debug) help.logTimerPaused('remain paused for ' + id); } if (slot.timer.counter < 0) { ltk.ads.refresh(slot.id); slot.timer.counter = (ltk.ads.refreshInterval / 1000); } }, 1000); } } }); googletag.display(id); // needed only for wrangling sticky ads on load if (debug) help.logDeep('pre-render the ad so sticky ads actually stick'); if (!delay) { if (debug) help.logDeep('see no delay, so request initial fetch and display of the ad'); ltk.ads.refresh(id); } } }); }, refresh: function(id) { var help = this.helpers, debug = this.debug; if (debug) { help.title('refresh'); } googletag.cmd.push(function() { var ad_slot = help.getSlotById(id), ad = ad_slot.ad; if (!ad_slot.firstRefresh && help.isAdOldEnough(ad_slot) === false) { var age = (((new Date()) - ad_slot.timer.last) / 1000); if (debug) { console.log( '%cNot refreshing ... ' + ad_slot.id + ' is only ' + age + ' seconds old', 'background:red;color:white;' ); } return; } if (!ad_slot.firstRefresh && !ad_slot.visible) return; // we won't refresh unless we're visible to google if (help.isOxAd(ad_slot)) { if (debug) help.log('refresh the OX DFP ad for ' + id); OX.dfp_bidder.refresh(function() { OX.dfp_bidder.setOxTargeting([ad]); googletag.pubads().refresh([ad]); }); } else { if (debug) help.log('refresh the non-OX ad ' + id); googletag.pubads().refresh([ad]); } }); }, listen: function(name, handler) { googletag.cmd.push(function() { googletag.pubads().addEventListener(name, handler); }); }, handleImpressionViewable: function(event) { var help = ltk.ads.helpers, debug = ltk.ads.debug; var id = event.slot.getSlotElementId(), slot = help.getSlotById(id); if (debug) { help.title('impressionViewable'); help.logDeep('see event triggered for ' + id); } slot.visible = true; if (slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(); return; } if (slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); } }, handleSlotRenderEnded: function(event) { var help = ltk.ads.helpers, debug = ltk.ads.debug; if (debug) { help.title('slotRenderEnded'); help.logDeep('see event triggered for ' + event.slot.getSlotElementId()); } var slot = help.getSlotById(event.slot.getSlotElementId()); if (slot.firstRefresh === true) slot.firstRefresh = false; slot.timer.last = new Date(); if (slot.visible && slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(); return; } if (slot.visible && slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); } }, handleSlotVisibilityChanged: function(event) { var help = ltk.ads.helpers, debug = ltk.ads.debug; var id = event.slot.getSlotElementId(), perc = event.inViewPercentage, slot = help.getSlotById(id), wasVisible = slot.visible; if (!help.isValidAd(slot)) return; if (debug) { help.title('slotVisiblityChanged'); help.logDeep('see that slotVisibilityChanged was triggered for ' + id); } slot.visible = perc < 50 ? false : true; // same criteria as 'impressionViewable' event var changedOn = !wasVisible && slot.visible, changedOff = wasVisible && !slot.visible; if (debug) { help.logDeep('see that ad was ' + (wasVisible ? 'visible ' : 'not visible ') + 'and is now ' + (slot.visible ? 'visible' : 'not visible')); help.logDeep('see that ' + id + ' has timer as: ' + slot.timer.getState()); } if (changedOn && slot.timer.isStopped()) { if (debug) help.logDeep('am starting the timer'); slot.timer.startTimer(slot); return; } if (changedOn && slot.timer.isPaused()) { if (debug) help.logDeep('am resuming the timer'); slot.timer.resume(); return; } if (changedOff && slot.timer.isActive()) { if (debug) help.logDeep('am pausing the timer'); slot.timer.pause(); } }, helpers: { getMaxSizeArr: function(arr) { var len = arr.length, i = len - 1, retArr = []; for (; i >= 0; i--) { var minVpSize = arr[i][0], minVpWidth = minVpSize[0], minVpHeight = minVpSize[1], allowedAdSizes = arr[i][1]; if (window.innerWidth >= minVpWidth && window.innerHeight >= minVpHeight) { retArr = allowedAdSizes; break; } } return retArr; }, getSlotById: function(id) { for (var i = 0; i < ltk.ads.slots.length; i++) { if (ltk.ads.slots[i].id === id) return ltk.ads.slots[i]; } }, isOxAd: function(ad_slot) { for (var i = 0; i < OX_dfp_ads.length; i++) { if (OX_dfp_ads[i][2] === ad_slot.id) return true; } return false; }, isValidAd: function(ad_slot) { for (var i = 0; i < ltk.ads.excludedIds.length; i++) { if (ad_slot.id === ltk.ads.excludedIds[i]) return false; } return true; }, isAdOldEnough: function(ad_slot) { var timeSpan = Math.ceil(((new Date()) - ad_slot.timer.last) / 1000); var min = Math.ceil(ltk.ads.refreshInterval / 1000); if (timeSpan >= min) { if (ltk.ads.debug) { ltk.ads.helpers.log( 'see that ' + ad_slot.id + ' was refreshed ' + timeSpan + ' seconds ago' ); } return true; } return false; }, title: function(str) { console.log( '%c' + ltk.ads.helpers.getTime() + ' ' + str, 'background:black;color:white;font-weight:bold' ); }, titleDeep: function(str) { console.log( '%c' + ltk.ads.helpers.getTime() + ' ' + str, 'background:black;color:white;font-weight:bold' ); }, log: function(str) { console.log( '%c' + ltk.ads.helpers.getTime() + ' I: ' + '%c' + str, 'background:black;color:orchid;font-weight:bold', 'background:black;color:limegreen;font-weight:bold' ); }, logDeep: function(str) { console.log( '%c' + ltk.ads.helpers.getTime() + ' I: ' + '%c' + str, 'background:black;color:orchid;font-weight:bold', 'background:black;color:limegreen;font-weight:bold' ); }, logTimer: function(str) { console.log('%cI will ' + str, 'background:orange;color:red'); }, logTimerPaused: function(str) { console.log('%cI ' + str, 'background:green;color:white;font-weight:bold'); }, getTime: function() { var d = new Date(), h = d.getHours() + '', m = d.getMinutes() + '', s = d.getSeconds() + ''; h = h.length < 2 ? ('0' + h) : h; m = m.length < 2 ? ('0' + m) : m; s = s.length < 2 ? ('0' + s) : s; return h + ':' + m + ':' + s; } } } googletag.cmd.push(function() { var pubads = googletag.pubads(); pubads.set('page_url', location.href); pubads.collapseEmptyDivs(); pubads.enableSingleRequest(); pubads.disableInitialLoad(); googletag.enableServices(); }); if (ltk.type !== 'Slideshow') { ltk.ads.listen('impressionViewable', ltk.ads.handleImpressionViewable); ltk.ads.listen('slotVisibilityChanged', ltk.ads.handleSlotVisibilityChanged); } ltk.ads.listen('slotRenderEnded', ltk.ads.handleSlotRenderEnded); Best Small Business Accounting Software

Best Small Business Accounting Software

Karen Y. Larkin
Accounting

A terrific array of accounting software greets today's small business leaders. These six top the list because of their features and capabilities, user reviews, and overall reputation in the marketplace.

1. Sage 50 Complete

Sage 50, formerly Peachtree, boasts an extensive range of features and capabilities, which include:

  • Payroll features that store a substantial amount of employee information, calculate taxes and generate forms
  • Inventory tracking that sorts by UPC barcodes or SKU numbers, supports scanning, tracks warehouse locations, and tells you when to reorder
  • Time billing that clocks billable hours, creates time and expense tickets, generates invoices, and tracks work on multiple projects performed by different employees
  • Job costing that allows you to assign cost codes and descriptions to almost any phase of a project
  • A fixed-asset component that allows you to track and calculate depreciation on as many as 200 items, from purchase to disposal
  • More than 200 reports that are highly customizable, and can be shared as emails, pdf files, or Excel spreadsheets

The product retails for $369.99 and is compatible with Windows 8, 7, Vista, and XP.

PC World praises this software for its extensive tutorials and for being customizable. Inventory management features are also mentioned positively within the review. Users posting less favorable reviews are largely displeased at having to pay extra to access certain features.

2. QuickBooks Pro

QuickBooks Pro is the top-selling accounting software package on Amazon, has many of the same features as Sage 50, and retails for about 30 percent less. Features and capabilities include:

  • Check scanning for easy electronic processing
  • Integration with FedEx and UPS to meet your shipping needs
  • Credit and debit card processing
  • Email invoices and notifications
  • Payroll processing that integrates seamlessly with Intuit's payroll service
  • An inventory system that tracks product levels, manages backorders, and reminds you when to reorder
  • Time billing that calculates billable hours, tracks mileage and expenses, records your time, and feeds hours worked into invoices
  • Job costing capability that allows you to assign labor codes and create estimates
  • Fixed asset tracking for general tax and inventory purposes
  • More than 100 reporting options, with a variety of graphics
  • QuickBooks Pro is compatible with most Windows operating systems and offers a Mac version. One negative, however, is that the program does not allow users to void checks.

3. CYMA

CYMA accounting software
CYMA accounting software

CYMA Accounting Software is a favorite among accounting professionals, having earned high marks from the CPA Practice Advisor and the K2 Quality Award.

It is designed for medium-to-large small businesses and those that are growing rapidly. This accounting software is feature-rich, on par with QuickBooks Pro, but it also contains modules for specialized accounting needs, including:

  • Healthcare systems
  • Self-service employee portals
  • Non-profit organizations
  • MICR printing
  • Grant tracking

CYMA is compatible with most Windows 7, Vista, and XP operating systems. The $795 price tag is sobering for some, but the user is allowed to select up to four modules for a lower price.

4. QuickBooks Online

QuickBooks Online may once have been thought of as QuickBooks Pro's poor relation, however, with the incredible rise in app development, that landscape is changing.

QuickBooks Online offers three user levels, ranging in price from $12.95 to $39.95 per month. At the high end, expect to receive most of the same features you will find in QuickBooks Pro, plus:

  • Anywhere access
  • Access for up to five users
  • A free trial
  • Automated data backup
  • Free product upgrades

Perhaps the most striking new feature is SmartVault, a patented toolbar technology. It's a cloud-based repository that allows users to attach and view documents, like bills, receipts, and invoices, directly through the QuickBooks Online interface. This unique functionality has been nominated for a 2013 Innovation Award.

On the downside, it's difficult to grasp precisely which features are available at the different levels, without actually downloading and exploring the software. Fortunately, you can download a trial for free -- but it will cost you some time.

5. FreshBooks

Get your head out of your books and into the cloud! FreshBooks cloud-based accounting software is being touted as a fresh approach to small business accounting.

  • Work anywhere, using any of your electronic devices.
  • Accept payments anywhere, via credit cards, PayPal, or any of 10 additional options.
  • Accept recurring payments.
  • Import expenses from your bank, or take a picture of your receipt.
  • Send customized invoices.
  • Calculate interest charges, and send late reminders.
  • Work in multiple languages and currencies.
  • Create job estimates.
  • Assign and re-bill expenses.
  • Track billable and unbillable time for yourself and your project managers.
  • Assign different billing rates for different people and projects.
  • Maintain profit and loss statements, as well as balance sheets.

Awards include:

  • Interaction Design Association (IXDA) Award
  • Stevie Award for Customer Service

Packages start at $19.95 per month, and a free trial is available.

Like QuickBooks Online, it's difficult to grasp precisely which features are available at the different levels, without actually downloading and exploring the software.

6. NolaPro

NolaPro Free Accounting received a five-star rating from CNET editors and a four-star rating from users. The package is user-friendly, and the free version includes billing and payables modules, as well as a ledger and a help tab.

A broad range of additional modules are available on an a-la-carte basis, with prices starting at $9.95 per month. Add-on modules include:

  • Core accounting
  • Payroll
  • Customer Relationship Management (CRM)
  • Point-of-sale and B2B capabilities
  • Inventory Management
  • 90 reports, with drill-down capabilities
  • International features

Nola Pro is compatible with Windows 7, 8, Vista, and XP. You will need a separate system for banking.

Refine Your Focus

No single small business accounting software program is the best across the board, because every business is unique. Look for a three-way balance between the features you need, ease-of-use, and cost. Once you settle on the package that best meets your small business' needs, it will allow you to focus on the analysis of your data, rather than on the mechanics of it.

Best Small Business Accounting Software