PROFITEER USER MANUAL. A sophisticated Cost of Goods Sold App supporting all Shopify sales channels. Resistor Software Inc.

Size: px
Start display at page:

Download "PROFITEER USER MANUAL. A sophisticated Cost of Goods Sold App supporting all Shopify sales channels. Resistor Software Inc."

Transcription

1 PROFITEER USER MANUAL A sophisticated Cost of Goods Sold App supporting all Shopify sales channels Resistor Software Inc.

2

3 Contents INTRODUCTION INSTALLATION INITIAL SETUP The Bootstrap Process... 9 Important Note GENERAL DISCUSSION How do you assign a value for cost price? Rewriting Your Sales History CURRENT PROFIT REPORTS PREFERENCES Security Sales Recording Bulk Pricing

4 21 FREE PRODUCTS WITH SHIPPING CHARGES TO MAKE INCOME Setup Instructions REAL-TIME CURRENCY EXCHANGE Bulk Setting of Currency Exchange Settings What Happens During a Sale AVERAGE COST INVENTORY (AVCO) The AVCO Formula Simple Export/Import Cost Price Updates (No AVCO) AVCO Cost Price CSV Exports AVCO COST PRICE CSV Import AVCO Inventory Changes

5 CHAPTER 1 Introduction Thank you for installing the Profiteer App. Managing cost prices is crucial to helping you monitor your shop profit and for knowing important values like how much your unsold inventory is worth at any given moment in time. For speed and rapid processing of shop orders all cost prices for your inventory are stored in the Profiteer App itself. When you accept a subscription to the App all your sales history is downloaded to the App and all your inventory is setup in the App, with zero as a cost price for each variant. Therefore the first task for any merchant installing the App is to set cost prices for all your variants. Once that is completed, you can rewrite the downloaded sales so that each variant with a zero recorded will have an actual cost price assigned instead. At that point, basic shop profit from sales is visible. Whenever your shop records an order it is sent to the Profiteer where each line item is examined. If the product does not yet exist in the App it will be created, and a zero will be recorded for the cost price of the sold item. If the product s variant has a cost price, it will be recorded instead of zero. The reason you may have products not yet in Profiteer is because you added the product after the App was installed, and have not sold one yet. There is a product synchronization action now built into the App that will ensure new products are also setup in the Profiteer. It is important to understand that cost prices are determined by the merchant. If you are collecting VAT taxes inclusive of your selling prices, Profiteer is removing those taxes. So you should ensure you cost price also does not include VAT. If you pay a shipping charge for your product, you may want to add that charge into the cost price. It is an accounting exercise beyond the scope of the Profiteer. 5

6 Profiteer is meant to provide you with the number equal to the selling price of an item less the cost price. There is one very important issue with Shopify sales to know that affects the Profiteer, and likely all Apps like it. When a discount code is applied to a product, Shopify reports the amount of the discount only at the order level. It does not provide the amount of discount for the product. So while the order adds up in your Shopify administration properly, the math does not add up in the Profiteer. So if you sold a widget for 100 but discounted it by 20, the selling price reported to Profiteer is 100, not 80. The total discount for the product is not reported as 20, but instead is zero. There is an order editing option in the App to allow you to correct this. Note that POS sales can in fact be correct when the merchant applies a discount directly to an item sold. In this case, Shopify reports the discount correctly and adjusting the selling price is then automatic. If we look at Shopify Order Export as providing you with every possible number for evaluating your sales, we see that one crucial number that is missing is the cost price of each line item in that report. The Profiteer has an report action now allowing you to import that Shopify CSV report, and the Profiteer will add a new column to the report with the line item cost price! For convenience you can add cost prices to variants immediately upon their creation simply by using the Shopify Apps button in the product editor and selecting the Cost of Goods Sold link. There is no need to sync products or use any bulk import/export features. 6

