Your business might not need full-scale revenue recognition automation just yet, but that doesn’t mean compliance has to be a burden.
This comprehensive guide is designed for businesses with lower transaction volumes, offering a meticulous guide to manually tracking your revenue recognition. We’ll show you how to leverage Synder Sync as your reliable source of truth for transaction data and ensure accuracy and compliance with essential standards like ASC 606 (U.S. GAAP) and IFRS 15.
It all comes down to one key idea: recognize revenue when the customer gets what they paid for, not when the money hits your account. Here’s how that works in practice.
How to create a revenue recognition schedule
So, you’re running a business that sells subscriptions, or maybe you’ve got long-term service gigs. You get paid, but you haven’t actually delivered all the goods or services yet. That’s exactly why you need a revenue recognition schedule. You might hear it called a waterfall schedule or a deferred revenue waterfall.
The schedule tracks how the upfront cash: “unearned” or “deferred” revenue, gradually becomes “earned” or “recognized” revenue as you deliver the product or service. This schedule effectively bridges the timing difference between when you receive payment and when you actually deliver the goods or services to the customer, aligning your financials with GAAP and IFRS 15.
We’re going to show you how to build one now. Grab a spreadsheet (Excel’s usually the go-to) and let’s dive into how to set up a solid revenue recognition schedule!
1. Gather your key data inputs
Before you begin constructing the schedule, you’ll need comprehensive information for each contract or specific performance obligation that will be recognized over time. This data is the foundation of your waterfall.
This includes:
- A unique Contract/Invoice ID (e.g., “C001-PO-02”)
- A description of the good or service (e.g., “12-Month SaaS Subscription”)
- Customer name
- Start date and end date of the performance obligation
- Total allocated transaction price for each obligation
- Recognition method
While some of these items, like customer name or contract ID are pretty self-explenatory, the two last concepts can cause confusion, so let’s take a moment to clarify them.
Total allocated transaction price
The total allocated transaction price is just the amount your company expects to earn for delivering a specific part of what you promised in a contract—what accountants call a “performance obligation.”
Here’s a breakdown:
- Transaction price: This is the grand total of what you expect to get paid from a customer for everything you’ve promised them in a contract. It could be a set price, or it might change a bit based on things like discounts, bonuses, or even penalties.
- Performance obligation: A performance obligation is a specific promise to transfer a good or service to a customer. It can also be explained as a product or item included in a particular invoice. A single contract might have multiple performance obligations. For example, a software contract could include a software license (one performance obligation) and ongoing support services (another performance obligation).
Note: In practice, it’s not always necessary to break down invoices into every individual item. In some cases, especially if you don’t track individual products or services in your accounting system or don’t need that level of detail for tax reporting, it may be easier to recognize the invoice as a whole. This is especially true when the invoice represents a single, clearly defined performance obligation. |
- Allocation: When a contract bundles several promises, you can’t treat the payment as one big pot. Split it among the specific performance obligations instead. A good rule of thumb: price each product or service as if you were selling it on its own, then use those standalone prices to apportion the revenue so every promise gets the share that matches its real value.
So, the total allocated transaction price for one specific performance obligation is simply the part of the overall contract’s value that’s tied to that particular good or service. And that’s the exact amount you’ll eventually record as revenue once you’ve actually delivered on that promise.
Example: Imagine “Software Solutions Inc”. signs a contract with a client for $10,000. This contract includes a software license and one year of support services. |
Software Solutions Inc. needs to split the $10,000 between these two parts based on what they’d charge if sold separately:
- The software license is valued at $8,000.
- The one year of support services is valued at $2,000.
So:
- The total allocated transaction price for the software license is $8,000.
- The total allocated transaction price for the support services is $2,000.
This ensures revenue is recorded accurately for each specific promise made in the contract.
Recognition method: Time elapsed (ratable)
The recognition method dictates when and how the allocated transaction price for a performance obligation is recognized as revenue in your financial statements.
Revenue can generally be recognized in two main ways:
- At a point in time: This is for goods or services where control is transferred to the customer at a specific moment. For instance, when a customer buys a physical product, the revenue is typically recognized when they receive the product.
- Over time: This method is best for services where the customer is benefiting from what you’re doing continuously, as you’re doing it. It’s the recommended method to use if you’re running a SaaS company or other subscription businesses. For example, if someone signs up for a year of your software, they’re using it every day of that year. So, instead of recognizing all the revenue upfront, you spread it out over the entire year as they continue to use and benefit from your service.
Time elapsed (ratable) is a common “over time” recognition method, particularly for subscription-based services like SaaS or maintenance contracts. In these scenarios, the customer benefits from the service throughout the contract period. For example, with a 12-month SaaS subscription, the customer has access to and uses the software for all 12 months.
This approach ensures that the revenue you’re reporting matches up with when you’re actually providing the service. It gives you a much clearer and more accurate picture of how your business is truly performing over time, rather than making it look like you earned a huge lump sum of cash all at once (which isn’t really the case if you’re providing an ongoing service!).
Helpful tip: Synder Sync automates the initial capture of contract data. By integrating with your sales platforms (like Stripe or Square), it automatically brings transaction details, customer information, and sales amounts directly into your accounting system. It takes the hassle out of manually logging every new contract and makes sure the key details for revenue recognition are accurate and ready to go from day one. You’ll have a digital record of every sale, which serves as your “contract” source data. Additionally, QuickBooks offers a revenue recognition module, particularly within QuickBooks Online Advanced, which can automate the tracking and entry of deferred revenue. This helps businesses accurately recognize revenue over time without manual spreadsheet work, ensuring compliance with accounting standards and providing a clearer financial picture.
2. Set up your spreadsheet
Now, let’s dive into setting up your spreadsheet. You’ll need to design your Excel sheet with a clear, logical structure to house all the essential data.
Start your sheet with columns to capture the most important information for each performance obligation. Let’s look at this data in columns A through H:

