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 connects directly to Shopify so your orders, refunds, cancellations, and receivables flow automatically into your books with no manual work needed.

This article covers how Shopify orders are recorded in Finaloop, how refunds and returns work, what happens when an order is cancelled, and how to manage your open or unpaid orders.


1. Your revenue recognition timing

Before diving into how your Shopify orders flow into Finaloop, let's understand when your Shopify revenue gets recognized in your books.

This comes up throughout the article, so it's important to understand upfront.

The exact timing of your revenue recognition depends on whether you use cash or accrual basis but your fulfillment data is a key factor that impacts the timing of your sales recognition (accrual only) and COGS recognition (cash and accrual).

For most sales channels like Amazon and TikTok Shop, Finaloop syncs fulfillment data automatically and uses the actual fulfillment date to determine your revenue recognition timing. Shopify is different. Many brands don't consistently update fulfillment statuses in Shopify, so that data is often incomplete, delayed, or missing. To handle this, Finaloop gives you two options for how revenue is recognized for Shopify orders.

You can choose your method under Orders → Shopify tab → Settings →Revenue recognition.

Options

How it works

Who should use it

Fulfillment date (recommended, if updated)

Revenue is recognized on the date the order is marked as fulfilled in Shopify

Brands who consistently update fulfillment statuses in Shopify

Order date (default)

Revenue is recognized on the date the order is placed in Shopify

Brands whose Shopify fulfillment data is incomplete or inconsistent

This setting is referenced throughout the article. It affects how sales are recorded, how refunds are treated, and how cancellations are handled.

Inventory tracking:

  • Dropshipping: Shopify fulfillment details are always used to track warehouses for dropshipped orders, regardless of your revenue recognition setting.

  • Non-dropshipping:

    • Order date: Finaloop uses your default warehouse settings (Warehouse tab in the inventory module) to reduce inventory when an order is placed.

    • Fulfillment date: Finaloop uses Shopify's fulfillment data to reduce inventory from the relevant warehouses when an order is fulfilled.

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


2. How Shopify orders flow into Finaloop

Now that you know when revenue is recognized, here's how that plays out step by step, depending on your accounting basis.


Cash basis

How it works:

  • Sales: Recorded when payment is collected, not when the order is placed or fulfilled.

  • COGS: Recorded based on your Revenue recognition setting (Order date or Fulfillment date).

Timing note: Because sales and COGS follow different triggers on cash basis, timing differences between the two are normal.


Step-by-step order flow:

Step 1. Order placed in Shopify

The order appears in your Orders screen but has no impact on your P&L or Balance Sheet. On cash basis, unpaid orders don’t create Accounts Receivable.

If you use Order date for revenue recognition, COGS are recorded when the order is placed, even before sales are recorded.

Step 2. Payment received from customer

Payments can be received through a payment processor (online payment) or through an offline channel, like cash, ACH, or check. How the payment comes in determines what happens next:

  • Online payment → Sales, discounts, shipping income, tips, and taxes hit your P&L on the payment date. Finaloop matches the payment to the order automatically.

  • Offline payment (ACH, check, cash) or marked as unpaid in Shopify → The order shows as Unpaid in your Orders screen until you link the payment to the order (see Order Actions below). Alternatively, categorize the deposit in your bank feed as Cash payment received for Shopify orders. This keeps your numbers accurate, but won’t mark the specific order as Paid in your Orders screen, making it harder to track real unpaid orders.

Step 3. Order fulfilled

If you use Fulfillment date for revenue recognition, COGS are recorded when the order is marked as fulfilled in Shopify.


Accrual basis

How it works:

  • Sales & COGS: Recorded based on your Revenue recognition setting (Order date or Fulfillment date), even if payment hasn't been received yet.


Step-by-step order flow:

Step 1. Order placed in Shopify

  • Deferred revenue is created on your Balance Sheet. This is a liability representing money received for services or products not yet delivered.

  • An open balance appears in your Accounts receivable (A/R) - Shopify account.

  • If you use Order date for revenue recognition, Finaloop immediately:

    • Recognizes sales, shipping income, discounts, and tips

    • Reduces deferred revenue

    • Records COGS and reduces inventory

Step 2. Payment received from customer

