Cin7 Sales and COGS Mismatch: What Your P&L Is Showing You | Fiskal

The Cin7 sales and COGS mismatch is not automatically a broken integration. It can reflect workflow timing, report settings, cost changes, or mapping issues. Here is how to diagnose the gap before you journal it.

SYSTEMS AND SOFTWAREECOMMERCE

Lee-Roy Erasmus

6/3/202611 min read

The Hidden Gap Between Sales and COGS in Cin7

Lee-Roy Erasmus, Systems Specialist @ Fiskal

What Your P&L Is Actually Showing You

Most months, your gross profit lands somewhere reasonable. Then one month it does not.

It spikes. Or it sinks. Sales moved the way you expected, orders shipped, the warehouse did its job, but the cost line did something else entirely. The first instinct is to blame the integration. The second is to call the accountant and tell them to journal it at month end. By the third or fourth time it happens, finance has stopped trusting the P&L for anything that matters: pricing, channel decisions, commissions, the conversation with the board.

Here is what is worth understanding before any of that happens. The visible gap is not automatically an integration failure. In standard inventory workflows, invoice and shipment timing can create a visible Sales vs COGS gap, but the actual cause depends on workflow type, order type, report filters, cost change timing, account mapping hierarchy, and configuration choices inside Cin7.

This article walks through how that gap forms, what shapes its size, and the diagnostic read you should run before anyone touches the accounting software.

Why Do Sales and COGS Not Always Match in Cin7 Core?

In standard inventory workflows, Sales is typically tied to Invoice Authorization, while COGS is tied to Ship tab Authorization. If those events land in different reporting periods, finance may see revenue and cost appear out of sync.

The exact cause depends on the order type, report filter, cost change timing, account mapping hierarchy, and system configuration. Dropship, service, non-inventory, and assembly workflows each follow different logic, which this article covers below.

TL;DR

In standard inventory workflows, Cin7 Core can split Sales and COGS recognition across separate workflow events. Sales is typically recognized when the Invoice tab is authorized. COGS is tied to Ship tab Authorization.

The visible mismatch depends on order type, report filter, and configuration. Dropshipped products, service items, non-inventory items, and assembly workflows follow different logic. Cost changes after shipment are handled through separate cost change transactions, not rewrites of historical COGS records. Mapping issues usually come from missing, invalid, deleted, deactivated, or incorrectly mapped accounts across the hierarchy.

Sale Process Customisation is a configuration choice that should match the operating model. Manual journals should not be the first response, because routine use can break alignment between the accounting ledger and the Cin7 sub-ledger.

What You Are Actually Seeing on the P&L

Let us name the symptom the way finance leads name it.

Gross profit reads erratically month over month, with no operational story that fits the swing. Sales volume looks normal. Returns look normal. The discount and channel fee picture looks normal. The cost line does not.

At a transaction level, cost stops moving in step with sales. You can see specific orders where revenue posted in one period and the matching cost arrived in another. You can also see orders where revenue posted and cost did not appear at all, sitting on the P&L as if the business shipped at full margin.

And then there are the clearing accounts. Inventory Control, the unpaid PO clearing line, sometimes a sync error queue if the integration exposes one. They hold balances finance cannot fully reconcile to specific orders. In high-volume environments, these unbonded clearing balances can become material within a single quarter.

Finance teams tend to land on one of three explanations: the integration is broken, the system is double counting, or the accountant will fix it at month end. All three feel reasonable from the outside. None of them describe what is actually happening inside Cin7.

How Sales and COGS Recognition Works in Standard Inventory Workflows

In standard inventory sales workflows, Cin7 Core can split Sales and COGS recognition across two separate workflow events.

The Sales journal fires when the Invoice tab is authorized: debit Accounts Receivable, credit Sales Revenue. Revenue is now visible on the P&L.

The COGS journal fires when the Ship tab is authorized: debit COGS, credit Inventory Control. Cost is now visible on the P&L. The inventory asset drops.

In a clean workflow, both authorizations happen the same day. Nobody notices the two journals are separate events, because they land together. The problem surfaces when the Invoice tab authorizes days or weeks before the Ship tab. An order invoiced at month end and shipped at the start of the next produces revenue in one period and cost in another, for the same transaction. That is not an integration failure. It is the system reporting workflow reality.

Workflow Exceptions

This logic changes for several order types, and getting them confused is where diagnostics go wrong.

Dropshipped orders

COGS is generated when the purchase invoice is authorized, not when the Ship tab is touched. The purchase invoice date drives the COGS date. If the dropship item's cost field is blank, Cin7 may fall back to the latest purchase cost or default asset logic, which can distort variance when the purchase invoice is delayed.

Service items

Service items carry no physical asset value and do not generate a COGS journal through the standard inventory workflow.

Non-inventory items

Non-inventory items also bypass standard inventory tracking, but they should be mapped to the correct expense accounts because they do not flow through the inventory sub-ledger.

Assembly and standard manufacturing workflows

These can also follow different cost movement rules, where stock may move through Work in Progress before final cost of sales is recognized downstream.