7 CHAPTER 2 Installation Profiteer is an embedded Shopify App. That means it works directly inside your shop administration. The installation URL is currently reachable as: The login presented requires your Shopify store name which is always the same as your Shopify administration and consists of your store name and.myshopify.com. Entering fizzbuzz.myshopify.com is the same as just using fizzbuzz. The App should then present you a modal dialog box asking you if you approve of the App having access to some of your store resources. The App needs to have access to your products to manage the cost of goods sold values. It also needs access to orders to record and calculate profits for the line items of each order. After approving the App for installation there is a second request presented asking you to approve a basic subscription fee to use the App. The App consumes cloud-computing resources that are covered by this fee. Ongoing development and support is also considered from these fees. Due to the temporal nature of this App and working on products and sales, there is no one-time fee offered for this App. A successful installation will result in a Welcome being sent to the store administrator account. Please look for an read these s from the App as they contain important information and tips about using the App. If you decline the subscription, the App will not download your sales history, nor will it be listening for any new sales. 7

8 It should be noted that at this time, all s generated by the App sent to the merchant will be sent to the Shopify Administrator account . Please add the address to your whitelist or contact list so that s from the App do not end up in Spam or otherwise get missed/lost. 8

9 CHAPTER 3 Initial Setup The Bootstrap Process A subscription starts the process of bootstrapping the App. The goal is to generate a sales history to support profit calculations. An order in Shopify consists of one or more line items representing the products sold. A single line item is the exact variant of a product sold, with a selling price and the quantity sold. Line items also inform the App about any taxes collected. In cases where a value added tax (VAT) is included in the selling price, the App will remove the tax before calculating profit. The missing value for calculating profit in the bootstrap process is the cost of goods sold value. When creating the sales history the App downloads all existing non-cancelled orders and records an initial cost price of zero. Initially the profit for the sale of any product is therefore 100% of the selling price. Once all the sales are recorded in the App the bootstrap process sets up Shopify Webhooks so that new orders are added to the sales for the store. The App also handles order cancellations and refunds. A cancelled order or refunded line item removes the item(s) from the sales history so as not to skew the profit reports. Note that at this time, as your old order history is downloaded to the App, cancelled orders will be ignored and not transferred. Additionally, any products that were refunded will remain in the App. You can delete refunded sales, but the bootstrap process does not currently do this for you. 9

10 Important Note If you have many orders the process of bootstrapping can take a long time. Shopify imposes API call limits and the App may need to make many API calls when creating a sales history. Please be patient and wait for the confirming this process has completed before reviewing any profit numbers. It can take minutes to many hours to process a store and get it ready for profit calculations moving forward. As an example, 1000 orders needs 1000 API calls, and Shopify allows 2 per second, so the bootstrap can take ~500 seconds plus processing time. Say 10 minutes in this case. A shop with 10,000 orders would take 10 time as long. 10

11 CHAPTER 4 General Discussion With Shopify every variant has a selling price for the item. The selling price is the only value exported by Shopify for reporting purposes. In order to figure out how much profit you ve made off your sale of that item you need to remove the cost price of the item (as well as taxes, shipping charges and perhaps any discounts applied). Profiteer App calculates profit using the cost price of the item or variant. For reasons of speed and practicality, this value is stored in the App itself and is not recorded in Shopify. Until you actually assign a cost of goods sold value, the App will use zero. How do you assign a value for cost price? The easiest way to assign a cost price to a variant is to use Shopify to edit a product. When you do that there is a new link presented in the top right [ ] menu called Cost of Goods Sold. Clicking the link will bring up the cost price and profit report screen as presented in the figure below. 11

12 The top panel (with the title Cost Price Details for Fuzzy Dice) is dedicated to editing the product s cost pricing. The bottom panel (with the title Sales Report: Profit to Date for Product) is dedicated to reporting profits. The top panel also presents the total cost of inventory for the product itself, a value that many accountants find valuable. Clicking the cost price in the top panel will change the exhibited price to an inline text editing box suitable for replacing the cost price. You can type in a new number for your cost price. The save operation will write new cost price and all future sales will use that in calculating profit. Do not include any currency symbols for your pricing. Negative numbers are also a no-no. For convenience the App also allows you to set the same price to all variants by checking off that option when editing a single variant. Be sure to check that option off before editing a price, and the price will be applied to all variants as expected. IMPORTANT If you check off the box in the footer of the top panel that has the label Update sales history with cost price change? the App will also open up your sales history and wherever the variant with the changed cost price is found, the value you provided for a cost price will be applied. This is dangerous in that it rewrites your sales 12