Starting from the next available column (e.g., Column I), create a column for each month for the foreseeable future (e.g., 12-24 months or more, covering all your active contracts).
- Row 1 (Headers): Enter the start date of each month as the column header (e.g., 2025-03-01 etc.). Format these cells to display as MMM YYYY (e.g., “Mar 2025”).
3. Implement formulas for revenue recognition
Now, we get to the heart of your waterfall: figuring out exactly how much revenue from each obligation to recognize each month.
To ensure accuracy, especially since contracts don’t always start on the first of the month, we recommend using the daily ratable method, which is a way to spread out revenue recognition for a service or subscription evenly, day by day, over the exact duration of the contract.
Instead of recognizing a lump sum of revenue each month, it calculates a daily rate (Total Contract Value / Total Days in Contract). Then, for each month, you recognize revenue by multiplying that daily rate by the actual number of days the service was active within that specific month.
Now, let’s see how it looks in practice.
In the first monthly column cell in your Excel spreadsheet (e.g., I2 for March 2025 revenue for the first contract), enter the following formula:
=IF(AND($C2<=EOMONTH(I$1,0),$D2>=I$1),(MIN(EOMONTH(I$1,0),$D2)-MAX(I$1,$C2)+1)*$G2,0) |
Explanation of the formula components:
- I$1: Refers to the first day of the month for the current column (e.g., March 1, 2025). The $ locks the row, allowing you to drag horizontally.
- $C2: The Start Date of the performance obligation. The $ locks the column, allowing you to drag vertically.
- $D2: The End Date of the performance obligation.
- $G2: The Daily Rate of revenue recognition.
- EOMONTH(I$1,0): Returns the last day of the month of the current column (e.g., 2025-03-31). This helps define the end of the recognition month.
- AND(C2<=EOMONTH(I1,0),D2>=I1): This is the core condition that checks for any overlap between the contract’s period and the current recognition month.
- $C2<=EOMONTH(I$1,0): Ensures the contract’s start date is on or before the end of the current month.
- $D2>=I$1: Ensures the contract’s end date is on or after the beginning of the current month.
- If both conditions are true, there is an overlap, and the formula proceeds to calculate revenue for the overlapping days. If there’s no overlap, the formula returns 0.
- MIN(EOMONTH(I$1,0),$D2): Determines the actual end date of the recognition period within the current month. It picks the earlier of the month’s last day (EOMONTH(I$1,0)) or the contract’s end date ($D2). This caps recognition at the contract’s end.
- MAX(I$1,$C2): Determines the actual start date of the recognition period within the current month. It picks the later of the month’s first day (I$1) or the contract’s start date ($C2). This ensures recognition only starts from the contract’s actual beginning.
- (…) – (…) + 1: Calculates the number of days between the determined start and end dates within the overlapping period. Adding +1 includes both the start and end days.
- * $G2: Multiplies the calculated number of days by the Daily Rate to determine the total revenue recognized for that specific month.
Apply the formula:
- Then, drag the formula down for all other contracts/obligations you’ve listed.
- Drag the formula across all the monthly columns for the first contract/obligation.

