Top Banner
Jarred Keneally – GPM Intuit Developer Group Dinesh Kinger - Senior Software Engineer, Intuit Developer Group Deliver successful code: Application integration best practices for developers WiFi: QBConnect No password required #QBConnect
30

Deliver successful code: Application integration best practices for developers

Mar 20, 2017

Download

Technology

Intuit Inc.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Deliver successful code: Application integration best practices for developers

Jarred Keneally – GPM Intuit Developer GroupDinesh Kinger - Senior Software Engineer, Intuit Developer Group

Deliver successful code:Application integration best practices for developers

WiFi: QBConnect No password required#QBConnect

Page 2: Deliver successful code: Application integration best practices for developers

2

Jarred is a developer relations leader and has been with Intuit for 16 years.

He was part of the team that started the Intuit Partner Platform 5 years ago.

Jarred loves working with developers who are a key partner and component of Intuit's success.

About today’s speaker

Jarred KeneallyGroup Product and Development Manager

#QBConnect | @IntuitDev | @JarredKeneally | @DineshKinger2

Page 3: Deliver successful code: Application integration best practices for developers

3

Dinesh Kinger is a software engineer with 12 years of experience designing and rolling out solutions.

Intuition and design need to go hand in hand to deliver a great user experience

“Customers don't know what they want until we've shown them what they can get.”

About today’s speaker

Dinesh KingerSenior Software Engineer

#QBConnect | @IntuitDev | @JarredKeneally | @DineshKinger2

Page 4: Deliver successful code: Application integration best practices for developers

Why do best practices matter?

Why do customers even want integrations?

Best practices• What• How

Summary of Takeaways

Q&A

Agenda

Page 5: Deliver successful code: Application integration best practices for developers

Why do best practices matter?Ask a customer.

Page 6: Deliver successful code: Application integration best practices for developers

Software is not easy to use, lot of sync issues.”

– AppCenter Reviewer

Page 7: Deliver successful code: Application integration best practices for developers

We installed this app… Unfortunately that's where the problems started. This app creates new customers, new products, and new invoices. In essence, it creates double counting of all transactions that are already in QBO.”– AppCenter Reviewer

Page 8: Deliver successful code: Application integration best practices for developers

Not Sure Why Anyone Would Use This App.”

– AppCenter Reviewer

Page 9: Deliver successful code: Application integration best practices for developers

9

There are 452 apps on Apps.com today

Average of 3 stars, <75% have even 1 review.

Over 15% of QB users have connected at least one app

50% of users won’t try an app with 3 stars or less

Accountants want an app to have at least 4 stars

NPS & reviews are critical to your success

Page 10: Deliver successful code: Application integration best practices for developers

Why do customers even want integrations?

Page 11: Deliver successful code: Application integration best practices for developers

11

The average small business uses 8 applications throughout the course of their business day to run their business.

Everything a small business ultimately touches money or time (=money).

Why do customers want QuickBooks integration?

Page 12: Deliver successful code: Application integration best practices for developers

12

Accounting is a necessary evil of doing business. Unless you are an accountant, you didn’t go into business because you want to do accounting.Government compliance requires accounting• Income Taxes• Sales/Use Taxes• Payroll Taxes

Getting a small business loan requires accounting

Why do customers need QuickBooks integration?

KEY TAKEAWAY: Accounting should be an invisible result of running the business.

Page 13: Deliver successful code: Application integration best practices for developers

Best practices

Page 14: Deliver successful code: Application integration best practices for developers

14

When you write data to QuickBooks, you take on the responsibility of maintaining the accuracy of your user’s books.

It’s tempting to take shortcuts:“Can’t I just record an expense for these fees?”“Why do I have to record a deposit for the money I put in the user’s bank?”“Can’t I just record everything against one ‘Sales’ item?”“Why does the customer’s address matter?”

Accounting is complex

KEY TAKEAWAY: Accuracy is paramount. Don’t take shortcuts!

Page 15: Deliver successful code: Application integration best practices for developers

15

