Cash received up front is a liability, not revenue; you recognize it as you perform the service, splitting it by the period the work happens rather than when the money arrived.
- Record the full payment as a liability first, then move pieces of it to revenue as you perform the service
- Split revenue by the period the work happens, not the period the money arrives
- Track the obligation by customer, keyed to each service schedule
- Journal entries at payment, then at each service date, keep your books clean
- Back-dated catch-up entries are how small timing errors become month-end surprises
The core problem
A customer pays you up front for a service that stretches into next year. Your bank balance shows the full amount today. Your books should not.
Cash arriving early is not revenue yet. You owe the customer the service. That obligation sits on your balance sheet as a liability until you do the work. The moment you perform part of the service, that part becomes revenue. The rest stays a liability.
Split that timing correctly, and your monthly close tells the truth. Get it wrong, and you overstate revenue in one period and understate it in the next. Lenders, tax preparers, and anyone reading your P&L will see numbers your operation does not actually support.
This post walks through the mechanics with a worked case, the journal entries behind it, and the checks you run before you lock the month.
Key takeaways
- Cash in the door is not revenue. Record the full payment as a liability first, then move pieces of it to revenue as you perform the service.
- Split revenue by the period the work happens, not the period the money arrives. A payment spanning two years means revenue in both years, each tied to its own service dates.
- Track the obligation by customer, keyed to each service schedule. One undifferentiated liability line hides which customers still have service coming.
- Journal entries at payment, then at each service date, keep your books clean. Back-dated catch-up entries are how small timing errors become month-end surprises.
- Large companies face the same mechanics at scale. In one fourth-quarter report, Amazon carried $4.8 billion in unearned revenue, most of it from Amazon Web Services, an increase from prior quarters, according to Business Insider's coverage cited in OpenStax Principles of Financial Accounting, Section 12.1.
Who this is for
You run or manage a shop that collects payment before the work is finished. You close your books every month. You want the prepaid balance and the revenue line to match what actually happened on the floor.
That includes repair shops on prepaid maintenance plans, salons and studios selling multi-session packages, contractors collecting a deposit against a schedule, and any business that books a customer for a run of visits or orders paid in advance.
If you never take money before you perform, this does not apply. If you do, the pattern below is your monthly routine.
How a prepaid schedule becomes two years of revenue
The clearest way to see the split is a concrete case.
A customer prepays for a service plan covering three treatments on a set schedule. The plan includes a treatment in November 2019, February 2020, and April 2020, as set out in OpenStax Section 12.1.
The customer prepaid the service on October 15, 2019, and all three treatments occur on the first day of the month of service.
The plan price allocates $40 in revenue to each of the three treatments.
Here is how the earned amount falls across the two years:
| Treatment date | Year earned | Revenue recognized |
|---|---|---|
| November 2019 | 2019 | $40 |
| February 2020 | 2020 | $40 |
| April 2020 | 2020 | $40 |
Because part of the service will be provided in 2019 and the rest in 2020, you need to be careful to keep the recognition of revenue in its proper period.
If all of the treatments occur, $40 in revenue is recognized in 2019, with the remaining $80 recognized in 2020.
Three things follow from that split.
The payment date does not drive revenue. The customer paid on October 15, 2019, yet no revenue lands in October. The money is in your account. The work has not started. Your books show cash up and a liability up, with revenue untouched.
Each service date releases its own slice. The November treatment earns $40 in 2019. February earns $40 in 2020. April earns $40 in 2020. Nothing waits for a year-end true-up if you book on time.
The remaining balance always tells the truth. After October, your liability for this customer equals the full plan price. After November, it drops by $40. After February, another $40 leaves. After April, the balance reaches zero because all service is delivered.
That running balance is what you check at close. If it does not match the treatments still owed on the schedule, stop and reconcile before you post.
Worked example: one plan, three treatments
A customer prepays a three-treatment plan on October 15. The plan allocates $40 to each treatment. No revenue in October. The November treatment earns $40, so 2019 revenue is $40. The February and April treatments each earn $40, so 2020 revenue is $80. After April the unearned balance is zero. One payment, two years of revenue, split by service date.
The journal entries that make the split work
Entries carry the logic. Two moments matter: payment and each service date.
At payment on October 15, 2019, you receive cash and owe service. The entry records the prepayment of future services against a liability. In plain form: debit cash for the full amount, credit a liability for unearned service for the full amount. No revenue yet.
At each service date in 2019, you perform the treatment and earn its slice. Debit the unearned service liability by the amount earned. Credit revenue for the same amount. The liability shrinks; revenue grows.
At each service date in 2020, you repeat the same pattern for that treatment's slice. Debit unearned service, credit revenue, again for the amount tied to that treatment.
OpenStax Section 12.1 presents these in sequence: first the entries for the prepayment and the revenue earned in 2019, then the entries for the revenue earned in 2020.
Notice what the entries never do. They never debit cash a second time. Cash moved once, on the payment date. Everything after that is a reclassification between liability and revenue.
If your system books the whole payment straight to revenue on October 15, you have recognized service you have not provided. Your 2019 revenue is too high. Your liability is missing. Your 2020 revenue will be too low unless you reverse it later, and reversals at year-end are how audits get long.
What sits on your balance sheet
A prepaid plan spanning two years straddles that test. The portion tied to service dates inside the next twelve months sits with current liabilities. The portion tied to later service dates sits beyond it.
Plans that run longer need you to look at each remaining service date and place the obligation accordingly. Ask your accountant how your specific plan terms should be classified if the schedule reaches past a year.
Your balance sheet at close should show the cash received and the unearned liability still outstanding. Revenue recognized to date appears on your P&L. Cash minus unearned liability equals cumulative revenue for that plan. If that equation fails, a posting is missing or mistimed.
Running the split in your monthly close
The mechanics above work only if they happen on schedule. Here is the monthly rhythm that keeps the split accurate.
Before the month opens, pull your list of active prepaid plans with remaining service dates. Confirm each schedule is current. A customer who cancelled, rescheduled, or added a visit changes the split. Catch that before any entries post.
During the month, post revenue on the service date, not at month-end batch. Same-day posting means the liability and revenue move together. Month-end batch posting lets mid-month errors pile up and hides which treatment triggered which entry.
At close, verify the unearned balance. Sum the unearned amount still owed for remaining service on every active plan. That total should equal the unearned liability on your books. Differences point to a treatment performed without an entry, an entry posted twice, or a schedule that changed without an update.
Reconcile cash once. The payment side should already match your bank. If it does not, the problem sits upstream of the revenue split and needs fixing first.
Document anything unusual. A mid-plan price change, a refunded visit, or a paused schedule all alter the remaining allocation. Note the reason next to the entry so next month's close does not re-litigate it.
Shops that run this rhythm find the year-end split takes care of itself. The final day of the year is just another service date boundary. Revenue earned through that date sits in the current year. Everything scheduled after it carries forward as unearned.
Getting the timing wrong
Most errors are timing errors, and they share a few shapes.
Recognizing everything at payment. The full plan hits revenue the day the customer pays. The current period looks strong. The next period looks weak. Neither matches the work you did.
Recognizing everything at delivery of the final service. The opposite mistake. Revenue piles up in the last month while earlier months understate performance. Your monthly trend becomes meaningless.
Recognizing on cash collection inside the period instead of by service date. If two customers pay in the same month for schedules starting months apart, lumping them together blurs the split. Track by plan and service date, not by deposit batch.
Letting the liability drift. Entries posted for some treatments but not others leave the unearned balance higher or lower than the work still owed. The gap grows quietly month over month.
Each of these shows up in the same place: the unearned liability no longer equals the remaining service schedule. That is why the close check matters more than any single entry.
Related guides
Questions owners ask
Do I owe tax on money I have not earned yet? The cash sits in your account, but for bookkeeping it is not revenue. Your tax preparer works from your books. Confirm with them how the prepaid balance and recognized revenue flow into your filing, since the answer depends on your overall situation.
What if a customer never uses the remaining services? Unused service still sits as a liability until you address it. Options include honouring the plan, negotiating a revised schedule, or refunding. Whichever path you choose, record the outcome so the liability clears and your close stays clean.
Can I move the whole plan to revenue once the customer agrees to a start date? No. Agreement to a start date is not performance. Revenue follows the treatments you actually deliver on their scheduled dates.
What if service dates shift mid-plan? Update the schedule, then post revenue at the new dates. The total earned across the plan does not change, only the periods that receive it.
How does this look at a larger scale? The same principle scales up. In one fourth-quarter report, Amazon reported $4.8 billion in unearned revenue, with most of that contribution coming from Amazon Web Services, an increase from prior quarters, as cited in OpenStax Section 12.1. Different size, identical logic: money in, service owed, revenue released as the work happens.
Try this today: pull one prepaid plan
Pick a single active prepaid plan from your books. Write down its remaining service dates and the unearned amount still recorded for that customer. Subtract the revenue already recognized. If the two figures do not match the service still owed, you have found a posting to fix before this month's close.
Pre-close checklist
Run this before you lock the month.
- Schedules current. Every active prepaid plan has accurate remaining service dates.
- Entries on service dates. Each treatment performed this month has a matching entry releasing its slice.
- Unearned balance ties. The liability on your books equals the sum of service still owed across all plans.
- Cash reconciled. Bank balance matches recorded records for the period.
- Two-year plans split by year. Any plan crossing a year boundary has revenue assigned to the correct year by service date.
- Changes documented. Refunds, pauses, price changes, and reschedules have a note explaining the adjustment.
- No revenue on payment date. Nothing posted to revenue solely because cash arrived.
Work the list in order. An out-of-balance unearned account found early is a quick fix. The same gap found at year-end costs an afternoon and a lot of confidence.