Fulfillment accounting is the practice of recording, classifying, and recognizing every cost involved in getting a product or service into a customer’s hands, then matching those costs with the revenue they generate. When it’s done well, your margins reflect what’s actually happening in the business. When it isn’t, a profitable product line can look unprofitable, and real losses can disappear behind strong-looking revenue.
There’s a reason this gets so much attention. For online retailers, the average cost to fulfill an order is about 70% of the average order value. That includes storage, labor, picking, packing, and shipping. If you’re responsible for the books, whether you’re a CFO, controller, in-house accountant, warehouse manager, or 3PL operator, you need a consistent way to decide which fulfillment costs should be expensed right away, which ones belong on the balance sheet, and how to stop platform fees from skewing the numbers.
The sections below explain the accounting frameworks that govern fulfillment costs, the rules for capitalizing them, how each type of fulfillment cost is treated, how amortization and impairment fit into the picture, and the monthly accounting issues ecommerce businesses and Amazon FBA sellers usually have to work through.
TL;DR
- Fulfillment accounting is all about timing. Revenue is recognized when you’ve fulfilled your obligation to the customer, usually when the order ships, and fulfillment costs should be recognized in the same reporting period.
- Not every fulfillment cost can be capitalized. Under ASC 340-40, a cost has to meet three criteria. If it doesn’t, it’s expensed.
- Marketplace payouts need to be broken apart. Sales, fees, refunds, taxes, and reimbursements all need their own accounting treatment. A net payout isn’t a revenue figure.
- Classifying costs correctly matters. Putting fulfillment fees, storage costs, shipping, and COGS in the right accounts gives you margins you can actually trust.
- As sales grow, automation can save a lot of manual work. It recognizes revenue in the right period, separates settlements into individual transactions, and maps each item to the correct account.
What is fulfillment accounting?
At its core, fulfillment accounting answers a pretty straightforward question: what did it actually cost to deliver this sale, and when should that cost show up in your financial statements? Fulfillment costs are the expenses a business takes on to get a product or service to the customer after the sale. That includes:
- Direct labor
- Materials
- Warehousing
- Picking
- Packing
- Shipping
- Platform and logistics fees
This gets its own set of accounting rules because timing matters. Once you’ve made the sale, you still have to decide how to treat the costs of fulfilling it. Some costs are recorded as an expense right away. Others may be recorded as an asset and recognized over the life of the contract. That choice affects both the balance sheet, where capitalized costs appear as assets, and the income statement, where the timing of the expense changes the margin you report for a given period.
There’s one more distinction that’s easy to mix up. Costs to obtain a contract, like sales commissions, are covered by one part of the accounting guidance. Costs to fulfill a contract are covered by another. This article focuses on the fulfillment side, although the two are closely connected and often come up in the same accounting policy. The next step is understanding which accounting framework applies and where the rules draw the line.
Which standards govern fulfillment cost treatment
There are two accounting standards you’ll come across most often here. ASC 606 covers revenue recognition. Its companion, ASC 340-40, explains how to account for the costs of obtaining and fulfilling a contract. If your business reports under IFRS, the equivalent guidance is IFRS 15.
They work together. ASC 606 sets the rules for when revenue should be recognized. ASC 340-40 helps you account for the related fulfillment costs so they’re recognized over the same period. That’s how revenue and the costs of earning it stay aligned.
Check whether another accounting standard already applies
Before you start applying ASC 340-40, take a minute to answer one question: Is this cost already covered somewhere else?
Many fulfillment costs are. Inventory follows the inventory standards. Equipment follows the fixed asset rules. Software development has its own guidance too. ASC 340-40 only comes into the picture if none of those standards already apply.
You can work through it in this order:
- Scope it out. Check whether the cost already falls under inventory, fixed asset, or software guidance. If it does, follow that standard.
- Apply ASC 340-40. For any remaining costs, such as certain setup or pre-production activities, evaluate whether they meet the capitalization criteria covered in the next section.
- Match the cost to the revenue. If a fulfillment cost is capitalized, amortize it using the same pattern you use to recognize the related revenue under ASC 606.
The order matters. If you jump straight to ASC 340-40, it’s easy to overlook the fact that another standard already tells you how to account for that cost. That can change the timing of the expense. A large upfront fulfillment cost might all appear in one quarter when it should have been recognized over the life of the contract, or the other way around. Either way, the numbers in your financial statements change, including metrics like EBITDA and net income that investors and lenders often pay close attention to.
Once you’ve figured out which standard applies, the next step is deciding whether the cost can actually be capitalized.
Qualifying criteria for capitalizing fulfillment costs