Set the context of what they are doing and why!Guide the user through the processWhen dealing with accounting setup, use QuickBooks TerminologyWhen dealing with your data, use your Terminology (i.e Orders will be synced to QuickBooks as a Sales Receipt)Provide reasonable defaults (based on the user’s QB data)Allow the user to override your defaultsAllow the user to create what they need on the fly (don’t make them go back to QuickBooks if you can avoid it).

Show a summary of the data you would write before you write for the first timeBetter yet, write a small amount of data first, send the user to QB (via deep links) to review what you wrote, and give them a way to delete what you wrote if it wasn’t right

Businesses are unique, their chart of accounts is unique, their needs are unique.

There is no “one size fits all” default setup for an app

Users are not always totally familiar with accounting themselves

Summarize their choices and the effects of those choices

Integration setup is critical to success

KEY TAKEAWAY: The user should leave setup confident that the accounting is correct!

Page 16: Deliver successful code: Application integration best practices for developers

16

Bank activity should match business activity

Page 17: Deliver successful code: Application integration best practices for developers

17

Take your data to the bankLots of biz transactions with no tie to the bank data = more work for the book keeper.

Bank business should be traceable to customer/supplier business

KEY TAKEAWAY: If your data doesn’t match the bank data, you got it wrong!

Page 18: Deliver successful code: Application integration best practices for developers

18

Deposit basedPreferred if you have the right data at the right time.• Record sales to “Undeposited funds”

• Record deposit to bank based on payment reconciliation report

• Link deposit to sales transactions included in the deposit

• Add account-based lines to capture fees, holdbacks, refunds.

• Total needs to match the deposit the bank sees.

Transfer basedUse if you don’t know which sales are included in a bank deposit.Use if the payment system looks like a bank.(i.e. PayPal).• Record sales to “XX Payments holding account”

• Record deposits to bank as a transfer from the holding account to the bank account with the amount matching the reconciliation report

• Record fees and holdbacks as purchases drawn from the holding account.

• Record refunds as drawn from the holding account.

Techniques for payments reconciliation

Page 19: Deliver successful code: Application integration best practices for developers

19

Not all data is relevant to all users

Ex: E-Commerce merchants probably don’t want a unique QBO customer for every order• They may want likely repeat customers (i.e. registered on the website) synced uniquely

Inventory, when used, is critical QBO is “growing up” rapidly hereMany systems have inventory, only QBO knows the accounting for Inventory and somust be treated as the source of truth for that aspect.• Inventory is an asset to the business

• Quantity On Hand is only part of the story (Asset value, COGS)

• QuickBooks doesn’t know everything (multiple pictures, detailed descriptions, etc.)• Maintain “Shared truth” between systems, be aware which is the master for each field of an

inventory item. – Yes, this DOES mean bi-directional data flow

• Be clear on how to handle missing items when syncing to QBO– Create items with default income, asset, COGS accounts– Can you distinguish between inventory and non-inventory items? If not, err on the side of caution and help the user

help you.

Avoid irrelevant data, keep relevant data in sync

KEY TAKEAWAY: Shared truth with different systems holding aspects of the same data critical to that system’s workflow is the “new normal”

KEY TAKEAWAY: Let users make key choices and ensure that you understand the accounting impact of the data you sync and do not sync.

Page 20: Deliver successful code: Application integration best practices for developers

20

“Why isn’t this app syncing?”

”It’s working great! At least, I think so, not really sure how to check whether anything is happening”

“I know it’s supposed to sync tonight, but I need to report to the owner today. Can I force it to sync?”

Show the status of the syncWhen did you last sync?What data did you create? (deep link me to it!) When will you sync next?Any errors I should know about?

Let me manage the sync schedule/turn off syncI know the pace of my business and how important “real time” data is, let me choose how often you sync.

Let me review and change my sync settingsI thought I had it right when I set things up initially, but my accountant schooled me at our quarterly review, I need to change some things up.

Let me force a syncYou may usually only sync once a day, but sometimes I need data that is accurate up to the minute, when that happens let me force it.

