REVENUE RECOGNITION

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 Demo

Trusted by finance teams at scaling brands

With Fulfil, our revenue recognition is basically automated.

Robot 090, CFO & COO, dbrand
Read the full story
Robot 090

Fulfil's slack integration notifies the finance team in real-time when a B2B order was processed so they know when to review revenue booking.

Angel Ferrer, CTO & CMO at Hemper
Read the full story
Angel Ferrer

We're pretty stoked about the remittance functionality that Fulfil supports. Not every trading partner will send an EDI doc of what they paid when and how, but for those that do, not having to do those manual steps, 30-50% of the entering process is time saved.

Mark Riskowitz, VP of Ops at Caraway Home
Read the full story
Mark Riskowitz

The Fulfil team have been great partners, critical to our growth, and will continue to be critical to our growth into the future.

Chad Janis, Founder & CEO at Grüns
Read the full story
Chad Janis

Fulfil is the way to go for us. If you're D2C, and you want control, you want omnichannel, you want your ERP not to be a nightmare experience, you need to check out Fulfil. I'm running EDI, I'm running all of it through Fulfil - and it doesn't cost a million dollars.

Sean Frank, CEO at RIDGE
Read the full story
Sean Frank

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.

Automated Accounting

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.

Day 1

Customer pays at checkout

Stripe captures $106.23. Fulfil records as Stripe Gateway (asset) and reduces A/R

Day 3

Warehouse ships bag

Inventory moves to "Shipped Not Invoiced" clearing account at cost ($32)

Day 3

Shipment marked "Done"

Revenue recognized ($97.99), COGS recognized ($32), Sales tax recorded as liability ($8.24)

Day 5

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

Order #12345
Premium Product
Qty: × $
$
Discount (10% off)
-$
Subtotal
$
Sales Tax (5.5%)
$
Total Charged
$
Paid with Stripe

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

Deferred Revenue

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 & Refunds

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

General Ledger

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.

ASC 606 FRAMEWORK

How Fulfil Follows ASC 606 Automatically

ASC 606 requires 5 steps to recognize revenue. Fulfil handles all of them automatically.

1

Identify Contract

Customer completes Shopify checkout, pays via Stripe = binding contract

2

Performance Obligations

Products, shipping, gift wrapping = separate obligations you must fulfill

3

Transaction Price

Order total minus sales tax (which is pass-through, not revenue)

4

Allocate Price

Each line item gets its portion of the transaction price

5

Recognize Revenue

When you ship and mark "Done," control transfers to customer = revenue recognized

Audit-ready revenue recognition, automated

You just ship orders. Fulfil handles the accounting automatically while staying ASC 606 compliant.

How DTC Brands Use Revenue Recognition in Fulfil

1

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

2

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.

3

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.

4

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