About
With sales-based cost of goods sold (COGS), Finaloop records what your products cost you at the moment they sell, using the cost per unit you give us. Finaloop shows this method in your inventory settings as Sales based. We've also created a video that covers how we track your COGS and inventory using the sales based method.
Using sales based COGS:
When you purchase inventory, your inventory balance increases.
When you sell inventory, COGS are recorded in your P&L and the Inventory value in the balance sheet is reduced.
For example, you sell 5,000 units at $1 on 1 June. COGS in the P&L increases automatically by $5,000 and the Inventory value in the balance sheet decreases by a corresponding amount ($5,000).
You can track all this movement in Inventory overview (Inventory → Inventory overview).
① Opening balance, ② Purchases, ③ COGS, ④ Closing balance.
The process starts with your opening balance, then how to track your inventory purchases, and lastly how to manage your COGS in Finaloop under the sales based tracking method.
1. When should you use sales based COGS?
Use sales based COGS when you want COGS recorded as your products sell, using the cost per unit you give us. Before you start diving into the fun-filled world of sales based tracking, head over to the article How to choose your COGS tracking method in Finaloop to choose the best COGS method for your business.
The rest of this guide assumes you've decided sales based is the right choice for you.
2. How Finaloop calculates sales-based COGS
Finaloop multiplies the units you sold by your cost per unit, product by product and channel by channel. A unit's cost counts when the unit sells, not when you bought it. Buying 10,000 units in March doesn't dent March's margin; selling them over the next six months does.
Three inputs go into the calculation:
Input | Where it comes from |
Units sold | Synced automatically from each connected sales channel and from your wholesale invoices |
Units restocked | Synced from your sales channels where they report restocks, or entered by you |
Cost per unit | Synced from Shopify where it's available, or entered by you on the Cost per unit tab, in a bulk edit, or by CSV |
Every cost you enter carries a start date and stays in effect until you enter a new one. Finaloop applies each cost to the units depleted while it was in effect, then adds those pieces together.
For example, a SKU with 8,000 units depleted at $1.00 and 3,000 depleted at $100.00:
8,000 × $1.00 = $8,000
3,000 × $100.00 = $300,000
COGS is $308,000, and the average cost is $308,000 ÷ 11,000 = $28.00. This is why the Average cost column on the Products page rarely matches the cost you last typed in: it's a weighted average across the period you're viewing, not your current cost.
3. Setting up your opening balance
Click Inventory settings (top right of any Inventory page), open the Opening balance tab, and enter the opening balance in My inventory balance on (the date shown is the day before your books start).
This is the balance of your inventory on the last day of the year before your books start in Finaloop. For example, if your books start on January 1, 2024, add the inventory balance on December 31, 2023. You can find this in the balance sheet in your previous accounting software or in last year's tax return, if it was already filed.
This is a one-time task that ensures we're starting off with an inventory starting point that's fully reconciled to your tax return. Adding an opening balance needs an active subscription.
4. Track inventory purchases
The next part of your inventory process after the opening balance is purchasing your inventory products, supplies, and materials.
To view and track inventory transactions, go to Inventory purchases (Inventory → Inventory purchases).
The screen has multiple sections.
Filters
Date range: from and to
Search: enter text or a value
Filters opens more options:
Status: for example In-process, In-transit and received. Changing the status affects the breakdown of inventory in the balance sheet. The status shown is the status as of the last day of the selected period.
Accounting Treatment: Inventory, COGS (purchases expensed straight to COGS, previously called incidentals) or Dropshipping A/P.
Aggregate by: Accounting treatment, Categories or Both.
Inventory totals
Total inventory: purchases that increase your inventory
Total dropshipping A/P: shown when you have dropshipping purchases
Total COGS: purchases recorded straight to COGS
Category totals
On your screen, you'll only see the relevant categories for your business. For how each category is treated, see What happens when you categorize a purchase as inventory or COGS.
Dropshipping
Finished products
Shipping & freight-in
Supplies & materials
Packaging materials
Production costs
Consignment
Custom fees & services
Dead inventory
Other inventory costs
Production labor costs
Duties & tax
Inventory insurance
Pallet costs
Shipping surcharge
Vendor fees
Product donations
Product giveaways
Warranty reimbursement
Click the category to get the drill down for each category.
Transaction details
Click on each transaction to update transaction details such as:
Status: changing the Shipped on or Received on date will determine if the purchase is inventory in process, inventory in transit, or inventory received.
You can also split the purchase into 2 or more transactions or shipments with Add split and update the status of each split.
View the transaction source (bill) and/or upload attachments.
By default, new purchases are recorded as received on the purchase date. To track shipping and receiving yourself, click Purchases settings and, on the Status tab, choose Track manually instead of Mark as received immediately (default). The setting applies to new purchases only.
Actions
You can also click on Actions to take these additional actions:
Add a historical purchase for any purchases that were ordered prior to when your books started in Finaloop but weren't yet received.
Export your selected purchases into a CSV.
Change accounting treatment of a purchase to COGS in order to treat it as a direct COGS and not as part of your inventory, or to Dropshipping A/P to treat it based on your selected dropshipping solution (see Managing Dropshipping (Sales-Based COGS)). Just select the purchase that applies and click Change accounting treatment.
5. Managing products
Head to Products (Inventory → Products). Here you'll see all your products from your connected sales channels (Shopify, Amazon, TikTok Shop, Walmart) and from your wholesale invoices, with the cost per unit synced from Shopify. Other sales channels don't share cost data, so you add those costs yourself.
① Period, search and Filters, ② Actions, ③ Net units depleted and Average cost.
The stock levels and inventory values are displayed by product/SKU.
Filters
Use the different filters to select/refine the data.
Date (from and to)
Search Product name or SKU
Filters opens a wide range of filters: Source, Attributes, View hidden from product list and Product tags.
By default, you only see active products, but you can select Inactive under Attributes as well.
Actions
Bulk costs edit
Bulk unit edit
Merge products
Export file
Hide from product list / Show in product list: hiding a product only removes it from the list. Its COGS stays in your books.
Add product
Product columns
Source
Attributes
Net units depleted: units sold (and given away), reduced by units restocked. Returned units only count once they're restocked.
Average cost: COGS divided by net units depleted for the selected period
Merge multiple products
You can also merge multiple products and group them together under one 'primary' product. This is a useful feature when you have identical items coming from multiple sources, such as Amazon and Shopify and you want cost updates to apply to products from different sources.
By merging the products, you can update the cost-per-unit once for a single product and have it applied to the others as well. A cost synced from Shopify only reaches your Amazon or TikTok Shop sales once those copies are merged into the Shopify product as primary.
When merging, you need to select a primary product. Once the merge is complete, the cost of the primary product will be used for COGS calculations, and the merged products will be displayed as a single entity. This merged product will retain the primary product's name, SKU, and photo.
To merge a product:
Go to Products.
Click the Actions dropdown in top right and select Merge products.
On the Merge Products page, select the products you want to merge.
Choose the primary product by clicking Make primary. You can also add additional products to merge or remove products.
Click Save.
Note that on the Products page, after the merge, only the product marked as primary will appear. On the Attributes column, you'll see a symbol indicating that this product was merged. For more, see Merging multiple products.
6. How to track your sales based COGS
The COGS page (Inventory → COGS) shows your COGS for the period.
COGS can also include dead inventory, dropshipping, and purchases recorded straight to COGS. In addition, product giveaways and product donations can also reduce your inventory. We'll walk you through all of these scenarios and explain how we can help with these cases.
There are two ways to track sales based COGS when inventory is sold:
Track per SKU by using an average cost per unit
Track per channel by inputting a total COGS number
Option 1: Track per SKU using an average cost per unit
You can upload the average cost per product into Finaloop or if you use Shopify, we can sync these costs automatically. For Shopify, Amazon, TikTok Shop, Walmart, and wholesale sales on invoices (created in Finaloop or synced from SPS Commerce or Crstl), we'll use this data to calculate COGS based on real-time sales.
For sales outside of these channels, you can easily update your data across all your SKUs at once for:
Units sold and units restocked in one easy upload
Dead inventory, product giveaways, and product donations.
This is especially helpful for brands selling outside of these channels, like eBay or Etsy, or if you restock returned inventory yourself.
Step 1: Activating per SKU method
Click Inventory settings (top right of any Inventory page). On the General tab, under Sales channels – report per SKU, make sure the toggle is on for each sales channel. For Shopify, you can also choose Sync quantities and Sync cost per unit.
Important: Turning a sales channel's toggle off removes all per-SKU COGS data for that channel, including manual quantity adjustments, product giveaways and dead inventory. Turning off Sync cost per unit deletes the costs already synced from Shopify, except costs in closed books.
Step 2: Updating product cost per unit
If your product costs are updated in Shopify, we'll sync these to Finaloop automatically. If you don't sell some or all active SKUs on Shopify or you don't keep Shopify costs updated for active SKUs, you can update your product costs in one of several ways:
Add a new cost for a single product in Shopify
Add a new cost for a single product in Finaloop
Edit a historical or existing cost for a single product
Update costs per unit in bulk
Any product without a cost per unit adds $0 of COGS when it sells, so its margin looks like 100%. The Products page shows how many products are missing a cost: [n] products are missing cost per unit for COGS calculation. Turn on the toggle next to it to show only those products, then follow the instructions for the relevant method for adding the cost per unit.
① The missing-cost toggle, ② Average cost column.
Add a new cost for a single product in Shopify
If you see the Shopify logo in the cost cube, it means that we sync this data automatically. If you add or update a cost per unit in Shopify, it will appear here as the current cost of the product.
Note that we only pull data from your connected Shopify but don't push any data back into Shopify. So, any changes you make to the historical cost in Finaloop won't be synced back to your store.
Update cost per unit values synced from Shopify directly in Shopify, and Finaloop picks up the change automatically.
Add a new cost for a single product in Finaloop
Go to Products.
Select a product SKU and click the Cost per unit tab.
In the Inventory section, click Add cost.
In Add a cost, enter the From (start) date and the new Cost per unit.
Click Save.
Finaloop applies the cost from the start of your books in Finaloop or on the first day of an open year (if your previous years' books in Finaloop are closed), or on the selected date. The new cost shows as Current cost and on the timeline with its From date.
① Add cost, ② Current cost, ③ the Edit pencil.
Edit a historical or existing cost for a single product
Go to Products.
Select a product SKU and click the Cost per unit tab.
To edit an historic cost, hover over the cost and click the Edit (pencil) icon. To remove it, click the Delete (bin) icon.
In Edit a cost, enter the new historic cost and the date the historical cost is relevant.
Click Save.
Editing a cost replaces the previous cost, and the new cost is applied using the applicable date of the previous cost.
Update costs per unit in bulk
To edit an existing cost per unit for multiple products with different costs:
Go to Products.
Click the Actions button in top right and select Bulk costs edit. The Bulk costs editing page opens.
To edit each SKU individually, enter the updated cost in the Average cost column.
Click Save.
① Export costs and Import CSV, ② the Average cost fields.
To edit an existing cost per unit for multiple products with identical costs:
Go to Products.
Click the Actions button in top right and select Bulk costs edit.
Check the products you want to update.
In Set cost for [n] selected products:, enter a new cost.
Click Save.
To import / upload cost per unit for multiple products in a CSV:
You can also bulk upload a .csv file with the data.
Go to Products.
Click the Actions dropdown in top right and select Bulk costs edit.
Click the Import CSV button. A new screen opens.
Follow the on-screen instructions and click Download the CSV template.
Complete the CSV template using your cost per unit from whichever source you use to manage this data, such as a Google Sheet or an inventory management software. Rows are matched by SKU, and the date is when each cost starts. Existing costs dated after that date that aren't in your file are overwritten.
When complete, click Click here to choose a file and attach the CSV. Verify that the column names match the CSV template; Finaloop detects the date format from your file.
After uploading the file, you'll be able to see all the data, both those that have been uploaded correctly and those that are invalid. Fix any invalid rows, then click Save.
If you aren't sure how to calculate your accurate costs per unit, see How to calculate your landed cost per unit (landed cost is the full cost of getting a product to your warehouse, including shipping, duties and fees), or check out InventoryIQ, Finaloop's native inventory management system, to see if it's a good fit for you.
Tip: To save time, you can first export your products from the Products page (either the whole list or just the ones that are missing a cost per unit) and use this to populate the CSV. Just go to Products, click the Actions dropdown, and select Export file. On Bulk costs editing, Export costs exports the latest cost per unit for each product.
Step 3: Bulk updating quantities
Go to Products → Actions → Bulk unit edit.
Choose the tab: COGS, Dead inventory, Product giveaways or Product donations.
Select the Sales channel from the dropdown.
Select the Update method for calculating the adjustment: - Replace: replaces the existing records for the selected product in the chosen month. - Add on top: adds the value to the total of existing records in the system.
Update the quantity of Units fulfilled and Units restocked for each month. We'll report the adjustments in your books on the last day of the month.
You can also click on Actions → Import CSV file and follow the instructions to add the quantities for all of your SKUs in one quick upload.
You can duplicate the product from the right side of the row and add multiple months for each product at once.
Check out this Bulk unit edit walkthrough (interactive demo) to watch it in action!
If you sell through sales channels that don't sync units to Finaloop, add your quantity sold for each product with our bulk update tool, or record them per channel (see "Option 2: Track per channel by inputting a total COGS number").
Option 2: Track per channel by inputting a total COGS number
Entering COGS per channel is handy if you track COGS outside of Finaloop, such as an inventory management system.
To add manual COGS (per channel):
On the COGS page, click Report per channel (top right). This opens the New report pane.
① Type, ② Period, ③ Amount, ④ Sales channel.
Type: Select from COGS, Dead inventory, Product giveaways or Product donations.
Period: Select the period (Day, Month or Range) and then the dates.
Amount: Enter the value.
Sales channel: Select the sales channel.
Memo (optional): Add a note.
Click Save. The costs are spread evenly over the selected period.
7. Sales based COGS and Inventory in your financials
Under the sales based COGS method, your inventory is shown in your balance sheet and your COGS will be shown in your P&L as the products are sold (or, if working with the per channel method, when you input the channel COGS data into Finaloop).
Go to Report center → Balance Sheet to see your inventory broken down by the status per your updates on the Inventory purchases page.
Go to Report center → Profit & Loss to see your COGS under Cost of delivery → Product COGS. You can find them here with many sub categories so you can track in real time which costs are going where. For a tour of the report, see Reading your Profit & Loss.
For sales based COGS, here's where you will see transactions for product giveaways and dead inventory: - Product giveaways: Variable sales & marketing → Product giveaways - Dead inventory: Cost of delivery → Other cost of delivery
8. What's InventoryIQ?
InventoryIQ is Finaloop's inventory management product, another method we've created to track sales-based inventory if you are looking for a better way to manage your costs per unit! If you want to track stock at a SKU level, automate landed cost calculations or record real-time COGS on a first in, first out (FIFO) method, then we've got you covered.
To find out more about InventoryIQ, head over to the article How to choose your COGS tracking method in Finaloop.
If you've decided that InventoryIQ is the route for you, then head over to Inventory IQ: Everything you need to know and check out the video how to use InventoryIQ.
FAQ
Why does a product's margin look impossibly good?
It's usually missing a cost per unit. With no cost, COGS for that product is $0, so the full sale price counts as profit. Turn on the missing-cost toggle on the Products page and add the costs (see "Step 2: Updating product cost per unit").
Why is the missing-cost count much higher than my actual product count?
It's usually one of two things. The same product from Shopify, Amazon and TikTok Shop counts as three products until you merge them (see "Merge multiple products"). And products you no longer sell still count: use Filters → Attributes → Active to see only what you're selling now, and Actions → Hide from product list for the rest. Merge your duplicates before you start entering costs, so you only enter each cost once.
I entered a cost but the product still shows the old number. Why?
Check two things. First, the cost's From date: a cost dated June 1 doesn't apply to units that sold in March, so compare it with the period you're viewing. Second, after a merge only the primary product's cost is used: open the product, expand Product details, and check which product is primary.
Why does Average cost differ from the cost I entered?
Because it's a weighted average across the period. If your cost changed mid-period, the average sits between the old cost and the new one (see "How Finaloop calculates sales-based COGS").
What happens to COGS when a customer returns something?
Nothing, unless the unit is restocked. A refund and a restock are two separate events: refunding money doesn't put a unit back in your inventory, only a restock does. Restocked units reduce net units depleted, which reduces COGS.
Can I change a cost for a past period?
Yes, as long as that period's books aren't closed. Add a cost with an earlier From date, and Finaloop recalculates COGS from that date forward.
Related articles
Need help?
If you have any questions or need assistance, reach out to us at [email protected]. We're here to help make the process as smooth as possible!