Insight and controlGive the user insight into and control of the state of the sync and settings

Page 21: Deliver successful code: Application integration best practices for developers

21

Downtime happens 3 systems with 99.95% uptime mean a total of ½ day of downtime/year 47,311 seconds across the 3 systems (99.953)• Be prepared, and retry later, don’t just skip that day

Data is not always consistent Ex: Paypal “total” doesn’t always match to the total of the line items• Notify the user and be clear on what actions you took

• Avoid skipping transactions unless there is a very easy way to review skips and fix them.

• Use adjusting lines to ensure that bottom lines match and adjustments are easy to find via reports.

User errors / misunderstandings remove critical data Ex: An account/customer/etc. configured in your settings is deleted from QuickBooks• Notify the user and be clear on what happened, what actions you took and what they need to do to fix the sync

Be resilient, handle the unexpectedEven the best systems fail, typical integration involves at least 3 systems.

KEY TAKEAWAY: Errors happen, handle them gracefully and make sure the user knows what happened.

Page 22: Deliver successful code: Application integration best practices for developers

22

Two distinct purposes• Billing– Marked billable– Has a billable customer– Has a rate and/or a service item associated

• Payroll– Has an employee associated

Even when it’s the same time, how you pay for the time may differ from how you bill for the time.

Time keeps on ticking…

Page 23: Deliver successful code: Application integration best practices for developers

23

Be careful of time zones! • QBO is manifestly bad here: time is recorded and displayed in server time (which varies depending

on the region: PST, GMT, AEST, etc.)• Study your users and understand their expectations, adjust what you send QBO to meet user

expectations between your system and ours.

Be cognizant of other systems that may be writing time data and handle appropriately• Does your system expose an approval workflow for time? Should the user have the option of

approving time written to QuickBooks through the API from other apps?• What time is written to QuickBooks? (Approved only, billable only, payroll only, etc.)

Time/date gotcha’s KEY TAKEAWAY: Time data is surprisingly complex, understand your use-cases and QuickBooks user-cases deeply.

Page 24: Deliver successful code: Application integration best practices for developers

Summary of takeaways

Page 25: Deliver successful code: Application integration best practices for developers

25

Summary

KEY TAKEAWAY: Errors happen, handle them gracefully and make sure the user knows what happened.

KEY TAKEAWAY: If your data doesn’t match the bank data, you got it wrong!

KEY TAKEAWAY: The user should leave setup confident that the accounting is correct!

KEY TAKEAWAY: Accuracy is paramount. Don’t take shortcuts!

KEY TAKEAWAY: Accounting should be an invisible result of running the business.

KEY TAKEAWAY: Let users make key choices and ensure that you understand the accounting impact of the data you sync and do not sync.

KEY TAKEAWAY: Shared truth with different systems holding aspects of the same data critical to that system’s workflow is the “new normal”

KEY TAKEAWAY: Time data is surprisingly complex, understand your use-cases and QuickBooks user-cases deeply.

Page 26: Deliver successful code: Application integration best practices for developers

26

Apps published on the QuickBooks App Store between 8/16/16 and 8/15/17 are eligible to enter

Ten finalists demo and pitch at QuickBooks Connect San Jose Nov 15-17

Grand prize winner gets $100K USD

$100K Small Business App Showdown

smallbusinessappshowdown.com

Page 27: Deliver successful code: Application integration best practices for developers

Questions?

Page 28: Deliver successful code: Application integration best practices for developers

Thanks for coming!We’d love your feedback.Before you head out, take a minute to rate this session in the QuickBooks Connect mobile app.

Keep the conversation goingdeveloper.intuit.com/hub/quickbooks-connect

Access Session SlidesEngage with Speakers and Fellow DevelopersGet Questions Answered

Page 29: Deliver successful code: Application integration best practices for developers

Access the presentation materials via: The QuickBooks Connect 2017 Conference App

orSlideshare at: http://www.slideshare.com/tag/QBCUK17

Page 30: Deliver successful code: Application integration best practices for developers