Skip to main content

Tracking and Managing Shopify Orders, Refunds, and Cancellations

How Shopify orders, refunds, cancellations, and fulfillments flow into Finaloop, and how to manage your unpaid or open orders

Written by Emily Burrows

About

Finaloop’s direct integration with Shopify ensures your orders, refunds, cancellations, and receivables flow automatically into your books. We sync data directly from Shopify so your financials are always accurate and up to date.

This article explains how Shopify orders flow into Finaloop, how refunds and returns are recorded, what happens with order cancellations, and how to manage your unpaid/ open orders.


1. Shopify sales orders in Finaloop

The way orders flow from Shopify depends on whether you use cash basis or accrual basis accounting.

Cash basis

Using cash basis, sales are only recognized when a payment is collected. Orders created but not yet paid don't appear in your books (but do appear in your Branded Store Orders screen).

Flow:

1. Order created in Shopify

You can see the order in your Branded Store Orders screen but no impact in your P&L or Balance Sheet.

💡Note: On cash basis, unpaid orders don’t create Accounts Receivable in your books.

2. Payment received from customer

Order payments can be received through a payment processor or through an 'offline' channel, like cash, ACH, or check.

  • If paid through a payment processor → Sales, discounts, shipping income, tips, and taxes hit your P&L on the payment date. We’ll automatically match the payment to the order.

  • If paid offline or through manual payments (ACH, check, cash), or marked as unpaid in Shopify → The order will show in your Branded Store Orders screen as Unpaid until you link the payment to the order (see section on Order Actions to learn how). Alternatively, categorize the deposit in your bank feed as Cash payment received for store orders. This ensures your numbers are accurate from an accounting perspective, but will be harder for you to track your real unpaid orders since the specific order won’t be marked as Paid in your Branded Store Orders screen.

3. Order fulfilled

COGS are recorded once the order is shown as fulfilled.

Note: On cash basis, sales are recorded based on the date the

payment is received, while COGS is recorded based on the fulfillment date.

For most sales channels, including Amazon and TikTok Shop, Finaloop syncs fulfillment data automatically. Shopify works differently. Many brands do not consistently update fulfillment statuses inside Shopify, and the data can be missing, delayed, or incorrect. Because of this, accurate fulfillment information is not always available. Instead, by default Finaloop treats the order as fulfilled on the date the order is placed. This means timing difference between sales and COGS may occur. For example:

  • Order placed date: Jan 1

  • Order fulfilled: Jan 5

  • Payment received: Jan 7

Sales will be recorded Jan 7 and COGS on Jan 1, which is the effective fulfillment date.

If your Shopify fulfillment data is consistently updated and you prefer to use the fulfillment dates directly from Shopify, reach out to Support and we'll update your settings.


Accrual basis

On accrual basis, sales are recognized based on your selected fulfillment tracking method in Finaloop, even if payment hasn’t been received yet (see section below on Fulfillment Tracking Options). Unpaid Shopify orders flow into Accounts Receivable (A/R) until a payment is linked.

Flow:

1. Order created in Shopify

Deferred revenue is created in your Balance Sheet until the order is fulfilled. Deferred revenue is an accounting liability created when you receive a payment from a customer for services or products that you haven't yet provided.

An open balance is also created in your Accounts receivable (A/R) - Shopify account.

2. Payment received from customer

  • If paid through a payment processor → We automatically mark the order as Paid (or Partially paid) and match the payment to the order. This reduces your Accounts receivable (A/R) - Shopify balance.

💡A technical note: When the order is marked as Paid, you may see a temporary increase in a Balance Sheet account called Reconciliation-in-process (RIP). This account acts as a temporary holding spot for sales and refunds until the matching payment is found.

In other words, RIP manages the timing difference between when a sale/refund is recorded and when the actual payment hits. It typically zeros itself out automatically as payments are reconciled.

Here’s how it flows:

  • When an order is marked as paid in Shopify, the RIP account increases.

  • As soon as the actual payment is received, the RIP account decreases, zeroing itself out over time.

  • At the same time, the Undeposited Funds account for that payment processor increases, until the money is finally paid out into your bank.

  • If paid offline or through manual payments (ACH, check, cash), or marked as unpaid in Shopify → Order will be marked as Unpaid until you link the payment to the order (see section on Order Actions to learn how). This reduces your Accounts receivable (A/R) - Shopify balance. Alternatively, categorize the deposit in your bank feed as Cash payment received for store orders. This reduces your net A/R balance and ensures your numbers are accurate from an accounting perspective, but will be harder for you to track real unpaid orders since the specific order won’t be marked as Paid in your Orders screen.