13 history. It is useful if you need to do that. When you add a new product to your store, you can set the cost price using this method to quickly ensure all new sales of the new product calculate profit correctly. Profit for a product is presented on a per variant basis in the bottom panel. Profiteer will go through your sales history and look for the variants sold. It calculates profit by removing cost price from selling price and then shows profit. There is a date range widget available that lets you zero in on any sequence of days you re interested in. It also show off the number of items sold so as to better indicate which variant of many is selling the most or least. A second way to edit the cost price is to use the built-in export feature of the Profiteer App. The following image presents the dashboard screen of the App that has the export button. The Export COGS will go through your store s inventory and produce a CSV file for each and every variant in 13

14 your store. The current CSV provides a brief list of the following columns, all of which have to be present for a successful import to occur. There is no obligation however to update all variants so you can always reduce the size of an import down to a small number of updates if needed. The current list of columns in order is: 1. Variant ID 2. Product Handle 3. Title 4. Quantity 5. SKU 6. Barcode 7. Price 8. Cost Price 9. Number Sold (since App was installed) 10. Product Vendor So you can quickly ID your products you can see the handle, title, SKU and barcode. No amount of editing these values will affect them in your shop. Only changes to the cost price column will matter. You do not want to edit the column one value, the variant ID value. Any changes to that will ensure nothing good happens. Note that the CSV is simple text encoded as UTF-8. There should be no funny visible or invisible characters inserted in this file (which can happen when using Microsoft Excel for example). Importing this file is accomplished from the Dashboard screen where a file uploader is presented expressly for this purpose. The file uploader should work with most modern browsers. If you have trouble with the importer, contact me. Rewriting Your Sales History If you use the bulk import feature to load new cost prices for your products it is likely you want to also recalculate your profits since new cost prices are now set. For this you can use the rewrite history button in the App. The following screenshot shows where that is on the main dashboard screen. 14

15 Selecting the link will initiate a job that will go through your sales history and assign the current cost price associated with each variant in the sale. That then allows profit reports to show the profit of the selling price minus the cost price. Note that if you had previously set the cost price that price will be overwritten. So that mean you would typically only rewrite sales history once, upon an initial import of cost prices when all are set to zero. 15

16 CHAPTER 5 Current Profit Reports To be of maximum utility Profiteer communicates profit reports right on the main Dashboard page. At this time there are two reports to describe. They are the top 10 best selling products on one panel, with the daily profit summariy on the other panel. Both are presented in the image below. 16

17 Profiteer adds up profit numbers for all recorded sales and sorts them to discover the top 10. In my example shop I do not have 10 items setup with sales but for any shop with more than 10 products sold over time, this chart should populate itself with 10 entries. The daily profit and weekly profit are calculated across the entire shop and provide the merchant with an at a glance view of their profits. This panel also presents a calendar widget allowing quick access to a date range that will produce a profit report as well. 17

18 Since a shop can now have alternate sales channels like POS, the App presents profit on sales split between the Web and POS. It is possible to generate a report based on product vendors. The merchant can choose any one vendor, or all vendors for this report. This profit report can also be date filtered. There is a Total Cost of Inventory report available for year-end accounting purposes. This action generates an that will send the merchant the current value of inventory. If a shop has 3314 variants, and all of them have a cost price, the App adds up the inventory and multiplies by the quantities to come up with an accurate cost of inventory number. Any variants that have no cost price assigned are ignored in this report. There is a Sales Export report that allows a merchant to select a range of dates and have a sales report sent to them in the form of a CSV. The file contains useful information like the order date, order number, product sold, cost price, selling price and quantity sold. This report can be easily imported into a spreadsheet program for further analysis of sales and profit. 18