Payments can be received through a payment processor (online payment) or through an offline channel, like cash, ACH, or check. How the payment comes in determines what happens next:

  • Online payment → Finaloop automatically marks the order as Paid (or Partially paid) and matches the payment to the order, reducing your Accounts receivable (A/R) - Shopify balance.

  • Offline payment (ACH, check, cash), or marked as unpaid in Shopify → The order stays as Unpaid until you link the payment to the order (see Order Actions below). This reduces your Accounts receivable (A/R) - Shopify balance. Alternatively, categorize the deposit in your bank feed as Cash payment received for Shopify orders. This reduces your net A/R (see image). This keeps your numbers accurate, but won’t mark the specific order as Paid in your Orders screen, making it harder to track real unpaid orders.

Step 3. Order fulfilled

If you use Fulfillment date for revenue recognition, Finaloop:

  • Recognizes sales, shipping income, discounts, and tips

  • Reduces deferred revenue

  • Records COGS and reduces inventory

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

💡Why you might see a Reconciliation-in-process (RIP) balance

When an order is marked as Paid, you may notice a temporary balance in a Balance Sheet account called Reconciliation-in-process (RIP). This is normal - it's a holding account that bridges the timing gap between when a sale or refund is recorded and when the actual payment arrives.

It zeros out automatically as payments are reconciled.

Here’s the flow:

  1. Order marked as paid in Shopify → RIP balance increases.

  2. Actual payment received → RIP balance decreases, zeroing itself out over time.

  3. Undeposited Funds for that payment processor increases, until the money lands in your bank.


3. Refunds, returns, and cancelled orders

How it works:

  1. Not paid → The order is voided and removed from your books entirely.

  2. Paid, and the sale was already recorded (based on your accounting method/ revenue recognition setting) → A new entry appears in your Refunds & Returns in your P&L. The original sale stays intact.

  3. Paid, but the sale wasn't recorded yet (accrual + Fulfillment date only) → Deferred Revenue is reduced on your Balance Sheet. No P&L impact.

Returns, refunds, and cancellations initiated in Shopify

Cash basis

If an order is cancelled in Shopify before payment:

  • The cancelled orders are marked as Void in Finaloop and don’t impact your books.

If an order is refunded or cancelled in Shopify after payment:

  • Using cash basis, a sale is recognized at the time of payment.

  • Since the order was both paid and the sale was already recorded in Finaloop, a refund or cancellation will not reverse the sale (i.e., 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 net refund amount. The other accounts in your P&L will not be impacted.

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

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

If an order is cancelled in Shopify before payment:

  • The cancelled orders are marked as Void in Finaloop and don’t impact your books.

If an order is refunded or cancelled in Shopify after payment:

Using accrual basis, sales are recorded on the fulfillment date or the order date, depending on the selected method in your revenue recognition settings. Because of this, the way refunds, cancellations, or reversals are treated will depend on the revenue recognition method you selected.

  • Fulfillment date method

    • Cancellation /refund after payment before Fulfilled date

      • Since this order was not yet recorded as sales in your P&L, we reverse the order from Deferred Revenue with no actual “Refund” recorded, i.e. no impact on your P&L.

    • Cancellation/refund after payment and 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, a refund payment will increase your Refund account in your P&L for the net refund amount. The other accounts in your P&L will not be impacted.

      • This is why cancelled orders can appear in your Refunds & Returns account, depending on when the order was cancelled.

  • Order date method

    • Sales are recorded almost immediately, when the order is placed.

    • 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, a refund payment will increase your Refund account in your P&L for the net refund amount. The other accounts in your P&L will not be impacted.

    • This is why cancelled orders can appear in your Refunds & Returns account, depending on when the order was cancelled.

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

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.

  • 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

  • Unlike returns, where everything is handled within the original order, in exchanges, you both mark a return on the original order and create a new order for the replacement.

  • In this case, you should ensure the company handling the exchange, manages it correctly in Shopify:

    • A return on the original order (and restock if needed); and

    • A new order for the replacement.

  • 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 sales channels 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. You can view the settings for your specific sales channels in Orders>Shopify>Settings>Sales Channels.

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).


