Per-Fulfillment Revenue Recognition For Shopify | Build with Bookkeep

On this page

Bookkeep now offers Per-Fulfillment Revenue Recognition for Shopify, giving merchants greater flexibility in how and when revenue is recognized.

This new feature allows revenue to be recognized as individual fulfillments are completed, rather than waiting for the entire order to reach a Fulfilled status.

How It Works

The Ecommerce Journal Entry Mapping

For entities that recognize revenue upon fulfillment, the Gross Sales, Discounts, Returns, Gift Cards Issued, and Shipping Income lines in this journal entry should be mapped to a deferred revenue account. This is because the Ecommerce journal entry works together with the Fulfillment Revenue Recognition entry (described below) to ensure revenue is recognized correctly.

Additionally, the same deferred revenue account used in the Fulfillment Revenue Recognition entry should also be used in the Ecommerce entry to maintain consistency.

Previous (Order-Based) Method

Under the traditional order-based model:

This approach works well for businesses that only want revenue recognized once the full order lifecycle is complete.

New: Per-Fulfillment Revenue Recognition

With this new feature enabled:

Example:

If an order contains 5 items and:

Revenue will be recognized in two stages, aligned with the actual fulfillment timing.

Handling Cancellations and Returns

Under this new flow:

The reversal occurs independently of the overall order’s fulfillment status.

This ensures revenue and reversals are accurately aligned with operational activity — not just order status.

Non-Physical Items

Items not tied to a specific fulfillment (such as digital goods or shipping income) will continue to be recognized when the order reaches Fulfilled status.

This maintains appropriate handling for products that do not follow a physical fulfillment workflow.

Important Note on Historical Data

Bookkeep does not advise or allow running historical data for the fulfillment-based revenue recognition journal entry.

This limitation is due to constraints in Shopify’s data model that make historical fulfillment recognition unreliable:

Because fulfillment status can change retroactively — and Shopify does not provide a complete historical audit trail of those changes — attempting to backfill fulfillment-based revenue recognition can result in inaccurate or misleading accounting data.

For this reason, fulfillment-based revenue recognition in Bookkeep is designed to run prospectively only, beginning from the point it is enabled, ensuring accuracy and consistency going forward.

How to Enable Per-Fulfillment Recognition

This feature is managed from the My Apps tab on the Connections page.

  1. Locate the Shopify fulfillment revenue recognition journal entry.
  2. Click Map on the right. This will open a modal window.
  3. At the top of the modal, you’ll see Recognition Method with two options:
    • Order Level – Recognizes all revenue once the order reaches Fulfilled status.
    • Fulfillment Level – Recognizes revenue as each fulfillment is created. Any remaining items not tied to a fulfillment are recognized when the order reaches Fulfilled status.

Select the method that best aligns with your accounting preferences and save your changes.

Why Use Per-Fulfillment Recognition?

Per-fulfillment recognition may be beneficial if:

Flexible Revenue Recognition for Growing Shopify Businesses

Bookkeep’s new per-fulfillment recognition option gives Shopify merchants the flexibility to:

By choosing the recognition method that best fits your business, you can ensure your accounting reflects how your operations truly function.