19 CHAPTER 6 Preferences Security Some merchants may not want their employees to have access to changing cost of goods sold values. The store administrator can always access all aspects of the Profiteer App. When accessing the App preferences the administrator can change the security levels of the App. The App can be set so that only the store administrator can use it (the default) any staff member with a full access account can use it any staff member with a limited account including Apps, Products and Orders can use it. Shopify has just released new oauth functionality in October 2016 that might allow Apps to have more finegrained security without the use of this setting, so this is subject to change in the near future. Sales Recording There are two key points in the lifecycle of an order. An order has been created but not paid, or the funds were captured at checkout and it is marked as paid. Depending on merchant preferences, the Profiteer App can be tuned to work in one of two ways. Orders can be sent to the App for profit reporting when created, or only when paid. There is no further distinction between the two. In one case, the order has not actually captured any money, so profit is presented as a potential profit, whereas with a paid order, the profit is essentially money in the bank. 19

20 The default is to work off of PAID orders only, but the merchant has the option in the App Preferences to change this at any time. Bulk Pricing When products are added to the App they all must have a selling price as that is a Shopify Platform rule. There is a convenience function built into the Profiteer Preferences that allow you to set your cost prices to be a percentage of the current selling price. The merchant need only provide this percentage and click the submit button to change all cost prices of all variants to be that percentage. So if you selected 50%, a selling price of would have a cost price of assigned to it by the App. 20

21 CHAPTER 7 Free Products with Shipping Charges To Make Income The sales and marketing pattern where merchants offer free items to customers that have a shipping charge attached to them is very popular. For example a merchant may have a $2 widget that they give to customers for free as part of their order, but that widget has a $9.95 shipping charge. The merchant profits from the shipping charge. The cost price of the item is still entered into Profiteer even though it has a selling price of zero. Profiteer allows the merchant to provide values to replace these zero selling price with the appropriate shipping charge. Setup Instructions The App Dashboard screen Action Button > Preferences screen has a tab dedicated to setting up shipping costs to be used. Initially there are no values set for shipping which means the App will simply record zero for free items. If a single value is set for the first entry, a quantity of one sold, and that is the only value set, then the App will record the selling price as the item quantity sold times the shipping value. Sell 4 of a variant with a single value of 9.95, the selling price will be recorded as

22 **Hence 4 items will cost the customer ** Sell 4 of a variant with a value for 4 set to and the customer will pay for the four items. There is enough room to sell up to 21 free items with a custom shipping charge. 22

23 CHAPTER 8 Real-Time Currency Exchange The Profiteer App is meant to expose profit or margins on a sale by subtracting the cost price of goods sold from the selling price of the goods sold. A common business issue faced by many merchants is the effect currency exchange rates may have on their sales. A shop located in Canada may sell products to Canadians in Canadian currency, but the products sold may have been purchased and imported from the United States. Many merchants probably source their products from the United States, and it is considered to be one of the standard currencies by which most others are measured. Profiteer has a preferences page that allows the merchant to turn on or off currency exchange tracking for sales. When currency exchange is turned on, the merchant has been prompted to select the currency they wish to make their sales in. We could just use the setting from Shopify but for the time being, the selection of the country to use is available from a country list dropdown. A shop selling goods in Brazilian Reals would select Brazil, and swith the selector to ON, before hitting the Save Currency Setting button. 23

24 When currency tracking is ON the Profiteer App will request the exchange rate for the selected country at midnight Eastern Standard Time and record the value for use in the following 24 hour period of time. Additionally the merchant will now be presented with a currency tracking selection per product. By default, all products are not tracking currency even if the shop has currency tracking ON. It is up to the merchant to cherry pick which products are tracking currency when recording sales. That setting is available when editing a product for cost of goods sold. As a convenience, the latest value of the currency exchange is displayed, and the merchant has the option to use that exchange value in sales by ticking ON currency tracking. 24