Click here to view the Excel spreadsheet template and explore the formulas in action.
4. Create summary rows and columns
These summary sections are incredibly important. They give you instant insights into your total recognized revenue and help you keep a close eye on your deferred revenue balance.
Total recognized revenue per month:
- Add a new row at the bottom of your waterfall (e.g., Row 100).
- In each monthly column, use a SUM formula to add up all the recognized revenue amounts for that specific month: =SUM(I2:I99). Drag this across.
- Record the resulting totals in your accounting system for each period.
Total recognized per contract (optional, for verification):
- Add a new column after your last monthly column (e.g., Column AZ).
- In this column, sum up the total recognized revenue for each individual contract/obligation: =SUM(I2:AY2) (adjust range to your last month).
- Verify: The value in this column for each row should ideally equal the Total Value to Recognize (Column E) for that same row, indicating all revenue has been properly allocated and scheduled.
Deferred revenue balance (needed for balance sheet reconciliation):
- Track it in a separate section of your schedule or a linked summary tab.
- Identify the starting Deferred Revenue Balance (Beginning of Period).
- Create a row for New Deferred Revenue Bookings.
- Create a row for Total Monthly Recognized Revenue (linked directly from the summary row calculated above).
Formula for the end-of-month deferred revenue:
Deferred Revenue (End of Month) = Deferred Revenue (Beginning of Month) + New Deferred Revenue Bookings – Total Monthly Recognized Revenue |
By carrying this balance forward month-to-month, you’ll have an accurate, real-time reflection of your deferred revenue liability.
5. Post manual journal entries
This is where all your hard work on the spreadsheet comes to life in your accounting system (like QuickBooks Online or Xero). It’s how you officially record the revenue you’ve earned.
You’ll typically make two types of journal entries.
Initial entry (when cash is received / invoice issued)
This entry is recorded right when your customer pays you (or when you issue the invoice and have the right to get paid). At this point, you’ve received the money, but you haven’t delivered all the services yet, so it’s not yet earned revenue.
The accounting impact:
- Debit: Bank account/accounts receivable (This increases your cash in the bank or records that a customer owes you money.)
- Credit: Deferred revenue (This increases a liability account called “Deferred Revenue.” Think of it as a promise to your customer: you owe them the service, so it’s a liability until you’ve delivered it.)
Periodic (e.g., monthly) revenue recognition entry
This is the main event! At the end of each accounting period (usually monthly), you’ll use your waterfall schedule to tell your accounting system exactly how much revenue you did earn during that period.
Look at the “Total Recognized Revenue per Month” row you created in your waterfall schedule. This row is your single source of truth for the amount to recognize.
The accounting impact:
- Debit: Deferred revenue (You’re reducing that “promise” liability, because you’ve now delivered a portion of the service. This moves the money out of the unearned bucket.)
- Credit: Sales revenue (Or whatever specific income account you use for your core services. This is where you actually record the revenue you’ve earned in that period, increasing your income.)
By diligently following these steps, you can create and maintain a compliant and accurate manual revenue recognition schedule, even for lower transaction volumes, ensuring your financial statements reflect earned revenue correctly.
Final thoughts
With this guide, even small businesses handling more transactions can tackle revenue recognition without feeling overwhelmed.
By carefully keeping tabs on your promises (those performance obligations) and using a simple spreadsheet, you’ll make sure your books truly show the money you’ve actually earned, not just when cash landed in your bank account. This smart way of doing things not only helps you stay compliant with important accounting rules like GAAP and IFRS 15, but it also gives you a much clearer look into how well your business is really doing, setting you up for growth.
Before you go: when your subscription volume grows and manual tracking becomes more of a burden than a process, it might be time to upgrade. Synder RevRec is built to handle high-volume subscriptions and complex recognition scenarios with ease. For Stripe–QuickBooks Online users, it offers a direct connection, syncing transaction data automatically and applying your recognition rules in real time. For all other platform combinations, you can easily import your data via Excel. Either way, Synder RevRec helps you generate audit-ready schedules, stay compliant, and save hours, so you can focus on growing your business.