Month-end close

Deferred revenue for unfulfilled Shopify orders: a complete accounting workflow

Learn when paid but unfulfilled Shopify orders may need deferred revenue, how to handle partial shipments, refunds, shipping and COGS, and how to close the balance in QuickBooks.

Shopify orders cross a month-end cutoff as unfulfilled value is held in a contract liability and released when the goods ship.

The short answer: who actually needs this?

A merchant needs a deferred-revenue workflow when customers have paid for physical goods but the merchant has not yet completed the performance required by its accounting policy at the reporting date. The practical trigger is the value of those open obligations at month-end, not whether the store turns over $100,000 or $1 million a year.

Consider a made-to-order furniture store. It takes full payment for a $3,000 set of three chairs plus $150 shipping on 25 July, builds the order in August, ships one chair on 20 August, ships a second in September, and refunds the third. If the store books all $3,150 as July revenue, July reports profit before it has transferred the goods under its shipment-based policy. The balance is most visible when production or delivery routinely crosses month-end.

Pre-orders, custom products, backorders, crowdfunding launches, seasonal drops, furniture, wedding products, high-value equipment, and subscription boxes assembled after billing are common examples. A high-volume store that ships every order the same day may have an immaterial cutoff balance. A much smaller custom-goods merchant can have a large one.

The accounting rule behind the workflow

IFRS 15 and US GAAP Topic 606 use the same core idea: recognize revenue to depict the transfer of promised goods or services to the customer. Payment, payout and fulfillment are different events. Payment shows that consideration was collected. A Shopify payout shows that the processor moved net cash. Neither event, by itself, proves that the merchant has satisfied its performance obligation.

For many ordinary ecommerce sales, the approved point-in-time policy may use shipment, carrier pickup or delivery as the best evidence that control transferred. The correct point depends on the contract, shipping terms, customer acceptance provisions, customary practice and applicable accounting framework. That is why a system must make the recognition point a controlled policy choice rather than silently equating Shopify’s current status with an accounting conclusion.

When payment occurs before transfer, the unearned amount is normally presented as a contract liability, often called deferred or unearned revenue in the chart of accounts. When the relevant goods transfer, the liability is released and revenue is recognized. Taxes collected for a tax authority, gift-card liabilities, tips, processor fees and chargebacks do not automatically follow the same treatment and should not be swept into the deferral.

Separate the operational events before building the journal
EventWhat it provesWhat it does not prove
Customer payment capturedThe customer paid or became financially committedThat the promised product transferred
Shopify payout depositedNet processor cash reached the merchantThe period in which gross revenue was earned
Shopify fulfillment eventThe merchant or fulfillment app recorded an operational milestoneThe accounting conclusion unless it matches the approved policy and reliable evidence
Carrier pickup or deliveryA stronger external milestone for some policiesThat every contract uses the same transfer point

The full journal flow

The clean implementation leaves the normal payout entry intact so bank reconciliation still works. It then posts a separate month-end adjustment based on the closing population of paid obligations that remain unperformed under the approved policy.

Assume the July payout summary already credited product revenue for $3,000 and shipping income for $150. At 31 July, all three chairs are unfulfilled. The month-end adjustment removes $3,150 from income and credits the deferred-revenue liability. If the regular sales process also recognized $1,200 of COGS too early, the adjustment restores that cost to inventory.

31 July adjustment for the fully unfulfilled order
AccountDebitCreditPurpose
Product sales$3,000Remove unearned product revenue
Shipping income$150Remove the related unearned shipping amount
Deferred revenue$3,150Record the remaining obligation
Inventory asset$1,200Restore the cost of unshipped chairs
Cost of goods sold$1,200Reverse premature COGS

This is a balance-forward method: QuickBooks holds the liability, and each later month posts the movement needed to reach the new closing balance. Do not also reverse the whole entry automatically on the first day of the next month. Doing both a carry-forward adjustment and a full reversal is a common way to recognize the same order twice.

Partial fulfillment must work at line and quantity level

In August, one of the three chairs ships under the merchant’s approved shipment policy. One third of the product revenue is now earned. If shipping is allocated proportionally across the physical goods, one third of the $150 charge is also released. The closing liability falls from $3,150 to $2,100, and $400 of cost moves from inventory to COGS.

The August movement is therefore a $1,050 debit to deferred revenue, offset by $1,000 of product revenue and $50 of shipping revenue, plus a $400 debit to COGS and credit to inventory. The journal should reference the Shopify order and the fulfilled line quantity that produced the release.

