Recognize Revenue When You Ship, Not When You Capture Payment
ASC 606 / IFRS 15 compliant revenue recognition that happens automatically as you ship orders. No separate accounting software, no manual journal entries, no month-end reconciliation.
Request a DemoTrusted by finance teams at scaling brands
Why Revenue Recognition in Fulfil vs. Separate Accounting Software
For DTC brands: Spreadsheets break as you scale. QuickBooks can't handle complex revenue recognition. NetSuite works but requires expensive setup and consultants. Fulfil handles revenue recognition automatically as part of your operations, not as a separate accounting exercise.
Feature | Manual Spreadsheets | QuickBooks | NetSuite | Fulfil ERP |
---|---|---|---|---|
Revenue Recognition | Manual journal entries for every order | Basic accrual, limited automation | Rev rec module, but expensive and complex setup | ✓ Automated GL posting as orders ship |
Partial Shipments | Prone to errors and timing issues | Can't handle partial shipments well | Requires consultant to configure | ✓ Handles partial shipments, backorders, returns automatically |
Audit Trail | No audit trail | Limited audit documentation | Full audit trail, but clunky interface | ✓ Complete audit trail from order to GL posting |
Integration | Separate from operations | Requires integration or manual entry | Disconnected from actual shipments | ✓ Built into operations—shipment triggers revenue |
Monthly Effort | Hours of manual work monthly | Still requires manual reconciliation | Works, but painful to use | ✓ Zero manual work—happens automatically |
Revenue Recognition That Happens Automatically, Not at Month-End
No manual journal entries. No spreadsheet reconciliation. When warehouse staff mark shipments "Done," Fulfil recognizes revenue automatically with proper ASC 606 accounting. Finance teams see revenue in real-time, not weeks later during close.
ASC 606 / IFRS 15 compliant
Follow the 5-step revenue recognition framework automatically. Built for modern commerce with deferred revenue, performance obligations, and transaction price allocation.
Audit-ready journal entries
Every transaction creates a complete audit trail. See debit and credit entries from payment capture through shipment to settlement—all in real-time.
Real-time revenue visibility
No more waiting until month-end to know your revenue. Track recognized revenue, deferred revenue, and COGS in real-time as orders ship.
From Payment to Revenue: A Real Example
Customer orders a custom leather bag on Shopify for $89 + $8.99 shipping + $8.24 sales tax = $106.23 total.
Customer pays at checkout
Stripe captures $106.23. Fulfil records as Stripe Gateway (asset) and reduces A/R
Warehouse ships bag
Inventory moves to "Shipped Not Invoiced" clearing account at cost ($32)
Shipment marked "Done"
Revenue recognized ($97.99), COGS recognized ($32), Sales tax recorded as liability ($8.24)
Stripe settles to your bank
Cash received ($103.24), Processing fees expensed ($2.99), Stripe Gateway cleared to $0
All four steps happen automatically. No manual journal entries. Complete audit trail.
Order Receipt
Step 1: Payment Capture
When the customer completes checkout, payment is captured by the gateway (Stripe) and recorded as a deposit. This creates an asset (payment held by Stripe) and reduces accounts receivable.
Account | Debit | Credit |
---|---|---|
101 - Stripe Gateway | $ | — |
120 - Accounts Receivable | — | $ |
Note: This entry records the payment at checkout. The Stripe Gateway account is an asset representing funds held by Stripe before settlement.
Step 2: Ship Inventory
When items are shipped to the customer, inventory moves from your warehouse to a clearing account. This tracks that goods have left the warehouse but haven't been invoiced yet. Fulfil uses perpetual inventory accounting.
Account | Debit | Credit |
---|---|---|
121 - Inventory Shipped (Not Invoiced) | $ | — |
140 - Inventory | — | $ |
Note: This entry moves inventory at cost from your warehouse. Account 121 is a clearing account that will be relieved when revenue is recognized in Step 3.
Step 3: Recognize Revenue
When the shipment is marked "Done", revenue is recognized. This is when control of the goods transfers to the customer per ASC 606. COGS is recognized simultaneously, matching expenses with revenue.
Account | Debit | Credit |
---|---|---|
120 - Accounts Receivable | $ | — |
400 - Sales Revenue | — | $ |
220 - Sales Tax Payable | — | $ |
500 - Cost of Goods Sold | $ | — |
121 - Inventory Shipped (Not Invoiced) | — | $ |
Revenue Recognized! This invoice is automatically generated when shipment is marked done. Sales tax is recorded as a liability (pass-through to tax authorities). COGS is matched to revenue per the matching principle.
Step 4: Bank Settlement
When Stripe transfers funds to your bank account, they deduct processing fees. This settlement reconciles the gateway clearing account and records the payment processor fees as an expense.
Account | Debit | Credit |
---|---|---|
100 - Bank Account (Checking) | $ | — |
610 - Payment Processing Fees | $ | — |
101 - Stripe Gateway | — | $ |
Note: This entry records the actual cash received in your bank account. Processing fees are expensed when incurred. The Stripe Gateway clearing account is now zero.
Complete Audit Trail
All four steps happen automatically in Fulfil as you process orders. Every transaction creates a complete journal entry with proper debits and credits, giving auditors and finance teams full visibility from order to cash.
Recognize on shipment
Revenue recognized automatically when control transfers—no manual entries
Track unshipped orders
Deferred revenue tracked separately until performance obligations fulfilled
Partial shipments
Revenue allocated proportionally as each line item ships
Real-time reporting
See recognized vs. deferred revenue any time—no waiting for month-end
Handle Pre-Orders and Backorders Without Spreadsheets
The problem:
You launch a new product on Shopify with pre-orders. 500 customers pay $89 each ($44,500 total). But you won't receive inventory for 6 weeks. Where does that $44,500 go on your books?
The wrong way:
Record it all as revenue immediately. Your P&L looks great, but you haven't earned it yet (you still owe customers the product). This violates ASC 606.
The Fulfil way:
Day 1: Capture $44,500 in payments, record as Deferred Revenue (liability)
Week 6: Receive 500 units from supplier
Week 6-8: Ship 100 units/week, recognize $8,900 revenue per week as units ship
Week 8: All units shipped, full $44,500 recognized, Deferred Revenue back to $0
Your balance sheet stays accurate. Your P&L shows revenue when earned (when shipped), not when paid. All automatic, no manual journal entries or spreadsheet tracking.
Returns Reverse Revenue Automatically
Original sale:
Customer bought $89 bag, you recognized $89 revenue and $32 COGS
Customer returns 30 days later:
• Fulfil automatically creates credit note
• Reverses revenue: Credit Sales Revenue $89
• Reverses COGS: Debit COGS $32, Credit Inventory $32
• Refunds customer via Stripe
• Inventory returns to stock at $32 cost
Restocking fee scenario: You charge 15% restocking fee ($13.35)
• Customer gets refund of $75.65
• You keep $13.35 as restocking revenue
• Revenue net impact: -$89 (original) + $13.35 (restocking) = -$75.65
All automatic. No manual calculation of which revenue to reverse or how much COGS to adjust.
Automatic reversal
Revenue and COGS reversed when return is processed—no manual entries
Inventory restored
Returned goods flow back to inventory with proper valuation
Restocking fees
Partial refunds and restocking fees properly accounted
Exchange handling
Exchanges create new orders with proper revenue recognition
One System from Order to Cash
Fulfil includes a complete general ledger. No QuickBooks or NetSuite required. Every operational transaction automatically creates proper journal entries in real-time.
Revenue recognition when orders ship
Automated GL posting as shipments complete. Revenue matches when control transfers to customers.
COGS matching when revenue recognizes
Cost of goods sold posted automatically with revenue. Matching principle handled correctly.
Payment processor fees when settlements occur
Stripe and PayPal fees expensed when they're incurred. Settlement reconciliation automatic.
Sales tax as pass-through liability
Sales tax recorded correctly as liability, not revenue. Remittance tracking built in.
Multi-currency and multi-entity support
Revenue recognized in transaction currency. Each legal entity has separate books with consolidation.
Real-time P&L and balance sheet
Finance teams see accurate financials at any moment, not just after month-end close.
The result: Finance teams see accurate financials at any moment, not just after month-end close. Your accountant spends days closing books, not weeks reconciling spreadsheets.
How Fulfil Follows ASC 606 Automatically
ASC 606 requires 5 steps to recognize revenue. Fulfil handles all of them automatically.
Identify Contract
Customer completes Shopify checkout, pays via Stripe = binding contract
Performance Obligations
Products, shipping, gift wrapping = separate obligations you must fulfill
Transaction Price
Order total minus sales tax (which is pass-through, not revenue)
Allocate Price
Each line item gets its portion of the transaction price
Recognize Revenue
When you ship and mark "Done," control transfers to customer = revenue recognized
You just ship orders. Fulfil handles the accounting automatically while staying ASC 606 compliant.
How DTC Brands Use Revenue Recognition in Fulfil
Pre-Order Campaign
Beauty brand launches new product with 30-day pre-order. Captures $250K in payments before receiving inventory from manufacturer. Fulfil tracks all $250K as deferred revenue. As units ship over 2 weeks, revenue recognizes automatically ($125K per week as shipments complete).
Made-to-Order Manufacturing
Jewelry brand makes custom pieces to order. Customer pays $500 upfront, production takes 3 weeks. Payment sits as deferred revenue during manufacturing. When custom ring ships, revenue recognizes automatically. Finance team sees accurate revenue (only for shipped orders), not inflated by pending production.
Subscription Box
Subscription brand bills customers on the 1st of each month, ships boxes on the 15th. From the 1st to 15th, all payments are deferred revenue. On the 15th, as boxes ship, revenue recognizes. Returns from prior months automatically reverse revenue and restore inventory.
Multi-Warehouse Split Shipment
Order has 3 items: 2 ship from East Coast warehouse on Monday, 1 ships from West Coast warehouse on Wednesday. Fulfil recognizes revenue proportionally: 2/3 of order revenue on Monday, 1/3 on Wednesday. Customer gets one invoice showing all three items, accounting stays accurate.
Frequently asked questions
When is revenue recognized in Fulfil?
Revenue is recognized when control of goods transfers to the customer—typically when shipments are marked "Done" and handed to the carrier. This follows ASC 606 / IFRS 15 standards for revenue recognition.
How does Fulfil handle deferred revenue?
When you capture payment before shipping (like pre-orders or backorders), Fulfil records this as deferred revenue—a liability on your balance sheet. Revenue is automatically recognized line-by-line as each item ships, ensuring compliance with accounting standards.
What happens to revenue when customers return products?
Fulfil automatically reverses revenue, COGS, and inventory when returns are processed. The system creates the appropriate journal entries to properly account for the return, including any restocking fees or partial refunds.
Do I need QuickBooks or NetSuite with Fulfil?
No. Fulfil includes a complete general ledger with chart of accounts, journal entries, and financial reporting. Every operational transaction automatically creates proper accounting entries, eliminating the need for separate accounting software or complex integrations.
Is Fulfil's revenue recognition auditor-approved?
Yes. Fulfil follows ASC 606 / IFRS 15 standards with complete audit trails. Every transaction includes detailed journal entries showing the flow from payment capture through revenue recognition, giving auditors the documentation they need.
What if we ship in multiple boxes over multiple days?
Fulfil handles partial shipments automatically. If an order has 3 items shipping separately, revenue recognizes proportionally as each item ships. The customer's invoice shows all three items, but revenue recognition happens line-by-line as control transfers.
How does Fulfil handle gift cards or store credit?
Gift cards are deferred revenue until redeemed. When a customer buys a $100 gift card, it's recorded as a liability. When they use it to purchase products, revenue is recognized when those products ship, not when the gift card was purchased.
What about subscription revenue or memberships?
Subscriptions are deferred revenue recognized over the service period. A 12-month membership paid upfront gets recognized 1/12th each month. When you ship physical products as part of the subscription, revenue for those products recognizes when they ship.
Can Fulfil handle multiple currencies?
Yes. Revenue is recognized in the transaction currency. If a UK customer pays £75, revenue is recorded in GBP. Your reporting can show revenue in USD using exchange rates from the transaction date. Multi-entity support means your US and UK subsidiaries can each have their own currency and chart of accounts.
How does revenue recognition work for wholesale customers with net terms?
For wholesale customers with net 30 or net 60 terms, revenue is still recognized when you ship (when control transfers), not when they pay. The unpaid invoice sits in Accounts Receivable until payment is received. This matches revenue with the performance obligation (shipping goods) rather than the payment timing.
See revenue recognition in action
Schedule a demo to see how Fulfil automates revenue recognition from order to financial statements.
Request a Demo