4. 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, TikTok Shop (we sync through Amazon and TikTok Shop 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

Giveaway - excludes sales data and syncs COGS only as "Product giveaways"

X

✓ as a giveaway expense

Relevant for influencer distributions or compensation cases

To view or change your selected channel actions:

  1. Go to 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 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 due to the void status we synced from Shopify. You can easily identify which it is - if the "Voided" tag has a small Finaloop logo, it means it was marked as void in Finaloop.

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.


5. Status Summary (”TLDR”)

Status on your Orders screen

What it means

Cash Basis treatment

Accrual Basis treatment

PAYMENT STATUS

Paid / Partially paid

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

Order becomes Sales when paid.

1. Online - Reduces A/R and increases Undeposited Funds
2. Offline- 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 sale was recognized in Finaloop. This is the case whether Order date or Fulfillment date is used as your revenue recognition method.

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

If the order was cancelled and refunded before payment was received, see Cancelled below.

When refund is paid:

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

  • Reduce Undeposited Funds.

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

If AFTER sale was recognized in Finaloop (either Order date or Fulfillment date):

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

  • Reduce Undeposited Funds.

If BEFORE sale was recognized in Finaloop (only relavent for Fulfillment date):

  • Reduce Deferred revenue

  • Reduce Undeposited Funds

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

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

FULFILLMENT STATUS

Fulfilled / Partially fulfilled

Based on your selected revenue recognition method: Order date: Items are marked as fulfilled on their order placed date. No partially fulfilled or unfulfilled status applies.

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

Order date:

  • No impact to your books in Finaloop when an order is fulfilled.

  • Order is marked as Fulfilled in Orders screen.


Fulfillment date:

  • Increase COGS decrease Inventory.

  • Order is marked as Fulfilled in Orders screen.

Order date:

  • No impact to your books in Finaloop when an order is fulfilled.

  • Order is marked as Fulfilled in Orders screen.


Fulfillment date:

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

  • Reduce Deferred revenue and Inventory.

  • Order is marked as Fulfilled in Orders screen.

Unfulfilled

Fulfillment status reflects what happened in Shopify, and not your revenue recognition method in Finaloop.

The accounting impact is only relevant if you use fulfillment date for revenue recognition, when no fulfillment date is indicated in Shopify.

Fulfillment date:

No COGS or Inventory adjustment recognized yet.

Fulfillment date:

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 marked as a giveaway in Finaloop.

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.


6. Shopify Order FAQs

Q: Do refunds change my COGS?

A: No. Refunds have no impact on COGS. COGS only updates if the item is marked as Restocked in Shopify or manually updated in Finaloop.

Q: Why does a cancelled order show up as a return in my P&L?

A: This happens when an order was cancelled after payment was already collected. Because payment makes it a paid order, Finaloop treats the cancellation as a refund rather than a void, so both the original sale and the refund appear in your P&L. The net impact is the same either way. If the order was cancelled before payment, it would be Voided and nothing would appear in your P&L.

Q: What's the difference between Void and Cancelled?

A: In Finaloop, Void means the order has no financial footprint, it's removed from your books entirely as if it never happened. This always happens when an order is cancelled while unpaid.

Cancelled in Shopify doesn't automatically mean Void in Finaloop. If the order was already paid when it was cancelled, it's treated as a refund, both the original sale and the refund are visible in your P&L.

Q: Why is there still an open balance on an order I already refunded?

A: This usually happens when the refund was processed in Shopify but a return wasn't initiated there for the order. Finaloop still sees it as open. To close it, select the order and mark it as Over-Collected. See Handling refunds with open balances for more detail.

Q: My refund amount in Finaloop doesn't match what I refunded in Shopify. Why? A: Finaloop records the net refund payment amount, exactly what was refunded. If the number still looks off, check whether the refund was processed through an online payment processor (Finaloop picks this up automatically) or offline (which needs to be linked manually). Offline refunds won't appear as Refunded in your Orders screen.

Q: If I switch my revenue recognition setting, does it affect my historical data?

A: It can impact your data for any open years. After you make the switch, it typically takes about 24 hours to process so you want be able to make a switch again during this processing time.

Q: Why do I see a Reconciliation-in-process (RIP) balance on my Balance Sheet?

A: This is normal. RIP is a temporary holding account that bridges the timing gap between when a payment is recorded and when it actually arrives. It zeros out automatically as payments are reconciled. See section 2 for a full explanation of how it flows.


7. Learn more

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

Did this answer your question?