Not every fulfillment cost belongs on the balance sheet. Under ASC 340-40-25-5, you can capitalize the costs of fulfilling a contract only if all three of these conditions are met:
- Direct relation. The cost relates directly to a contract or a specifically identifiable anticipated contract, such as an expected renewal.
- Future benefit. The cost creates or improves resources that will be used to satisfy future performance obligations.
- Recoverability. You’re expected to recover the cost through the contract.
All three conditions have to be met. If even one is missing, the cost is recorded as an expense.
The first criterion is usually where the discussion starts. “Directly” has a very specific meaning here. There needs to be a clear connection between the cost and the contract it’s supporting. A general business expense isn’t enough.
A good example is engineering and design work to build a server for a specific customer’s data. Because that work creates a resource you’ll use to meet future performance obligations, it can qualify for capitalization. Systematically allocated overhead is different. Even if it’s related to running the business, it doesn’t create or improve a resource tied to a specific contract or performance obligation, so it doesn’t meet the test.
What must be expensed instead
Some fulfillment costs can’t be capitalized. They have to be recorded as an expense when they’re incurred, even if spreading them over time would make the numbers look better.
The most common examples are:
- General and administrative overhead that isn’t explicitly chargeable to the customer under the contract.
- Waste and inefficiency, such as wasted materials or labor, that weren’t built into the contract price.
- Costs tied to obligations you’ve already fulfilled, because they no longer support future performance.
The reason is fairly simple. These costs don’t create a future economic benefit that can be recovered through the contract. Recording them as an expense right away also keeps the balance sheet from showing assets that don’t actually qualify as assets.
The one-year practical expedient
There’s one shortcut that’s worth knowing. ASC 340-40 includes a practical expedient that lets you expense a qualifying contract cost immediately if its amortization period would be one year or less. The key is consistency. If you choose this approach, you need to apply it the same way to similar contracts.
It’s a useful option for short-term agreements because it avoids tracking relatively small amounts over time. Where businesses get into trouble is using it for contracts that actually extend beyond a year. That can raise questions during an audit because those costs may have needed to be capitalized instead.
From there, the focus shifts to the different types of fulfillment costs, because they aren’t all accounted for the same way.
Types of fulfillment costs and how to account for each
How you account for a fulfillment cost depends on what type of cost it is. Some qualify for capitalization, while others need to be recorded as an expense as soon as they’re incurred. Knowing which category a cost belongs to makes it much easier to account for everything correctly at month-end.
The table below gives you a quick overview before we look at different cost types in more detail.
| Type of fulfillment cost | How it’s usually accounted for | What determines the treatment |
| Direct labor and materials tied to a contract | Capitalize | The cost must relate directly to the contract and create or improve resources used to satisfy future performance obligations. |
| Set-up, mobilization, and pre-production costs | Capitalize if the criteria are met | The work must create a distinct resource that will be used to fulfill future obligations. |
| Learning-curve or early inefficiency costs | Usually expense | These costs generally don’t create a future resource. |
| Shipping and handling | Expense as incurred, or treat as a separate performance obligation | The treatment depends on your accounting policy and whether control has transferred to the customer. |
| Costs before contract execution | Capitalize only if the contract is highly probable | Recovery of the cost and completion of the contract both need to be reasonably certain. |
| General overhead and wasted materials | Expense immediately | These costs don’t meet the direct relation or recoverability requirements. |
Most of these categories are quite clear once you know the rules. But a few call for more judgment.
Learning-curve costs are a good example. Even if they happen because you’re getting ready to fulfill a contract, the extra time or materials spent early on don’t create a future resource, so they’re usually expensed.
Shipping and handling can be treated in two different ways. Some businesses expense those costs as they’re incurred. Others account for them as a separate performance obligation with its own revenue. The right approach depends on when control of the goods transfers to the customer and the accounting policy you’ve adopted.
Pre-contract costs also deserve a closer look. They can qualify for capitalization, but only when winning the contract is highly probable and you reasonably expect to recover those costs.
Once a fulfillment cost has been capitalized, the next question is how long it stays on the balance sheet before it’s recognized as an expense.
Amortizing and impairing capitalized fulfillment costs
Once a cost is capitalized, you amortize it over the period in which the related revenue is recognized. That way, the expense is recorded as you earn the revenue it supports. You’ll also test the asset for impairment at each reporting date.
If the remaining value of the asset is no longer expected to be recovered from the contract, you recognize the difference as a loss immediately. Under ASC 340-40, that loss generally can’t be reversed later, even if circumstances improve.
Fulfillment accounting for ecommerce and marketplace sellers
Ecommerce businesses have an extra layer to deal with. The accounting standards explain how to treat fulfillment costs once you’ve identified them. The challenge is that ecommerce platforms rarely hand you the data in a way that makes those costs easy to identify in the first place.
Instead, most platforms bundle everything together before the payout reaches your bank account. Shopify Payments deducts processing fees before sending the payout. Marketplaces like Amazon, Walmart, eBay, and Etsy each take out their own mix of marketplace fees. Then there are 3PL providers, which usually bill for storage, picking, and packing separately from the platform where the sale happened.
Based on our experience with thousands of ecommerce businesses, the real work usually starts after the payout arrives. You have to trace it back to the individual sales, fees, shipping costs, refunds, and other adjustments that make up the final amount. Only then can you match the costs to the sale and recognize the revenue once you’ve fulfilled your obligations to the customer, instead of when the money happens to arrive.
Learn more about multichannel ecommerce accounting.
When to recognize revenue on a shipped order
Before you start sorting out fulfillment costs, you need to know when the sale actually becomes revenue. The money arriving from Stripe or a marketplace payout isn’t what determines that.
Under ASC 606, revenue is recognized when control of the goods transfers to the customer. For most physical products, that’s generally the ship date. It isn’t the order date, and it isn’t the day the payout reaches your bank account.
That timing difference shows up quickly on ecommerce platforms. Shopify’s built-in reports are organized by order date, so if orders aren’t shipped until later, revenue for that month can end up looking higher than it should. Amazon creates a different issue. Its settlement cycle is typically around 14 days, so a single payout often includes activity from two different reporting periods. In both cases, the payout is simply money you’re receiving for revenue you’ve already earned, less the platform’s fees. It isn’t a revenue number you can record as-is.
Get the ultimate guide to revenue recognition software.
A few situations need additional attention:
- With pre-orders and gift cards, you collect the cash before you’ve delivered the product or service. The amount stays recorded as deferred revenue or a gift card liability until you’ve fulfilled your obligation.
- Inventory sent to an Amazon FBA warehouse works differently too. Moving inventory into the warehouse doesn’t make it an expense. It remains your asset until it’s sold. If your business has a high return rate, you’ll also need a refund reserve so revenue isn’t overstated by orders that are likely to come back.
| Getting the timing right matters because it affects everything that follows. You can only match fulfillment costs to revenue after the revenue has been recognized in the correct reporting period. |
Reading an Amazon settlement report