3. Order fulfilled

Upon fulfillment, we recognize sales, shipping income, discounts, tips, and reduce your deferred revenue. At the same time, we record COGS and reduce your inventory.

  • To learn more about how we sync your Shopify numbers, check out Where are my Shopify numbers coming from?

  • Fulfillment Tracking Options - when is an order considered fulfilled?

    For most sales channels, including Amazon and TikTok Shop, Finaloop syncs fulfillment data automatically. This allows us to record sales and COGS based on the actual fulfillment date. Shopify works differently. Not every brand consistently updates fulfillment statuses inside Shopify, and in many cases the data is missing, delayed, or incorrect. Because of this, accurate fulfillment information is not always available for syncing.

    To handle this, Finaloop gives you two fulfillment tracking options for Shopify. These determine when an order is considered fulfilled for financial reporting.

    1. Order placed date (default)- Orders are assumed fulfilled on the date the order is placed.

      Since we don’t always have accurate, updated data from Shopify, we'll treat orders as effectively fulfilled on the Order placed date, unless Order fulfilled date is requested.

    2. Order fulfilled date - Orders are treated as fulfilled/ partially fulfilled based on the dates the items are fulfilled in Shopify.

      If your Shopify fulfillment data is up to date, we recommend switching your fulfillment recognition to Order fulfilled date. If not, using the Order placed date ensures clean, consistent data.

    Note about warehouses for InventoryIQ users:

    • Dropshipping: Even if you did not elect Order placed date as your fulfillment timing, we’ll apply the Shopify fulfillment details to track the warehouses for any dropshipped orders.

    • Non-dropshipping:

      • If you use the Order placed date for tracking fulfillment, we use the default warehouse settings in your Warehouse tab in the inventory module to reduce inventory from the relevant warehouses when an order is fulfilled.

      • If you use Order fulfilled date for tracking fulfillment, we’ll use the Shopify fulfillment data to reduce your inventory from the relevant warehouses when an order is fulfilled.

    Learn more in InventoryIQ Troubleshooting, “Incorrect warehouse settings.”


2. Shopify refunds, returns & cancelled orders in Finaloop

Refunds can be one of the trickiest parts to understand.

After sales are recognized for an order in Finaloop, any cancellation or refund will be treated as a refund in your books since the corresponding revenue was already recorded. Remember:

  • Cash basis: Sales are recognized on the payment date

  • Accrual basis: Sales are recognized on the fulfillment date, either using the Order placed date or the Order fulfilled date as described above.

Returns, refunds, and cancellations initiated in Shopify

