revenue-recognition-accounting
Implement ASC 606 / IFRS 15 revenue recognition for subscriptions, bundles, and multi-element arrangements with deferred revenue tracking and journal entries
Best use case
revenue-recognition-accounting is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Implement ASC 606 / IFRS 15 revenue recognition for subscriptions, bundles, and multi-element arrangements with deferred revenue tracking and journal entries
Teams using revenue-recognition-accounting should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/revenue-recognition-accounting/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How revenue-recognition-accounting Compares
| Feature / Agent | revenue-recognition-accounting | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Implement ASC 606 / IFRS 15 revenue recognition for subscriptions, bundles, and multi-element arrangements with deferred revenue tracking and journal entries
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Revenue Recognition Accounting (ASC 606 / IFRS 15) ## Overview Revenue recognition determines when you can record revenue in your financial statements. Under ASC 606 (US GAAP) and IFRS 15, revenue is recognized when — or as — performance obligations are satisfied, not simply when cash is received. This matters enormously for subscriptions (revenue earned monthly even if billed annually), gift cards (revenue earned only on redemption), and bundled products (where a warranty component must be deferred). Getting revenue recognition right protects you from audit findings, builds investor trust, and ensures your financial statements accurately reflect business performance. This skill guides you through the practical setup of revenue recognition using your accounting system, platform integrations, and relevant apps. ## When to Use This Skill - When you sell subscription products (monthly boxes, replenishment subscriptions, memberships) - When you sell bundled offers (product + warranty + service in one SKU) - When you issue gift cards, store credit, or prepaid plans - When you recognize revenue from third-party marketplaces (Amazon, eBay) - When preparing GAAP or IFRS financials for investors, auditors, or a financing round - When building a data pipeline that automatically posts revenue recognition journal entries - When you need to separate recognized revenue from cash receipts in your financial model ## Core Instructions ### Step 1: Identify which revenue types require special treatment Most standard ecommerce product sales (order placed → shipped → delivered) are straightforward: recognize revenue at delivery. The complexity arises with these arrangements: | Revenue Type | Recognition Rule | Common Mistake | |-------------|-----------------|----------------| | **Physical product (single sale)** | Recognize at delivery (when control transfers to customer) | Recognizing at order placement instead of delivery | | **Subscription (annual or multi-month)** | Recognize ratably over the subscription period | Recognizing full annual payment in month 1 | | **Gift cards** | Recognize at redemption; handle unredeemed breakage separately | Recognizing at sale | | **Extended warranty** | Recognize ratably over the warranty period | Recognizing 100% at product shipment | | **Bundle (product + service)** | Allocate price across components; recognize each independently | Recognizing 100% at shipment of physical component | | **Buy Now Pay Later** | Recognize at delivery (BNPL provider pays you immediately; installment risk is theirs) | No special treatment needed; straightforward | | **Marketplace sales (as principal)** | Recognize gross revenue; record fees as cost of revenue | Net revenue recognition (agent treatment) when you control inventory | | **Marketplace sales (as agent)** | Recognize only your net commission | Gross revenue recognition when you do not control inventory | ### Step 2: Set up your accounting system for proper revenue recognition The right tool depends on your business complexity and accounting system: --- #### For subscription businesses **Shopify (subscription apps):** 1. Use **Recharge** or **Skio** for subscription management on Shopify — both apps create orders in Shopify for each billing cycle 2. Connect Shopify to **Xero** via A2X or to **QuickBooks** via Finaloop 3. In Xero, revenue from subscription orders is recognized when the order is created (each billing cycle) — for monthly subscriptions billed monthly, this is correct 4. For **annual subscriptions:** You need to spread the payment across 12 months. In Xero: - Create the invoice when the subscription starts (e.g., $120 annual) - Post the full $120 to a **Deferred Revenue** liability account - Each month, create a recurring journal entry: DR Deferred Revenue $10 / CR Subscription Revenue $10 - Use Xero's **Repeating Transactions** feature to automate this **QuickBooks Online approach for annual subscriptions:** 1. When annual payment received: create an invoice for $120, post to "Deferred Revenue" (liability account) 2. Create a recurring journal entry (monthly): DR Deferred Revenue $10 / CR Subscription Revenue $10 3. QuickBooks recurring transactions: **+ New → Journal Entry → Make recurring** **Dedicated revenue recognition tools:** - **Younium** or **Chargebee** (if using subscription billing): Both have built-in revenue recognition that automatically defers and releases subscription revenue on the correct schedule; export to accounting system - **Recurly + Sage Intacct**: For larger subscription businesses; Recurly handles billing, Sage Intacct handles automated GAAP-compliant revenue recognition --- #### For gift cards **Shopify:** 1. When a gift card is purchased, Shopify records it as a sale in the platform — but for accounting purposes, this is a liability (deferred revenue), not revenue 2. In your accounting system: post gift card sales to **Gift Card Liability** (liability account), not revenue 3. When a gift card is redeemed (applied to an order): transfer from Gift Card Liability to Revenue 4. **Breakage:** For gift cards that are never redeemed, recognize the expected breakage amount as revenue either: - Proportionally as cards are redeemed (preferred if you can estimate breakage reliably), OR - When redemption is considered remote (typically after 3–5 years of inactivity) 5. **Practical setup in QuickBooks/Xero:** Create a "Gift Card Liability" account; when the accounting integration posts a gift card sale, manually reclassify it to the liability account; when redeemed, reclassify to revenue **A2X for Shopify:** A2X allows you to configure how different Shopify transaction types post to your accounting system — set gift card sales to post to a deferred revenue account and gift card redemptions to post to a revenue account. --- #### For product bundles with warranties **Manual approach (most common for small-to-mid-size merchants):** 1. Determine the standalone selling price (SSP) of each component: - Product SSP: What you would sell it for without the bundle - Warranty SSP: What you would charge for the warranty alone (or estimate using cost-plus-margin) 2. Allocate the bundle price proportionally: ``` Example: Bundle = $150 (product + 1-year warranty) Product SSP: $130, Warranty SSP: $30, Total SSP: $160 Product allocation: $150 × ($130/$160) = $121.88 Warranty allocation: $150 × ($30/$160) = $28.12 ``` 3. Post journal entries: - At payment receipt: DR Cash $150 / CR Deferred Revenue $150 - At shipment: DR Deferred Revenue $121.88 / CR Product Revenue $121.88 - Monthly (over 12 months): DR Deferred Revenue $2.34 / CR Warranty Revenue $2.34 4. In QuickBooks/Xero: Create a **Deferred Revenue – Warranty** liability account for the warranty component; set up a recurring journal entry to release $2.34/month per warranty sold --- ### Step 3: Handle the physical product timing issue The most common revenue recognition error for ecommerce: recognizing revenue at order placement instead of delivery. **Under ASC 606:** For physical goods, revenue is recognized when the customer obtains control — typically at delivery, not at checkout. **Practical impact:** - Orders placed December 30 but delivered January 3 should be recognized in January, not December - If you have many orders in transit at period-end (year-end or quarter-end), this creates a timing difference **How to handle in practice:** For most merchants with short transit times (1–3 days), the difference between order date and delivery date is immaterial and auditors typically accept recognition at shipment. However, if you have: - Long transit times (>7 days) - Significant holiday rush shipping in late December - GAAP audited financials ...then you need to accrue for in-transit revenue: 1. At period-end, pull a list of all shipped but undelivered orders (from your shipping carrier or ShipStation) 2. Calculate their total value 3. Record a journal entry: DR Revenue / CR Deferred Revenue – In Transit (for the in-transit amount) 4. Reverse the entry on the first day of the next period ### Step 4: Set up deferred revenue tracking Maintain a running deferred revenue balance to verify your accounting is correct. **Monthly deferred revenue reconciliation (in a spreadsheet):** ``` Opening Deferred Revenue Balance + New deferrals this month (gift cards sold + subscription annual billings + warranty components) - Revenue released this month (gift card redemptions + monthly subscription recognition + warranty releases) - Refunds/cancellations = Closing Deferred Revenue Balance Should equal: Deferred Revenue balance on your balance sheet ``` If the calculated balance does not match your balance sheet, there is a missing journal entry. **Review checklist each month:** - [ ] All gift card sales posted to liability account (not revenue) - [ ] Monthly subscription revenue recognition journal entries posted - [ ] Warranty component deferrals released for the month - [ ] In-transit accrual reversed from prior month; new in-transit accrual posted - [ ] Deferred revenue reconciliation ties to balance sheet ### Step 5: Principal vs. agent determination for marketplace revenue If you sell through Amazon, eBay, or other marketplaces, determine whether you are a principal or an agent: **You are a principal if:** - You control the inventory before it is transferred to the customer (i.e., Amazon FBA inventory is yours) - You bear inventory risk (unsold items are your problem) - You set the selling price → Recognize **gross revenue** (full selling price); record Amazon fees as cost of revenue **You are an agent if:** - A third party controls the inventory - The marketplace sets the price or has primary pricing authority - You earn a commission only → Recognize only your **net commission** Most Amazon FBA sellers are principals and should recognize gross revenue. If you are unsure, consult your accountant. ## Best Practices - **Automate deferred revenue releases** — build recurring journal entries in QuickBooks or Xero for all subscription and warranty revenue recognition; monthly manual entries will be missed eventually - **Maintain a contract obligation register** — for any bundle or subscription with multiple performance obligations, maintain a spreadsheet tracking the allocated price, recognition schedule, and amount remaining - **Separate revenue accounts by obligation type** — use distinct GL accounts for product revenue, subscription revenue, warranty revenue, and gift card redemptions; simplifies disclosure and audit support - **Reconcile deferred revenue to cash receipts monthly** — the ending deferred revenue balance should reconcile to cash received less revenue recognized; any gap indicates missing journal entries - **Document your SSP methodology** — auditors will ask how you determined standalone selling prices; use observable market prices where available and document the approach for every bundle type - **Apply a variable consideration constraint for returns** — based on historical return rates by category, reduce recognized revenue at delivery by expected returns; record a refund liability for the expected return amount ## Common Pitfalls | Problem | Solution | |---------|----------| | Revenue recognized at checkout instead of delivery | For physical goods, recognize when the carrier marks the shipment as delivered; post a deferred revenue entry at order placement and recognize at the delivery trigger event | | Full bundle price recognized at shipment | Split the bundle price across performance obligations using SSPs; defer the warranty/service component and release ratably over the service period | | Gift card revenue recognized at sale | Gift card revenue is a deferred liability until redemption; post to a liability account at sale; recognize at redemption | | Subscription prorations done by calendar month instead of by day | Mid-month subscription starts should be recognized pro-rata by exact days, not calendar month; a subscription started on the 15th of a 30-day month recognizes 16/30 of the monthly fee in month 1 | | Not reassessing variable consideration (returns) each period | Return rates change over time; re-estimate expected returns monthly and record a catch-up adjustment in the current period | | Recording Amazon payout net of fees as revenue | If you are a principal on Amazon, record the full selling price as gross revenue and Amazon's fees as cost of revenue/selling expenses separately | ## Related Skills - @financial-reporting-dashboard - @financial-analytics-dashboard - @cash-flow-forecasting - @marketplace-fee-reconciliation
Related Skills
wishlist-save-for-later
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
storefront-theming
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
search-autocomplete
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
responsive-storefront
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion
recently-viewed-products
Show shoppers the products they recently browsed using browser storage so they can easily pick up where they left off on your store
quick-view-modal
Let shoppers preview product details and add items to cart from the listing page without navigating away, reducing friction in the shopping flow
product-page-design
Design high-converting product detail pages with image galleries, variant selectors, social proof, and clear calls-to-action that drive add-to-cart
product-comparison
Let shoppers select multiple products and compare them side-by-side in a table with highlighted differences to help them make the right buying decision
mega-menu-builder
Build a rich navigation mega menu with product images, category highlights, featured banners, and keyboard-accessible dropdowns for large catalogs
image-zoom-360
Boost product confidence with high-res image zoom, 360-degree spin views, and inline video so shoppers can examine products closely before buying
faceted-navigation
Let shoppers filter products by multiple attributes simultaneously with URL-shareable filter state, instant results, and mobile-friendly controls
accessibility-commerce
Make your store usable by everyone with WCAG 2.1 AA compliance — screen reader support, keyboard navigation, and accessible cart and checkout flows