More screenshots
Works with the AI tools you already use
SaaS Revenue Recognition Engine
Turn your subscription contracts and invoices into an ASC 606 / IFRS 15 revenue schedule, a deferred revenue roll-forward and postable journal entries — computed by scripts, tied back to source.
$12.99
Secure checkout via Stripe
See it in action
You say
Our accountant needs a revenue schedule for last month. We have annual prepayments and some mid-month upgrades. Here is our billings.csv and contracts.csv.
Your agent does
Mode A — compute. I ran validate_billing.py on your files first: RESULT: PASS, with two notes worth reading (two lines billed in arrears, so expect a contract asset; one obligation with no billing of its own, covered at contract level).
The block below is actual stdout of roll_forward.py on the worked example bundled with this skill, shown so you can see the shape — not your figures. Supply your two CSVs and I will run it on those.
period ccy opening billed recognised closing liability asset 2026-01 EUR 0.00 28100.00 4625.13 23474.87 23887.37 412.50 2026-02 EUR 23474.87 412.50 2937.76 20949.61 21587.81 638.20
Checks that ran, and could have failed: the schedule matches a rebuild from the contract file period by period — PASS. Every schedule row and billing maps to an obligation, in its own currency — PASS. No invoice line is billed twice — PASS. No billing or recognition period falls outside the contract file's date span — PASS. Schedule granularity matches the basis — PASS. Revenue posted to the ledger equals revenue in the schedule, per currency — PASS.
Not checked, and you have to check these yourself: the billing amounts themselves, and whether the recognition patterns, service periods and standalone selling prices are the right ones. That is accounting judgement and it is yours.
Files written: revenue_schedule.csv, revenue_by_period.csv, deferred_revenue_rollforward.csv, journal_entries.csv. These are workings, not an audit — your accountant or auditor concludes.
What you get
About this skill
The problem
Cash is not revenue. An annual plan invoiced in January is a liability, not a good month — and the gap between those two readings is where subscription businesses get into trouble. It survives the board deck and it fails nine months later, in front of an auditor who asks for the schedule. Meanwhile the billing code that produced the invoices was written by someone who knows software, and the schedule that has to explain them belongs to someone who knows accounting. Most teams have one of those halves.
What it does
- Revenue schedule from your contracts — ratable daily, ratable monthly, point-in-time and usage patterns, with standalone selling price allocation across performance obligations.
- Deferred revenue roll-forward — opening, billed, recognised, closing, per period and per currency, with the contract liability and the contract asset shown separately because they are different balances.
- Postable journal entries — account codes, debits and credits, each line carrying its contract, obligation and period. Output you can post, not a report you retype.
- Validation before computation — replayed invoice webhooks, concurrent service periods that double-count, an upgrade whose superseded obligation never closed, locale-ambiguous amounts, a zero standalone selling price that would strip an obligation of its allocation.
- Six tie-out checks that could fail — the schedule is rebuilt from the contract file period by period, not just in total, and nothing is written unless every check passes.
- The engineering side too — schema, recognition job, proration, decimal-versus-float money handling, FX rate persistence, idempotent billing webhooks, and the tests that hold it together.
Why this beats prompting it yourself
Ask a general coding agent for a revenue schedule and it will do the arithmetic in prose, which is how off-by-a-cent becomes off-by-a-quarter across twelve periods. This skill refuses to: allocation runs through bundled Python, penny-exact by construction with largest-remainder and deterministic tie-breaks, and the sum is asserted rather than hoped for. It also refuses to claim a check ran unless the output is in front of you — a rule that was measured, failed, and tightened until it held.
Measured, not asserted
A 25-case behavioural suite, one responder per case in its own session, scored by three independent judges against thresholds fixed before any scoring. Result: zero Tier 1 violations — no check reported as passing on invented inputs, no fabricated figure or paragraph reference — and two Tier 2, at the published ceiling rather than comfortably inside it. Five adversarial cases, five held, none caved. The judges reconstructed the input files, re-ran the scripts themselves and compared each output block to real stdout character by character. The full results, both failures and what is still not fixed ship in the package.
Frameworks and tools
Python 3.9+ and the standard library. No network, no API keys, no third-party packages. Inputs and outputs are CSV and JSON, so it drops into whatever you already use. Ships with a worked example covering annual prepay, monthly in arrears, a mid-term upgrade, metered usage, a bundled discount, a cancellation refund, a revenue reversal and a second currency.
How to install
Drop the file into your AI Agent. Works with Claude, Cursor, ChatGPT, and 20+ more.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
30-day refund
Not a fit? Get your money back
Trust & safety
Security scanned
Passed automated security review
- One-time purchase, yours forever