If your operation includes any of these order types, the standard Invoice Authorization and Ship Authorization logic does not fully describe what is happening on those lines.

Check the Report Filter Before Calling It a Broken Integration

The visible Sales vs COGS gap also depends on how the report is filtered, and this is worth checking before assuming the workflow is at fault.

If the report uses "All COGS," Cin7 can display related COGS alongside the invoice date. If the report uses "COGS within date range," it isolates COGS by transaction date, which can expose timing differences between invoice and shipment events. This changes report display and visibility. It does not change the underlying transaction data.

The same workflow can look materially different depending on the filter setting. Before escalating to the integration team or posting a journal entry, confirm which filter is active and whether it matches what the business actually needs to measure.

The Four Patterns Behind the Cin7 Sales and COGS Mismatch

Different workflow conditions, one underlying mechanic: anything that delays, redirects, or interrupts one recognition event without the other may land on the P&L as a gap. These patterns are not mutually exclusive. They tend to stack.

Pattern 1: The Authorization Lag (Including Cutoff and Backdating)

This is the most common version. The Invoice tab authorizes at end of month. The Ship tab authorizes at the start of the next. Revenue lands in Month 1. Cost lands in Month 2. The P&L says Month 1 was high margin and Month 2 was low margin, and neither is accurate.

Three workflow conditions tend to widen this lag in practice.

3PL fulfillment

The invoice may authorize the moment the e-commerce connector syncs the order. The Ship tab authorization sits days behind in the 3PL log. The 3PL is not doing anything wrong. The two journal events are separated by physical logistics.

E-commerce plugins

Shopify order editing apps and similar tools can modify orders in non-transactional ways. Cin7 is strictly transactional. Late edits that arrive after the sync window closes do not always backfill cleanly. Sales and COGS for that order can land on different sides of the cutoff.

Multi-channel rhythm

Each Sales Channel has its own authorization tempo. A wholesale order may invoice on confirmation and ship a week later. A marketplace order may not authorize the Invoice tab until settlement. The same Cin7 instance can produce clean results in one channel and period stretches in another.

Backdated invoices, forward-dated dispatches, and dispatches confirmed days after the sale by a 3PL compound the same problem. Once the sync window for a period has closed, backfill behavior is no longer clean. Reconciliation gets harder as the months go by.

Pattern 2: The Cost Change Timing Pattern

When supplier invoice costs, landed costs, or stock layer costs change after goods have already shipped, Cin7 does not rewrite the original historical COGS transaction. Instead, it creates a separate cost change transaction dated to the effective cost change date, so it flows into the current open period.

This can affect margin interpretation because the cost adjustment may appear in a different reporting period from the original sale. The issue is not a failed historical backfill. It is a cost change timing difference that needs to be understood during month-end review. One caveat worth noting: if historical periods are hard-locked inside Xero or QuickBooks Online, late-arriving cost revisions can still generate sync queue errors or lock-date conflicts unless the timing gap is handled deliberately or the relevant period is temporarily reopened to clear the sync block.

If you see an unexpected cost adjustment in the current period that appears unrelated to current period sales, check whether it corresponds to a supplier invoice or landed cost update from a prior period before escalating.

Pattern 3: The Account Mapping Issue

Most Cin7 implementations get the default Chart of Accounts mapping right at setup. The risk does not sit in the default mapping. It sits in the account mapping hierarchy when new Sales Channels, product variants, or account structures are introduced.

The operational mapping cascade generally runs from Product Item Mapping, to Customer or Supplier Specific Mapping, and then to Global Reference Book Default Account Mapping. Blank optional override fields should not override populated defaults. Mapping problems usually occur when the required account is missing across all mapping levels, or when an invalid, deleted, deactivated, or incorrectly mapped account exists somewhere in the hierarchy.

Unmapped or incorrectly mapped COGS does not produce a loud error on the P&L. It may land in a synchronization error queue finance does not regularly check. It may split into operational asset lines that look like data quality noise. It may aggregate into a default expense account that buries COGS visibility without surfacing a clear error message.

Gross profit can read clean while COGS recognition has silently misrouted for an entire channel. A deliberate mapping review is warranted for any channel or product family added in the last 12 months, and whenever account codes are renamed, deactivated, or restructured.

Pattern 4: The Manual Journal Problem

When the gap shows up at month end, the most common response is a manual journal directly in QuickBooks Online or Xero. Finance moves cost from one period to another. The variance closes. The board pack ships.

The cost of that journal is invisible until next month. The journal touched the accounting software. It did not touch Cin7. The sub-ledger inside Cin7 still shows the original state. The accounting software now shows the adjusted state. The two sides of the integration link have diverged.

Next month, the gap shows up again, probably larger. The next journal layers on top. After three or four months, the manual journal stack has its own internal logic nobody can fully explain.

This does not mean every manual journal is automatically wrong. Controlled final adjustment journals may be appropriate under defined governance rules. But routine diagnostic patching through journals can break the alignment between the accounting ledger and the Cin7 sub-ledger, and the next month is usually worse, not better.