25 Bulk Setting of Currency Exchange Settings When the merchant turns ON currency tracking for the Shop itself, the Export COGS option will include an extra column in the CSV file with the current exchange rate for any products that have currency exchange ON. It is currently Column 10 in the CSV. If there is a value in that column of any kind, that implies the merchant would like currency tracking enabled for that product. A blank or empty value in that column implies no currency tracking is ON for the product. When importing the file, not only are COGS values updated to match the CSV, but the App will enable/disable currency tracking as well. What Happens During a Sale When a sale is recorded of a product, Profiteer App will first figure out if the shop has currency exchange rate tracking on or off. If the setting is ON the next question asked is whether or not the product has currency exchange tracking on or off. If currency exchange tracking is ON the App will take the cost price from Profiteer App, multiply by the current exchange rate, and then record that resulting value as the cost of goods sold for the product at that time. The result is a profit or margin calculation that is much closer to reality! A merchant that buys some or all of their stock from the United States can set their cost prices in the currency of their shop, and know that Profiteer will convert that value to the equivalent in US dollars at the time of the sale. 25

26 CHAPTER 9 Average Cost Inventory (AVCO) For accounting purposes there are a couple of ways of dealing with selling and purchasing of inventory and the changes in the cost of purchasing inventory over time. It is rare that a merchant will purchase items to sell in their Shopify store for the exact same price over time. It can be important to use an average cost price that takes into account these purchasing price changes over time. Profiteer provides the option to use a average cost price (AVCO) calculations for merchants that need this kinds of accounting support. The formula and its pattern of use will be explained first, followed by an explanation of how inventory levels may be affected. The AVCO Formula To illustrate how this change works we will take an example product that has a current Shopify inventory quantity of 10, with a current cost price of Assume no items are in any customer carts for now. The merchant purchases 20 items to add to the inventory quantity of this product, with a cost price slightly higher at The cost price value to use for all future sales is found from a formula taking the total cost of inventory over the total number of units. In this case the new cost price will be found as: (10 * 10) + (20 * 12)

27 = 340 / 30 = Simple Export/Import Cost Price Updates (No AVCO) When a merchant exports COGS using the dashboard button Export COGS, a CSV is compiled of every variant in their shop, including the current inventory quantity and cost price. The merchant can change the cost prices and then import the CSV file. Profiteer App will transfer the cost price values from the CSV to each variant s cost price used for sales. No inventory levels are changed, and the onus is on the merchant to ensure they used reasonable value for their cost prices. Manual cost price averaging is probably the way to look at this. AVCO Cost Price CSV Exports In Profiteer App Preferences (reachable from the App banner or the Action button on the dashboard), there is a switch to turn AVCO calculations on or off. When switched on, the Export CSV will be compiled with two new columns for use labelled as AVCO Inventory Quantity and AVCO Cost Price. The values are always zero in the Export. Any rows with zero values are ignored by the Import making these columns benign unless changed. AVCO COST PRICE CSV Import If AVCO is on Profiteer App will try and process each variant with the new values provided for inventory quantity and cost prices. The existing inventory level of the variant in Shopify has to be non-negative. Additionally Shopify has to be selected for the variant s inventory management. If those two criteria are not met then only the value in the cost price column will be applied to the variant. In other words, conventional updating will take place where only the cost price is changed, matching the cost price value in the CSV (not the AVCO Cost Price value). For variants with positive Shopify inventory quantities, a value for new inventory and a new cost price value, 27

28 the formula for AVCO will be applied with all four of the inventory and cost values to produce the new weighted average cost price. This value will then be used to the variant s new cost price. AVCO Inventory Changes The AVCO new amount of inventory will be automatically added to the existing Shopify inventory through the use of the built-in Delta inventory change. That means Shopify will respect the amount of and inventory item sitting both on the shelf and in any live customer shopping carts. The merchant can complete two crucial tasks at once with the AVCO process 1. they get new inventory levels and 2. new cost prices that make sense without the hassle of manual calculations 28

29

30 Profiteer User Manual A sophisticated Cost of Goods Sold App supporting all Shopify sales channels Resistor Software Inc. Copyright (C) 2017 Resistor Software Inc.