Cash basis

  • A refund or cancellation will not reverse a sale that has already been paid (it won't have an impact on your gross sales). Instead, a refund payment will increase your Refund account in your P&L for the full sales price, reducing your net sales. Discounts, shipping income, tip income, fees, and sales tax, will each be reduced accordingly as well.

  • This same treatment applies whether the order was refunded/ cancelled before or after the items were fulfilled. This is why cancelled orders can appear in your Refunds & Returns account.

  • If an order is cancelled in Shopify before payment, these orders are marked as Void in Finaloop and don’t impact your books.

Note: Refunds & returns don’t impact COGS unless an item is marked as “Restocked” in Shopify or is updated manually in Finaloop. Learn more about reporting restocks here.

Accrual basis

For accrual basis books, sales are recorded only when an order is considered fulfilled (see Fulfillment tracking options above). Because of this, the way refunds, cancellations, or reversals are treated will depend on the fulfillment tracking method you selected.

  • Fulfillment using 'Order placed date'

    • An order is marked as fulfilled almost immediately, and is recorded as sales in your P&L.

    • Since sales are already recorded, a refund or cancellation won't reverse or cancel the order and won't have an impact on your gross sales. Instead, it increases your Refund account in your P&L for the full sales price, reducing your net sales. This is why cancelled orders can appear in your Refunds & Returns account, depending on when the order was cancelled.

    • Discounts, shipping income, tip income, fees, and sales tax, will each be reduced accordingly as well.

    • This same treatment applies whether the order was refunded before or after the items were physically fulfilled.

  • Fulfillment using 'Order fulfilled date'

    • Cancellation /refund before 'Order fulfilled date'→ Since this order was not yet fulfilled, it was never recorded as sales in your P&L. We treat it as a cancellation, reversing the order with no actual “Refund” recorded, i.e. no impact on your P&L.

    • Cancellation/refund after 'Order fulfilled date'→ Since the sale was already recorded in your P&L, a refund will not reverse or cancel the order and won't have an impact on your gross sales. Instead, it increases your Refund account in your P&L for the full sales price, reducing net sales. This is why cancelled orders can appear in your Refunds & Returns account, depending on when the order was cancelled. Discounts, shipping income, tip income, fees, and sales tax, are each reduced accordingly as well.

    • Cancellation in Shopify before payment and before Order fulfilled date, these orders are marked as Void in Finaloop and don’t impact your books.

Note: Refunds & returns don’t impact COGS unless an item is marked as “Restocked” in Shopify or is updated manually in Finaloop. Learn more about reporting restocks here.

Returns & restocked inventory

  • If you mark an item as restocked in Shopify, we update your inventory in Finaloop and reduce your COGS.

  • If the return is still “in progress” in Shopify, inventory won’t yet be restocked in Finaloop.

  • Alternatively, if you haven’t marked an item as “restocked” in Shopify, you can mark it as restocked in Finaloop. For further instructions, check out this article on Sales-based COGS or this article on InventoryIQ.

Exchanges

  • If you use tools like Loop or Redo, exchanges typically create a new $0 order in Shopify (i.e., an order with a 100% discount applied). We exclude those orders from your sales so your sales aren’t overstated.

  • Instead, we treat it as a COGS-only order (see status definitions below) and pick up any additional sales related to upsells from the payment processor data.

Handling refunds with open balances in Finaloop

If a refund was accepted in Shopify but the order still shows open in Finaloop, mark it as Over-Collected to close it out (this usually happens if for some reason return wasn't initiated in Shopify for the order, despite the refunded payment).


3. Actions in Finaloop

Sometimes Shopify data doesn’t tell the full story. That’s where Finaloop’s order actions come in, letting you adjust open orders so your A/R and books stay clean.

These changes can be applied by changing the status of a channel or of an order in Finaloop.

Channel Actions

If you use a non-Shopify sales channel, marketplace, or app that is the source of orders but is connected to Shopify, such as TikTok Shop, Faire, Amazon, Loop Returns, and others, you can select how you want all orders from that channel to be treated, to ensure they don't create 'noise' related to fully discounted orders or double counting sales that are already being recorded from another source.

To keep your numbers clean, we created the ability to include or exclude part or all of the data from various apps based on a selected status. Note that some channels are automatically set to a specific channel status by our team to make sure your data stays clean and reconciled.

Finaloop status

Is sales data synced?

Is COGS data synced?

Examples / Images

Included - includes all data

Shopify stores

Excluded - excludes data that shouldn’t be included in your books, e.g., if we pull sales from another source, like other integrations or through net payouts

X

X

Amazon (we sync through Amazon instead)


Target (we record based on net payouts in the bank)

COGS only - includes only COGS because we sync sales from the payouts

X

Replacements, warranty, exchanges

Sales only - includes only sales

X

If you track your inventory based on an external system’s data

To view or change your selected channel actions:

  1. Go to Branded Store Orders.

  2. Click on the Settings tab at the top of the page.

Here you can view the applied status to each of the sales channels connected to Shopify.


Order Actions

As mentioned above, sometime your unpaid or open orders need to be updated if their Shopify data doesn’t reflect the most accurate information.

You can also check out this video to learn more:

It’s important to periodically review your Unpaid orders tab in your Orders screen which will show all the unpaid orders, partially paid orders, orders marked as manually paid in Shopify, or overpaid orders to keep this number in line with:

  • Offline payments for orders that weren’t linked

  • Orders that should be voided

  • Over-collected or uncollected balances that should be closed

  • Orders that won't be paid, such as product giveaways, replacements, or exchanges, or

  • Orders that were historically paid before you started tracking your books in Finaloop. See Order status below for more information.

In Finaloop, we offer various Action items that you can apply to a single order, or multiple orders at once to update your A/R balance and your order status.

First, to view your unpaid orders, click on Branded Store Orders, and then the Unpaid Orders tab on the top of the screen. You can take any of the following actions to keep your Unpaid Orders balance updated.

1. Link payment

  • If the order payment was already received in your bank account, you can link the order(s) to the specific payment(s) from your bank transactions.

  • Select the relevant order(s), click "Actions" then "Link payment."

  • If the amounts don't match exactly, you can split payments and add only part of the order amount or add expenses like discounts or FX commission to the link.

  • Check out this walkthrough to understand how to link payments to specific orders.

2. Void orders

  • When you mark an order as Void, it doesn’t impact your books at all (i.e., it’s as if it never happened for financial purposes, although you will still see this in the orders page).

  • Select the relevant order(s), click "Actions" then "Void."

  • Note: if you see an order with a Void status, remember that this can be due to you marking it as void or it can be due to the void status we synced from Shopify.

3. Close an uncollected balance

  • If you have an order that will likely never be paid, you can close this uncollected balance by selecting an order or orders, clicking ‘Actions’ and selecting ‘Close uncollected balance.’

  • This will close your open balance for this order and create a ‘bad debt’ expense in your P&L.

4. Close an over-collected balance

  • Sometimes, a customer may overpay you for an order. For example, if a refund was initiated for an order, or an item in the order was cancelled but payment was already collected and no return was issued for this item in Shopify. Another example is if you accidently charged the customer twice for the same order but never issues a refund. When this happens, it creates a negative order balance which also impact your A/R balance.

  • If you overcollected from a customer, but you don’t plan to refund the customer, this should increase your sales income in your P&L and it should be removed from your A/R balance.

  • To close this order and make sure it’s properly shown in your books, select the order(s), click ‘Actions’ and select ‘Close over-collected balance.’ This will increase your sales for the over collected amount and close this open order on the date of the last activity in this order.

5. Mark an order as giveaway

  • If an order is related to influencer collaborations, giveaways, or product samples, mark it as a Giveaway. This records the product cost as a marketing expense (under "Product giveaways" line item) in your operating expenses instead of COGS and excludes any sales revenue or discounts relating to the order from A/R.

6. Mark an order as COGS only

  • A COGS only order doesn’t impact your sales, discounts, or other sales metrics. Only the COGS expense for that order impacts your books.

  • This can be due to the channel being treated as COGS-only, or to a specific order, for example if its a replacement order, warranty, or exchange.


4. Shopify Status Summary (”TLDR”)

Status on your Orders screen

What it means

Cash Basis Accounting treatment

Accrual Basis Accounting treatment

PAYMENT STATUS

Paid / Partially paid

Order is shown as paid if:
1. Automatic - The order transaction and payment processor are shown in Shopify,
2. Manual - Payment is linked manually in Finaloop.

Order becomes Sales when paid.

1. Automatic - Reduces A/R and increases Undeposited Funds
2. Manual - Reduces A/R and decreases the account the payment was previously categorized into (e.g., Uncategorized transactions - money received).

Unpaid

If the payment in Shopify is Offline, Manual, Cash, or unknown, or if the order is Unpaid in Shopify, order will be marked as Unpaid in Finaloop.

Not included in books until a payment is linked to the order.

Unpaid orders are included in A/R until the payment is linked to the order.

Refunded / Partially refunded

Orders for which the payment was refunded by the payment processor after the order was treated as fulfilled in Finaloop. This is the case whether the "Order placed date" or the "Order fulfilled date" is used as your fullfilment date.

Note: if a refund was sent offline, you will not see it listed as refund here.

When refund is paid, increase Refunds & returns account in your P&L for the full sales price.

Reduce Discounts, Shipping income, Tip income, Fees, and Sales tax accordingly.

Note: No COGS impact unless an item is marked as Restocked in Shopify.

Fulfillment using 'Order placed date'

Refund in progress:

  • Increase Refunds & returns in your P&L for the full sales price.

  • Reduce Discounts, Shipping income, Tip income, Fees, and Sales tax accordingly.

Refund paid:

  • Reduce Undeposited Funds.

This applies whether refunded before or after the items were physically fulfilled.


Fulfillment using 'Order fulfilled date'

If refund issued before 'Order fulfilled date': We treat it as a cancellation, reversing the order. No actual Refund recorded in your P&L.

If refund is issued after 'Order fulfilled date':

  • Increase Refunds in your P&L for the full sales price, reducing net sales.

  • Reduce Discounts, Shipping income, Tip income, Fees, and Sales tax accordingly.

Note: No COGS impact unless an item is marked as Restocked in Shopify.

FULFILLMENT STATUS

Cancelled

The entire order was cancelled and refunded before fulfillment.

If the order was cancelled and refunded after fulfillment, see Refunded/ Partially refunded above.

Sales, Discounts, Shipping income, Tip income, Shopify fees, and Sales tax are all reversed and impact is removed from the books.

Fulfillment using 'Order placed date'→ N/A since order is marked as fulfilled immediately when placed, any cancellation will be treated as a Refund in your P&L.


Fulfillment using 'Order fulfilled date'

  • Order cancelled before Order fulfilled date: Deferred revenue and Shopify A/R are reversed and impact is removed from the books.

  • Order cancelled after Order fulfilled date: N/A since order is marked as fulfilled, any cancellation will be treated as a Refund in your P&L.

Fulfilled / Partially fulfilled

Order placed date: “Order placed” date automatically becomes your fulfillment date. No partially fulfilled or unfulfilled status applies.

Order fulfilled fate:
Status becomes fulfilled on the “Posted At” date in Shopify, which is the date the fulfillment was created.

Increase COGS and decrease Inventory.

Fulfillment using 'Order placed date'

  • Once order is placed, it will automatically be treated as fulfilled.

  • Increase Sales, Discounts, Shipping income, Tip income, Shopify fees, Sales tax and COGS.

  • Reduce Deferred revenue and Inventory.


Fulfillment using 'Order fulfilled date'

  • Once order is marked as fulfilled in Shopify, it will be treated as fulfilled in Finaloop.

  • Increase Sales, Discounts, Shipping income, Tip income, Shopify fees, and COGS.

  • Reduce Deferred revenue and Inventory.

Unfulfilled

Order fulfilled date only. When no fulfillment date is indicated in Shopify.

No COGS or Inventory adjustment recognized yet.

No Sales, COGS or Inventory adjustment recognized yet. Sales income remains in Deferred revenue.

Restocked / Partially restocked

Order is marked as Restocked in Shopify.

Note: A refund will not automatically result in a restock. Mark it as Restock in Shopify manually or based on input from your 3PL integration with Shopify. You can also report Restocks in Finaloop but this won’t show on your Orders screen.

Reduces COGS and increases Inventory for the restocked amount.

Reduces COGS and increases Inventory for the restocked amount.

FINALOOP STATUS

Excluded

Orders synced
from a sales channels connected to Shopify that is marked as ‘Excluded’ in Finaloop. This may be selected by you or by Finaloop as a default. Learn more here.

Excluded completely from your books.

Excluded completely from your books.

Void

Orders marked as void may be:
1. Manually marked as void in Finaloop;
2. Marked as void in Shopify (e.g., if the payment was cancelled before capture. So no money moved); or
3. The order was cancelled in Shopify and it has no payment indication.

Any impact is 100% reversed from your books (as if it never happened)

Any impact is 100% reversed from your books (as if it never happened)

Giveaway

A giveaway status is either:
1. Manually marked as a giveaway in Finaloop
2. Automatically marked as a giveaway if it has a net $0 value (100% discount).

Sales are excluded.
Increases marketing expense (Product Giveaway) in Opex for the COGS amount, decreases Inventory.

Sales are excluded.
Increases marketing expense (Product Giveaway) in Opex for the COGS amount, decreases Inventory.

COGS only

Orders you marked as COGS only or orders that come from channels marked as COGS only

Sales are excluded. Increases COGS and decreases Inventory.

Sales are excluded. Increases COGS and decreases Inventory.

Uncollectible

Mark an order as uncollectible
if you don’t expect to collect payment on the open balance.

Not relevant (sales are only included upon payment).

Reduces A/R, increases Bad Debt account.

Overcollected

Mark an order as over collected if it has a negative balance and you don’t expect to refund the money, (e.g., a refund was initiated but payment was already collected and no refund was issued, or a customer was charged twice for the same order, but not refunded.)

Not relevant (sales are automatically increased upon payment).

Increases Sales by overcollected amount and increases A/R by reversing the negative amount.
This is done on the date of the latest activity of the order, as this is most likely when it became negative.


5. Shopify Order FAQs

Q: Why does my refund look bigger than what I refunded in Shopify?

A: We post refunds line-by-line to match the original sale. If a $75 order had a $10 discount and you refunded $65), you’ll see:

  • $75 refund in Refunds & Returns

  • $10 reversal in Discounts & Promotions

    This still nets to $65, matching the actual refund.

Q: Do refunds change my COGS?

A: No—refunds don’t touch your COGS. Only if the item is restocked in Shopify will inventory and COGS update.

Q: Why do cancelled orders show as returns in my P&L?

If an order was cancelled before it was fulfilled, the sale would be reversed and no refund/ returns would show for that order. But, if an order was cancelled after it was fulfilled, we would show it as both a sale and a refund. The net impact on your P&L is the same but this keeps your P&L the most accurate and detailed.


6. Learn more

Want to learn more about our Shopify syncing? Check out these resources:

Did this answer your question?