This is an important difference between a full implementation and a shortcut. A system that treats the entire order as unfulfilled until every item ships can be conservative, but it does not represent line-level transfer when the approved accounting policy recognizes each shipped unit separately. The merchant and accountant should choose the scope deliberately and apply it consistently.

Refunds, cancellations and shipping are where toy solutions fail

Suppose the second chair ships in September and the third chair is cancelled and refunded before shipment. The remaining liability should clear through two different economic events: recognition for the chair that transferred and reduction of the contract consideration for the chair that will no longer be supplied. If the customer also receives the full $150 shipping refund, the shipping portion clears with the successful refund.

Shopify can refund product lines and shipping separately, and a partial refund can be issued without a return. The refund’s financial success, processed date, product allocation, quantity and shipping amount all matter. A pending or failed refund does not provide the same evidence as a completed refund. A cancelled order with no completed refund may still represent an obligation to the customer and needs an accountant’s documented treatment instead of an automatic release to revenue.

Shipping creates a special allocation problem. Shopify records a shipping refund at order level, so a system should not pretend it knows which individual line owns that refund. Use a documented policy such as proportional allocation, order-complete recognition, or direct assignment when reliable evidence exists. If the available data cannot support the policy, raise an exception rather than guessing.

  • Block a refund that exceeds the remaining deferred amount on a line; the excess needs separate classification.
  • Keep taxes outside the deferred-revenue calculation unless the accountant’s jurisdiction-specific policy explicitly requires another treatment.
  • Exclude digital products and other lines that do not require fulfillment unless the contract has a separate unperformed obligation.
  • Treat gift-card sales as their own liability workflow, not as unfulfilled physical-product revenue.
  • Preserve cancelled-fulfillment timestamps so a later retry does not rewrite a closed period.

COGS must follow the same cutoff

Deferring revenue while leaving all product cost in COGS understates gross margin in the first month and overstates it when the goods finally transfer. For merchants maintaining inventory under accrual accounting, the close should reverse cost associated with unfulfilled physical quantities back to inventory, then release it to COGS with the related revenue.

The cost needs effective-dated evidence. A current product cost copied backward can distort a historical close after supplier prices change. The workpaper should identify the SKU, quantity, unit cost, source and date used for each line. Missing cost evidence should block the COGS portion rather than silently use zero or a current guess.

QuickBooks’ inventory subsystem can create its own inventory and COGS postings. Before enabling a separate deferred-COGS adjustment, confirm how the payout summary and inventory workflow already record cost. Otherwise the merchant can double-post inventory. The journal design must fit the existing ledger, not merely balance in isolation.

Starting midstream requires an order-level opening balance

A merchant enabling the feature on 1 August may already have paid orders from June and July that remain unfulfilled. Those orders need an opening liability even though the system did not create their original deferral. A single unexplained lump sum is not enough for automation because later fulfillment must release specific orders without releasing revenue that was never included.

Build an opening workpaper from a verified start-date snapshot. Include Shopify order ID and name, currency, physical line ID, SKU, remaining quantity, allocated product sales, discounts, refunds, shipping, and inventory cost where applicable. Tie the workpaper total to the QuickBooks opening liability and inventory adjustment, attach it to the configuration, and lock the selected start period after posting begins.

A2X’s published setup follows the same control principle: establish the opening balance from an unfulfilled-orders report and stop the old manual process so the new movements draw that balance down. The lesson is broader than a specific product—cutover must reconcile the population and the ledger before automation starts.

  • Approve the recognition point and recognition scope with the accountant.
  • Choose the first month and capture an as-of snapshot at its opening boundary.
  • Reconcile opening order allocations to the deferred-revenue liability by currency.
  • Reconcile opening deferred COGS to inventory if that control is enabled.
  • Stop or reverse any overlapping manual workflow before the first automated period.

What the accountant should be able to review each month

The output should explain a balance, not merely produce a balanced journal. For every period, the accountant needs the opening balance, new deferrals, releases, refunds, closing balance and the exact order population supporting each movement. The same evidence fingerprint should be retained with the proposal and posted entry so a source change after approval is detectable.