Amazon FBA is probably the clearest example of this, so it’s a good place to start, although the same idea applies to any sales channel that pays out after deducting fees.
The settlement report is where you see what actually happened, and it rarely matches the bank deposit. It breaks out gross sales, each type of fee, refunds, reimbursements, and the final amount Amazon transfers. The bank deposit simply shows the amount you received.
That difference matters. Amazon FBA combines fulfillment fees, storage fees, referral fees, and other charges into the settlement, but each of those needs its own accounting treatment. If they’re all rolled into a single number, it’s much harder to see what your margins really look like.
Why getting the classification right matters
One accounting decision has a bigger impact on your gross margin than almost any other: deciding where each fulfillment-related fee belongs.
If platform fulfillment fees end up mixed into what you paid for the product itself, your COGS goes up and your gross margin looks lower than it really is. Amazon fulfillment fees, 3PL pick-and-pack charges, and Shopify transaction fees may look similar, but they still need to be classified correctly.
Storage fees add another layer because of timing. They build up over time, so they should be matched to the inventory periods they relate to instead of all being recognized in the month the charge appears. It all comes back to understanding what’s behind each payout and recording every piece in the right place.
Sales tax creates another challenge that catches many sellers by surprise. In most states, marketplace facilitator laws require marketplaces such as Amazon, Walmart, and eBay to collect and remit sales tax for you. Even so, you’re still responsible for your own compliance and record keeping. On top of that, storing inventory in a state’s warehouses can create a sales tax nexus you weren’t expecting. Keeping the tax collected by the marketplace mapped to the correct liability account is an important part of accurate fulfillment accounting.
Recognizing revenue and splitting fees by hand
Doing this manually means keeping track of two things at the same time. First, you need to recognize each sale in the period when it was actually earned. Then you have to break each settlement into all of its individual pieces.
For sellers working from spreadsheets, the monthly process usually looks something like this:
- Pull the fulfillment or shipment report and recognize revenue only for the orders that shipped during the period. That means orders that have been placed or paid for but haven’t shipped yet stay out of revenue until they’re shipped.
- Keep unearned payments on the balance sheet. Payments you’ve collected for orders that haven’t shipped yet, along with unredeemed gift cards, stay as deferred revenue instead of being recorded as income.
- Download each settlement report and separate gross sales from the net payout.
- Break out the platform charges. Record referral fees, fulfillment fees, storage fees, advertising costs, and other charges in their own expense accounts. Record refunds against revenue and reimbursements in a separate income account.
- Match the settlement to the bank deposit to confirm every transaction has been accounted for.
This process works well enough when sales volume is low. As the business grows, though, it often turns into one of the biggest month-end tasks. Small errors are easy to overlook, and once they’ve carried through a few reports, finding and correcting them takes much more time.
We hear the same story in demo conversations all the time. Sellers managing two Shopify stores, two Amazon marketplaces, and a TikTok Shop often describe the process as tedious. They spend hours piecing reports together and still don’t have a clear picture of cash flow or what they’re expecting to collect.
Rad, which sells recovery tools across Amazon, Shopify, and PayPal, ran into exactly that problem. Before automating the process, a bookkeeper spent 5 to 10 hours every week importing data and making adjustments. That’s more than 40 hours a month devoted to manual bookkeeping alone.
How automation recognizes revenue and sorts fees
Automation software handles both parts of the process. It maps transaction data directly into your accounting system, so revenue is recognized at the right time and each fee is posted to the correct account without sorting everything by hand.
Synder is one example. It’s an accounting automation tool that syncs ecommerce and financial data from more than 30 platforms, including Amazon, Shopify, Stripe, and PayPal, into accounting systems such as QuickBooks Online, QuickBooks Desktop, Xero, Sage Intacct, NetSuite, Intuit Enterprise Suite, and Puzzle. The same five steps you would normally go through each month still happen. The difference is that the software takes care of them automatically.
On the revenue side, Synder’s revenue recognition feature spreads prepaid and subscription revenue across the periods in which it’s earned and posts the recognition entries automatically. As revenue is earned, it’s moved from Deferred Revenue on the balance sheet to Income on the profit and loss statement. That keeps payments you’ve already collected but haven’t earned yet, out of the current month’s revenue, exactly as ASC 606 requires.
On the cost side, each settlement is broken into its individual pieces. Fulfillment fees, storage fees, taxes, refunds, and other charges are mapped to the appropriate accounts, while COGS is recorded against the matching sale. That way, the costs are recognized alongside the revenue they relate to.
You can see what that looks like at Dermeleve, an over-the-counter medication brand that sells through Shopify, Amazon, wholesale, Walmart, and Target. The company uses Synder to automatically categorize Amazon’s fee structure, giving its CFO the visibility needed to make inventory decisions, including adjusting stock levels to reduce storage fees. Dermeleve reports saving $60,000 or more each year in deferred staffing costs, maintaining reconciliation accuracy above 99.5% across four sales channels, and automatically syncing more than 170,000 transactions.
As Andy Pozniak, CFO at Dermeleve, put it:
Synder has allowed me to remain independent in my role and accomplish more things in less time. Before, I would have had to hire additional staff at a cost of $5,000-$6,000 a month to help me operate the accounting department.
Andy Pozniak, CFO at Dermeleve
| If you’d like to see how the process would work with your own settlement reports, you can book a call with Synder. |
Key takeaways on fulfillment accounting
Fulfillment accounting is about recording revenue and costs in the same reporting period. Revenue is recognized when control of the goods transfers to the customer, usually on the ship date, not when the order is placed or the payout arrives. Pre-orders and unredeemed gift cards stay as deferred revenue until they’re earned. Fulfillment costs are evaluated against the three capitalization criteria, overhead and inefficiencies are expensed as they’re incurred, and capitalized costs are amortized alongside the revenue they support. When revenue and the related costs are recorded in the same period, your reported margin reflects what you actually earned.
Ecommerce platforms don’t make this easy. Shipment timing, bundled settlements, and reports based on order dates can all pull revenue and costs out of sync if they aren’t adjusted. Whether you handle that work manually or automate it, the goal stays the same: recognize revenue when it’s earned, record each fee in the right account, and end up with financials you can rely on for pricing, planning, and tax reporting.
FAQ
Is fulfillment included in COGS?
It depends on the type of cost. Direct costs of getting a product ready for sale, such as inbound shipping and landed costs, are typically included in COGS. Outbound shipping, platform fulfillment fees, and storage costs are often recorded as operating expenses instead. The important thing is to apply your classification consistently so your financial reports stay comparable over time.
Can shipping and handling be treated as revenue instead of a cost?
Yes, in some cases. If shipping is a separate promise to the customer and control transfers as a distinct service, it can be treated as its own performance obligation with separate revenue. Otherwise, many businesses choose to treat shipping and handling as a fulfillment cost and expense it as it’s incurred. Whatever approach you use, apply it consistently.
How often should ecommerce sellers reconcile fulfillment costs?
Most businesses reconcile fulfillment costs as part of the monthly close. Even so, checking them weekly makes the month-end process much easier. If you wait until the end of the month, small differences in settlements, platform fees, refunds, and reserves can pile up and take much longer to sort out, especially when you’re selling across multiple channels.
What is the difference between freight-in and freight-out?
Freight-in is the cost of moving inventory from your supplier to your warehouse. Under GAAP, it’s capitalized as part of inventory, so it doesn’t become an expense until the inventory is sold as part of COGS. Freight-out is the cost of shipping an order to the customer. It’s generally recorded as a period expense when the sale happens, although some businesses include it in COGS to get a clearer view of profit on each order. Keeping freight-in and freight-out separate helps you avoid recognizing inbound shipping costs too early.
How should returns and refunds affect fulfillment revenue?
When a customer returns an order, the original revenue and the related COGS are both reversed. Any restocking or return shipping costs are recorded as expenses. If returns are a regular part of your business, it’s usually better to estimate a returns reserve instead of waiting until each refund is processed. That keeps revenue from being overstated in months when many of those sales are expected to be returned later. Marketplace reimbursements for lost or damaged inventory are treated separately as income, not as a reduction of marketplace fees.
Over what period do you amortize a capitalized fulfillment cost?
Amortization follows the pattern in which the related goods or services transfer to the customer, which in practice usually tracks the revenue pattern. The period can run longer than the initial contract term when renewals are reasonably expected, so a setup cost supporting a multi-year customer relationship is amortized over that longer horizon rather than the first term alone. Tracking capitalized costs by contract or customer, rather than in one broad pool, keeps this meaningful, since a pool wide enough to hide a single relationship’s decline makes impairment testing far less useful.
How is impairment of a fulfillment cost asset calculated?
Compare the asset’s carrying amount, the capitalized cost still on the balance sheet after amortization, against what you expect to recover: the remaining consideration from the contract less the costs still needed to deliver the remaining goods or services. For example, a $50,000 carrying amount against $100,000 in remaining consideration and $60,000 in remaining costs gives a $40,000 net recoverable amount, so the $10,000 shortfall is recognized as an impairment loss immediately. Under ASC 340-40 that loss generally cannot be reversed in a later period, unlike the rules for long-lived assets.