
Cin7 COGS Wrong? Why Margins Spike Before Month-End
See why Cin7 may show zero-dollar COGS or inflated margins before month-end, and how invoice, shipment, inventory, and reporting timing create the issue.
SYSTEMS AND SOFTWAREECOMMERCE
The Zero-Dollar COGS Trap in Cin7: Why Margins Spike Before Month-End
Jaco Roets, Co-founder & CEO


If your Cin7 margins suddenly spike before month-end, it does not always mean profitability improved.
It may mean revenue has appeared before the matching cost entry has been triggered.
This is one of the most confusing reporting issues for finance teams using Cin7 Core with Xero or QuickBooks. COGS may appear missing. Gross profit may look unusually high. Reports may seem inconsistent. The accounting system may show revenue while Cin7 inventory movements are still catching up.
When teams search for why Cin7 COGS is wrong, the visible problem is usually the report output. But the source often sits earlier in the transaction sequence.
In many cases, the issue is not a broken report engine or failed integration. It is a transaction sequencing gap between invoice authorization, shipment authorization, inventory relief, and financial reporting.
TL;DR:
Sales invoice authorization recognizes revenue but does not relieve inventory assets.
Shipment authorization triggers physical inventory relief and matching COGS for standard stocked inventory.
If invoice and shipment workflows fall into different reporting windows, Cin7 may temporarily show synthetic margin spikes.
Manual balancing entries inside Xero or QuickBooks can feed future reconciliation problems if the source workflow has not been diagnosed first.
Other causes can include missing landed costs, dropship purchase invoice timing, negative stock, incomplete cost layers, report filter differences, custom ledger mappings, and premature accounting lock dates.
The Core Cin7 Sequence: Revenue and Inventory Relief Run Separately
Cin7 Core separates the revenue workflow from the inventory-relief workflow.
In the default mapping baseline, the sequence looks like this:
Sales Order Authorized
→ Reserves physical stock
→ No general ledger impact
Sales Invoice Authorized
→ Debit - Accounts Receivable
→ Credit - Sales Revenue
Shipment Authorized
→ Debit - Cost of Goods Sold
→ Credit - Inventory Asset
The sales order reserves stock, but it does not create a general ledger impact.
The sales invoice creates the revenue-side entry:
Debit: Accounts Receivable | Credit: Sales Revenue
The shipment authorization creates the inventory-relief and COGS entry for standard stocked items:
Debit: Cost of Goods Sold | Credit: Inventory Asset
The zero-dollar COGS trap appears when the sales invoice is authorized before the shipment is authorized. Revenue is visible, but the matching cost entry has not appeared yet.
For standard stocked items, shipment authorization is central to COGS timing. Dropshipped items behave differently. Dropship COGS is generated when the Dropship Purchase Invoice is authorized, not through the standard warehouse fulfillment tabs.
That distinction matters for hybrid ecommerce businesses that use both stocked inventory and dropshipping.
Why Margins Spike Before Month-End
Month-end makes this issue more visible because invoice and shipment events can fall into different reporting periods.
Example:
Invoice authorized on March 30
→ Revenue appears in March
Shipment authorized on April 2
→ COGS appears in April
Result:
March margin looks inflated
April margin may look unusually low
In the extreme lag window, the margin calculation can temporarily behave like this:
Gross Profit % = (Sales Revenue - 0 COGS) / Sales Revenue = 100%
That does not mean the business earned 100% margin.
It means the report is showing revenue before the matching cost event has appeared.
This is why the issue should be treated as a transaction sequencing symptom before it is treated as a true profitability change.
Why Reports Appear to Disagree
When this issue appears, finance teams often compare multiple reports and assume one must be wrong.
That is not always the case.
Different Cin7 reports can use different reporting boundaries:
Sales Profit Summary groups data by Invoice Date.
Profit & Loss by Product tracks product margins relative to Shipment Fulfillment Dates.
Inventory and stock movement reports may reflect stock movement timing rather than invoice timing.
During the lag window between invoice authorization and shipment authorization, these reports may appear to disagree because they are looking at different parts of the transaction lifecycle.
That variance is not automatically a calculation error. It can be the result of different filtering boundaries.
This is where the Customer Reality Gap appears. Finance sees revenue without matching COGS and assumes Cin7, Xero, QuickBooks, or the integration is broken. The more accurate first question is:
Which workflow event is each report using?
Common Workflow Patterns That Create the Spike
The zero-dollar COGS trap usually appears when revenue and shipment events are administratively decoupled.
Common patterns include:
Pre-invoicing without shipment: invoice authorization happens before warehouse dispatch.
Full invoice before partial fulfillment: revenue is booked upfront while shipment happens in stages.
Ecommerce payment capture before processing: Shopify or another channel captures payment before warehouse picking and shipment updates.
Fulfillment lag cycles: operational bottlenecks cause shipment authorization to trail billing cycles.
Month-end cutoff pressure: finance closes around invoices while operations is still completing shipment workflows.
In each case, the report is showing a timing gap in the transaction lifecycle, not necessarily a final margin result.
The Manual Journal Trap and the 2% Guardrail
When margins spike before month-end, finance teams often feel pressure to close the books quickly.
That pressure can lead to manual journals inside Xero or QuickBooks to force COGS, inventory, or margin figures to align.
The issue can follow this loop:
Mismatched Triggers → Manual “Fix” Journals in General Ledger → Broken Integration Sync → Irreconcilable Books
Manual journals are not always wrong. There are valid accounting scenarios where journals are required.
The risk is using a manual journal to force alignment before diagnosing the source workflow.
If the real issue is an unshipped invoice, delayed shipment authorization, report filter mismatch, GRNI / GINR timing issue, or blocked sync, a manual journal may hide the symptom while leaving the system behavior unresolved.
Fiskal’s governance threshold adds a control point here.
If open workflows and sync logs have been cleared, any final inventory true-up should be governed carefully. As a Fiskal governance rule, the total value of the true-up entry should not exceed 2% of the total inventory value recorded on the Balance Sheet.
A variance above 2% usually points to upstream data-entry breakdowns, workflow issues, or architectural setting problems that should be audited at the source instead of cleared with a standard balancing journal.
This is a governance threshold, not a universal accounting law.
Edge Cases That Change the Diagnosis
The invoice-to-shipment timing gap is the core article issue, but it is not the only reason COGS may appear wrong.
Several edge cases can change the diagnostic path.
Partial shipments across periods: revenue and matching expenses may fall into separate performance windows.
Price variance and lock-date loop: when stock is received before the supplier invoice, Cin7 may initially record the receipt at the estimated purchase Order rate: Dr Inventory Asset / Cr GRNI
If the supplier invoice later contains a price variance, Cin7 Core may attempt to void historical records and rewrite journals using the true invoice cost. If Xero or QuickBooks is locked too early, that correction can be blocked, turning a timing gap into a fixed ledger discrepancy.
Negative stock layers: selling or dispatching goods before purchase-side cost structures are complete can create unverified or estimated cost entries.
Landed cost allocation errors: direct-expensing freight, duties, or service costs instead of capitalizing them where appropriate can distort product valuation and margin.
Product card average cost misinterpretation: average values on product cards should not be treated as final financial COGS; accounting layers depend on inventory-card history and costing logic.
Dropshipping: dropshipped items trigger COGS through the dropship purchase invoice, not standard warehouse fulfillment tabs.
Custom ledger mapping: custom clearing accounts or split COGS accounts by channel can hide the variance in different general ledger lines.
The default diagnostic model assumes standard account mapping to Inventory Asset, COGS, Revenue, and standard GRNI / GINR accrual accounts.
If the implementation uses custom ledger mappings or split COGS accounts by channel, the same timing issue may appear in different GL lines. Fiskal generally recommends against splitting COGS by channel because it can create additional month-end cleanup friction.
How to Diagnose Before Month-End Close
The goal is not to force the report to balance first.
The goal is to identify where the transaction sequence is incomplete.
Before posting manual journals, review:
Authorized invoices that have not shipped
Check whether revenue has been created for orders that have not reached shipment authorization.Partial fulfillments and open warehouse tasks
Review orders where invoices were authorized in full but fulfillment happened in stages.Report date filters
Compare whether reports are using invoice date, shipment fulfillment date, stock movement date, or accounting period filters.Financial Transactions vs Stock on Hand Difference Report
Navigate to the Financial Reports sub-menu in Cin7 Core and run the Financial Transactions vs Stock on Hand Difference Report. This report is especially useful because it only populates lines when an operational variance or timing mismatch exists. If the system is fully synchronized, the report may return blank, which is not automatically a problem.Xero/QBO sync status
Check for pending integration sync failures before locking the period.Manual entries inside asset control lines
Review manual entries that may have been posted directly into inventory, COGS, or asset control accounts.GRNI / GINR timing
Confirm whether stock receipts, supplier invoices, and accrual accounts have been processed correctly.Custom account mapping
Check whether split COGS accounts, custom clearing accounts, or channel-specific mappings are masking the variance.
If the Inventory Asset Ledger does not align with the Inventory Movement Summary, investigate unshipped invoices, timing gaps, workflow-state mismatches, GRNI / GINR timing, and custom mappings before forcing balances manually.
What Healthy Cin7 COGS Timing Looks Like
Healthy Cin7 COGS timing is not about making every report look identical at every moment.
It is about understanding what each report is showing and whether the underlying workflow has completed.
A healthier environment usually has:
tighter 1:1 discipline between invoice dates and physical dispatches
clear rules around when invoices are authorized before shipment
pre-close synchronization routines before accounting lock dates
documented report interpretation rules for invoice date, shipment date, and stock movement date
manual adjustments only after source-system diagnosis
residual true-ups governed by the 2% threshold
documented custom ledger mappings where they exist
A temporary variance may be explainable.
An unexplained recurring variance is different.
That is when the issue shifts from timing interpretation to system health.
Restoring Confidence in Cin7 COGS and Margin Reporting
If Cin7 margins spike before month-end or COGS appears to disappear, the issue may not be profitability itself.
It may be incomplete transaction sequencing between invoice authorization, shipment authorization, inventory relief, report filters, and financial reporting.
A structured Cin7 Inventory Audit Review helps identify where those workflows are drifting apart before manual fixes create larger reconciliation problems.
For teams with recurring reporting instability, an Inventory & Finance Alignment Review can also help evaluate whether inventory movements, accounting syncs, account mappings, and month-end controls are still operating as one connected system.
The goal is not to patch the symptom.
The goal is to restore confidence in the sequence behind the numbers.
Find the Break in the Transaction Sequence
Zero-dollar COGS in Cin7 is not always a missing-cost problem.
It is often an uncompleted transaction lifecycle signal.
Revenue and COGS can be triggered by different workflow events. If invoice authorization, shipment authorization, inventory relief, report filters, and accounting sync timing fall out of sequence, month-end margin can look artificially high.
The right question is not “how do we force the report to balance?”
It is:
Where did the transaction sequence break?
That is the difference between correcting a temporary reporting symptom and restoring trust in the system behind the numbers.
Need Clarity on Your Cin7 Inventory and Reporting?
Learn how Fiskal supports Cin7 environments where inventory movement, COGS timing, reporting logic, and accounting workflows have drifted out of alignment.
📞 Or call us directly: (954) 415-7895