Minimum close evidence for a production-grade workflow
ControlRequired evidenceFailure response
CompletenessAll relevant orders, fulfillments, refunds and accounting components fetched without pagination gapsBlock calculation or approval
CutoffDated events normalized to the merchant’s accounting timezoneHold ambiguous events for review
ValuationLine allocations, currency, discounts, shipping, refunds and effective-dated costsRaise an order-level exception
Ledger tie-outOpening plus movement equals closing by category and currencyDo not post an unbalanced or unexplained proposal
AuthorizationPreparer, reviewer, approval time, proposal hash and QuickBooks responseReject stale or duplicate posting attempts

How Vatteo handles the workflow

Vatteo keeps deferred revenue separate from payout reconciliation. The normal Shopify payout summary can still match the QuickBooks bank deposit, while the month-end module calculates the contract-liability movement from historical order, fulfillment and refund evidence.

The accountant selects a shipment, carrier-pickup or delivery recognition point and a line-item or order-complete scope. Vatteo calculates by currency, preserves line quantities and source references, supports order-level opening allocations, and can pair the revenue adjustment with inventory and COGS when cost evidence is configured.

Blocking exceptions are intentional. Missing pages, unknown Shopify event types, undated cancellation evidence, missing accounting sources, unmapped QuickBooks accounts, excess refunds, stale carrier events and missing costs should stop approval. A close system earns trust by refusing to invent an answer when the evidence is incomplete.

A practical month-end procedure

  1. Finish importing Shopify orders, fulfillment updates, refunds and payout accounting through the close cutoff.
  2. Confirm the policy, accounting timezone, currency, start month, materiality threshold and QuickBooks mappings have not changed without approval.
  3. Calculate the closing deferred-revenue and deferred-COGS populations from dated evidence, not Shopify’s current unfulfilled view alone.
  4. Review blocking exceptions first, then inspect aged unfulfilled orders and unusual month-over-month movements.
  5. Tie opening balance plus current movement to closing balance for each currency and category.
  6. Review the proposed journal, its order references and its impact on revenue, liability, inventory and COGS.
  7. Approve and post once. Retain the proposal hash, source evidence, reviewer record and QuickBooks posting response.
  8. Lock the period and process later changes in the next open month through a controlled adjustment.

If the closing population is consistently immaterial, document that conclusion and reconsider the cadence with the accountant. If it is large or volatile, the control belongs in every close. The goal is not complexity for its own sake; it is revenue and gross margin that land in the period supported by the merchant’s actual obligations.

Common questions

Shopify deferred revenue FAQ

Does every unfulfilled Shopify order create deferred revenue?

No. The customer must generally have paid or become financially committed, the merchant must still owe a promised good or service under its accounting policy, and the amount must be relevant to the reporting framework and materiality policy. Unpaid, digital, cancelled and tax-only amounts can require different treatment.

Should revenue be recognized at shipment or delivery?

There is no universal Shopify answer. The accountant should determine when control transfers from the contract, shipping terms, acceptance provisions and applicable framework. Shipment, carrier pickup or delivery may be used when it is reliable evidence of that approved point.

Do I defer Shopify sales tax?

Amounts collected on behalf of tax authorities are generally not revenue, and their timing depends on the jurisdiction. Keep tax outside a generic revenue deferral unless the merchant’s qualified tax adviser documents the required treatment.

What happens when only part of an order ships?

Under a line-item policy, release the revenue and related COGS allocated to the quantity that met the recognition point and keep the rest deferred. Under an approved order-complete policy, the entire order can remain deferred until all required items are complete. Apply the selected scope consistently.

Does the deferred-revenue journal replace payout reconciliation?

No. Payout reconciliation explains how gross Shopify activity, refunds, fees and other adjustments became the net bank deposit. Deferred revenue is a separate cutoff adjustment that moves unearned amounts between income and a contract liability.

When is a manual spreadsheet enough?

A spreadsheet can be proportionate when the population is small, simple and independently reviewed. Automation becomes valuable when orders cross several months, partial shipments and refunds are common, multiple currencies exist, or the accountant needs repeatable order-level evidence across many clients.

Sources

Platform behaviour changes. These first-party references were checked on 20 August 2026.

  1. IFRS Foundation: IFRS 15 Revenue from Contracts with Customers
  2. FASB: Revenue Recognition (Topic 606)
  3. Shopify: Understanding order and fulfillment statuses
  4. Shopify: Refunding orders and shipping
  5. QuickBooks: When revenue is considered earned
  6. QuickBooks: Inventory assets and cost of goods sold tracking
  7. A2X: Setting up Shopify Deferred Revenue
  8. A2X: Reconciling Shopify Deferred Revenue