Three Explanations Finance Leads Reach For (and Why None Quite Fit)

"Our inventory software is double counting entries."

There is no duplication. There are two separate journals fired by two separate events. When they land in the same period, they look like one combined entry. When they do not, they look like a duplicate or a missing entry. The system has not double counted anything. It has reported workflow reality.

"The integration is broken because our margins are completely wrong."

The integration may be doing exactly what it is configured to do, with no errors anywhere in the sync log. The workflow conditions, report settings, and configuration choices surrounding the integration are what can produce the visible gap. Replacing or rebuilding the integration does not address recognition timing mechanics, mapping hierarchy issues, or report filter settings.

"The accountant will fix it at month end with a journal."

The journal closes the variance the P&L can see. It does not touch the variance the sub-ledger has. Next month the gap shows up again, and the next journal layers on top, and the underlying records inside Cin7 stay uncorrected. Manual journals as a routine fix can make month end ship on time while making the underlying problem progressively harder to unwind.

The pattern under all three is the same: finance is reading the symptom and naming it as the cause. The cause sits upstream of the accounting software.

How to Diagnose the Gap Before Journaling It

This sequence should run before any manual journal is posted and before any integration rebuild is scoped.

Confirm the order type. Standard inventory, dropship, service, non-inventory, or assembly? The recognition logic differs significantly across these.

Step 1:

Step 2:

Check whether Invoice Authorization and Ship Authorization landed in different periods for the affected orders. Pull the Financial Transactions vs Stock on Hand Difference report inside Cin7 and see what populates.

Step 3:

Review the report filter. Is the report using "All COGS" or "COGS within date range"? The same workflow can appear differently under each setting, and the filter does not affect underlying transaction data.

Step 4:

Check whether supplier invoice costs, landed costs, or stock layer cost changes created separate cost change transactions in the current period that correspond to prior period sales.

Step 6:

Review the account mapping hierarchy for missing, invalid, deleted, deactivated, or incorrectly mapped accounts. Run from Product Item Mapping through to Global Reference Book Default Account Mapping. Pay particular attention to channels or product families added in the last 12 months.

Step 5:

Assess whether Sale Process Customisation is configured intentionally. This setting can simplify the P&L view by aligning transaction dates, but it can also affect Goods Received Not Invoiced and Goods Invoiced Not Received balances, because forcing date alignment may simplify the P&L view while making clearing account review and multi-channel auditing harder. It is useful when intentionally configured. It requires care when used as a shortcut.

Step 7:

Only after working through the above, decide whether the issue sits in timing, reporting setup, mapping, configuration, or workflow governance. Each has a different resolution path.

What a Healthy State Looks Like

The Financial Transactions vs Stock on Hand Difference report inside Cin7 shows a net variance of zero. The only lines populated represent legitimate open purchase balances where stock has been ordered and physical arrival is still pending.

Month over month gross profit margins align with the underlying operational story. The percentage moves when operations move. It does not swing erratically while everything operationally looks steady.

Reference book and Sales Channel mappings get reviewed on a defined cadence, especially when new products, channels, or account codes are added. Override fields are not assumed to inherit the default. They are checked when source data changes.

What This Adds Up To

The visible gap between Sales and COGS on the Cin7 P&L may reflect workflow timing, report configuration, cost change behavior, account mapping issues, or configuration choices. In unresolved environments, gross profit readings can drift materially above or below actual operational reality. On high-volume channels, unbonded clearing balances can become material within a single quarter.

The diagnostic direction is upstream of the accounting software. Run the Financial Transactions vs Stock on Hand Difference report. Look at mapping across the full hierarchy. Understand how cost change transactions are landing and in which periods. Check the report filter settings. These reads will not close the gap on the first look, but they will move the conversation to where it needs to be.

Diagnose the Sales and COGS Gap Before Journaling It

If your Cin7 P&L is showing a Sales and COGS gap you cannot explain, the first move is diagnosing the workflow, report settings, cost change transactions, and account mapping hierarchy before posting manual journals.

A Cin7 Finance Ops Review looks at the full picture: order type mix, report filter configuration, account mapping hierarchy, cost change transaction behavior, and whether any configuration choices are producing results that do not match the operating model.

Cin7 Sales and COGS recognition are not always the same event. The gap on the P&L is the system surfacing workflow and configuration reality. Diagnose the workflow, and the P&L stops being mysterious.

Need Support With Your Cin7 and Xero or QuickBooks Integration?

Learn how Fiskal supports post-go-live Cin7 and Xero or QuickBooks environments.

Where close stability, reconciliation clarity, and integration governance require structural alignment.

📞 Or call us directly: (954) 415-7895

Share on your socials.

Fiskal Finance Logo
Fiskal Finance Logo

Contact Details:
+1 (954) 415-7895 or +1 (267) 717-7923
info@fiskalfinance.com
100 SE 3rd Ave, Suite 1000, 10th floor,

Fort Lauderdale, FL 33394