Solutions \u00b7 Revenue recognition
Watch one contract become a journal entry.
Fourteen pages of prose, the five ASC 606 steps, and one entry at month end. Here is every stage in between \u2014 including the one where it stops and waits for you.
Stage one
First, it reads the document.
Three passes, not one. The first reads the contract and records what it finds. The second writes the ASC 606 determination from those recorded facts — not from the document. Contracts that trip a flag escalate to a third, more capable pass.
Splitting the reading from the reasoning is deliberate: the step that interprets never sees the raw prose, so it cannot quietly invent a term that was not extracted.
Scanned, image-only PDFs are rejected with a message asking you to OCR and retry — the engine does not guess at pixels.
Order form · CON-0007
- term
- 12 months
- commencement
- Effective Date
- element
- Platform licence
- element
- Implementation services
- consideration
- 53,000.00 USD
- billing
- annual, in advance
Illustrative — not a customer contract
ASC 606
Then it works the five steps.
Not a summary of them — the five the standard actually specifies, in order, each producing something you can read and disagree with.
Step four is the one people assume is automatic. It is not: the proposed allocation is checked against a deterministic allocator running decimal arithmetic, and a divergence past five cents becomes a judgment you have to answer.
Step 1: Identify the contract
CON-0007 · executed · 12-month term
Step 2: Identify the performance obligations
2 obligations · 1 over time, 1 point in time
Step 3: Determine the transaction price
53,000.00 USD · no variable component
Step 4: Allocate the price
48,000.00 · 5,000.00 · residual ties to 0.00
Step 5: Recognize as obligations are satisfied
12 monthly periods · 4,000.00 / mo
Held
Then it stops.
Nothing has posted. Nothing has been created in your ledger, because at this point no contract record exists at all — what exists is a proposal: the determination, the judgments behind it, the paragraphs it turned on, and the alternative it weighed and set aside.
It waits there for a person with the authority to approve it. Approve it, change it and certify your version, or reject it with a reason that stays on the record. Only then does a contract exist.
The accounting judgment stays yours. The engine does the arithmetic and keeps the evidence.
- Proposed treatment
- 2 obligations · ratable + point in time
- Judgments raised
- 1 · allocation within tolerance
- Citations attached
- 606-10-25 · 606-10-32 · 606-10-55
- Posted to your ledger
- nothing
After you approve
Now it’s a schedule.
Twelve periods, derived from the treatment you approved. The waterfall is recomputed from the contract and its approved template every time you open it — there is no stored number to drift out of agreement with the contract.
The rounding residual lands on the last period, so the schedule ties to the transaction price exactly rather than to within a cent.
Twelve equal monthly recognition periods of 4,000.00 US dollars for the platform licence, plus 5,000.00 recognised at go-live for implementation.
- Platform licence
- 48,000.00
- over time
- Implementation
- 5,000.00
- at go-live
- Residual
- 0.00
- ties exactly
Month end
One entry, and a person who posts it.
At month end the engine drafts the recognition entry from the approved treatment and queues it for review. Approving it does not send it anywhere.
By default the month posts as a single consolidated entry, and someone holding posting rights — re-authenticated — is the one who posts it. Two people, two moments, both on the record.
- Prepared for QuickBooks, with your chart-of-accounts codes resolved onto the lines
- A posting key makes a retry a no-op, so a re-run cannot double-post
- Posted entries are read back daily and any drift is reported, never silently repaired
| Account | Debit | Credit |
|---|---|---|
| Deferred revenue | 4,000.00 | — |
| Revenue — subscription | — | 4,000.00 |
Illustrative. The consolidated month pools one deferred-revenue debit against a revenue line per contract.
Order form · CON-0007
- term
- 12 months
- commencement
- Effective Date
- element
- Platform licence
- element
- Implementation services
- consideration
- 53,000.00 USD
- billing
- annual, in advance
Illustrative — not a customer contract
Step 1: Identify the contract
CON-0007 · executed · 12-month term
Step 2: Identify the performance obligations
2 obligations · 1 over time, 1 point in time
Step 3: Determine the transaction price
53,000.00 USD · no variable component
Step 4: Allocate the price
48,000.00 · 5,000.00 · residual ties to 0.00
Step 5: Recognize as obligations are satisfied
12 monthly periods · 4,000.00 / mo
- Proposed treatment
- 2 obligations · ratable + point in time
- Judgments raised
- 1 · allocation within tolerance
- Citations attached
- 606-10-25 · 606-10-32 · 606-10-55
- Posted to your ledger
- nothing
Twelve equal monthly recognition periods of 4,000.00 US dollars for the platform licence, plus 5,000.00 recognised at go-live for implementation.
- Platform licence
- 48,000.00
- over time
- Implementation
- 5,000.00
- at go-live
- Residual
- 0.00
- ties exactly
| Account | Debit | Credit |
|---|---|---|
| Deferred revenue | 4,000.00 | — |
| Revenue — subscription | — | 4,000.00 |
Illustrative. The consolidated month pools one deferred-revenue debit against a revenue line per contract.
Every figure, traceable
Click a number. Watch it prove itself.
Lineage / CTR-2041
Monthly revenue · Acme Cloud
MAY 2026 · $4,000.00
01 · Contract
CTR-2041
Acme Cloud · $53,000 · signed order form · 2 performance obligations
02 · Approval
APR-118
Treatment V1 · controller approved · rule signature verified
03 · Schedule
SCH-2041
Row 03 / 12 · $4,000.00 · deterministic execution
04 · Journal entry
JE-1074
DR deferred revenue · CR revenue · $4,000.00
05 · QuickBooks
QBO JE #3291
Posted after approval · linked to JE-1074
What's in the box
Recognition your auditor can retrace.
Drafted treatments, with their reasoning
Every proposal carries ASC citations, a confidence read, and the alternative it weighed — persisted as a judgment record before anything executes.
Penny-perfect allocation
All money math runs in decimal arithmetic, and the rounding residual lands on the last element — so schedule totals tie to the transaction price exactly.
Contract modification math
Upgrades, downgrades, and cancellations recalculate through the same review. You see the reworked schedule before it takes effect, never after.
Versioned, immutable templates
The rule the engine runs is the exact version you approved. New versions supersede old ones; nothing is edited in place.
Certification that pins the version
Certifying refuses unless the determination's content hash still matches the version you were reading — you cannot approve one analysis and ship another.
Period locking
Hard-closed periods reject edits at the database layer. Corrections land in the next open period as reversals, the way your auditor expects.
Start with one signed contract.
See the treatment, the waterfall, and the prepared entry before you connect your GL \u2014 sample contracts included.