How-To: Revenue Recognition & Export
1. Overview
ONEcount computes subscription revenue recognition (earned vs. deferred revenue) and produces GL-mapped financial exports that your accounting team can import into their ERP system (NetSuite, QuickBooks, Sage, etc.).
The revenue recognition system has three layers:
- Compute — a scheduled job that reads payment events and subscription data, computes how much revenue was earned in each period, and how much remains deferred.
- Visualize — ONEcount BI dashboards showing deferred revenue waterfall, earned revenue trend, and payment analysis.
- Export — GL-mapped journal entries in CSV or JSON format, deliverable via download, REST API, or SFTP.
2. Revenue Recognition Models
ONEcount supports two recognition models, configured per publication via the Billing Model setting in Fulfillment Setup then Publications:
2.1 Time-based recognition
Revenue is recognized ratably over the subscription term, regardless of how many issues are published. This is the default model and is appropriate for most publications.
Example:
- Subscriber pays $120 for a 12-month annual subscription starting January 1.
- January: $10 earned, $110 deferred.
- February: $10 earned (total $20), $100 deferred.
- June (6 months in): $60 earned, $60 deferred.
- December (12 months in): $120 earned, $0 deferred.
Partial months are prorated. If a subscription starts mid-month, the first and last months are proportionally allocated.
2.2 Issue-based recognition
Revenue is recognized per issue delivered. Each time an issue is mailed to the subscriber (recorded in the fulfillment issue serve log), a proportional amount of revenue is earned.
Example:
- Subscriber pays $120 for a 6-issue subscription.
- Issue 1 mailed: $20 earned, $100 deferred.
- Issue 3 mailed: $60 earned (cumulative), $60 deferred.
- Issue 6 mailed: $120 earned, $0 deferred.
This model is appropriate for publications where the delivery of each issue is the performance obligation (the event that triggers revenue recognition under ASC 606).
4. GL Account Mapping
Before you can export financial data, you need to map each event type to your chart of accounts. This tells the export system which GL account code to use for each type of journal entry.
4.1 Navigate to GL Mapping
Go to Fulfillment, then Setup, then GL Account Mapping. Select a publication from the dropdown.

4.2 Configure the mappings
Five event types need mapping:
- Payments received (charge) — the GL account for cash or accounts receivable when a payment is collected. Typically a debit to Cash (e.g., GL 1000) or a credit to Deferred Revenue.
- Refunds issued (refund) — the GL account debited when a refund is processed.
- Earned subscription revenue (earned_revenue) — the revenue account credited when revenue is recognized. Typically GL 4100 or similar.
- Deferred revenue (deferred_revenue) — the liability account debited when deferred revenue is reduced (i.e., when revenue is earned). Typically GL 2300 or similar.
- Bad debt write-off (write_off) — the expense account debited when a subscription is written off as uncollectible.
For each event type, enter the GL account code, a descriptive name, and whether the entry is a debit or credit. Click Save Mapping when done.
4.3 Example mapping
- charge → GL 1000 (Cash), debit
- charge → GL 2300 (Deferred Revenue), credit
- earned_revenue → GL 4100 (Subscription Revenue), credit
- deferred_revenue → GL 2300 (Deferred Revenue), debit
- refund → GL 4100 (Subscription Revenue), debit
Note: the current system supports one GL code per event type per publication. For double-entry bookkeeping where a single event needs both a debit and credit line, configure the primary entry here and add the offsetting entry in your ERP's import rules.
5. Exporting Financial Data
ONEcount automates financial exports through scheduled jobs. You configure the export once — publication, frequency, date range, file format, delivery method, and notification email — and the system generates and delivers the journal entry files on schedule.
5.1 Navigate to Financial Exports
Go to Fulfillment, then Setup, then Financial Exports. The page shows all configured export schedules with their status, last run time, and delivery method.

5.2 Create an export schedule
Click Add Schedule to create a new export job:

Configure the schedule:
- Schedule name — a descriptive label (e.g., 'Monthly GL Export - Aviators Guide').
- Publication — the publication whose revenue data to export.
- Frequency — how often to run: Daily, Weekly, Monthly, or Custom (one-time). For Weekly, the Day field is the day of the week (0 = Sunday). For Monthly, it is the day of the month.
- Time of day — when to run (server timezone).
- Date range — what period to cover: Last day, Last week, Last month, or Custom dates.
- File format — CSV or JSON.
- Delivery method — Local file only, SFTP, or FTP. If you choose SFTP or FTP, fields appear for host, port, username, password, and remote path.
- Notification email — an email address that receives a notification when the export completes (or fails).
When delivery is set to SFTP or FTP, the SFTP credential fields appear:

Click Create Schedule. The schedule appears in the list with status 'Active'. The multi-silo wrapper script runs hourly and checks which schedules are due based on their frequency, day, and time. When a schedule is due, it generates the GL-mapped journal entry file, delivers it via SFTP if configured, and sends the notification email.
You can pause, resume, edit, or delete schedules at any time from the list. Paused schedules are not processed by the wrapper script until reactivated.
5.3 CSV format
The exported CSV has these columns:
- journal_date — the last day of the period month.
- gl_account — the GL account code from your mapping.
- gl_name — the GL account name.
- debit — debit amount (blank if credit).
- credit — credit amount (blank if debit).
- reference — publication identifier + period (e.g., AVIATORSGUIDE-202607).
- description — human-readable description of the entry.
6. ONEcount BI Dashboards
ONEcount synchronizes its payment events and revenue summary data continuously, and it is available as ONEcount BI datasets. There are two collections:
- payment_events — one document per payment event (charge, refund, renewal, failure). Includes amount in both cents and dollars, event type, publication, subscriber, and timestamps.
- revenue_summary — one document per publication per month. Includes earned, deferred, refunded, and new orders in both cents and dollars.
6.2 Existing charts
In ONEcount BI under "Audience Revenue" tab of the main dashboard you will see the following charts:
- Deferred revenue waterfall — monthly bars showing opening balance, new orders added, revenue earned (reducing the liability), refunds, and closing balance.
- Earned revenue trend — line chart of monthly earned revenue per publication, with prior-year comparison.
- Payment method distribution — pie chart of card brand breakdown (Visa, Mastercard, Amex) from payment_events.
- Failed payment funnel — count of failed payments, retries, recoveries, and final cancellations.
- Revenue by channel — if source_code is populated on payment events, break down revenue by acquisition channel.
7. Troubleshooting
Revenue compute shows 0 subscriptions processed
Check that the publication has a resource_id linked to products with AccessDuration and Price set. The compute job joins gcn_el_expire (expiration dates) with site_products (term duration and price). If either table is empty for this publication, there is nothing to compute.
Financial export shows 'No GL mapping configured'
You must configure GL account codes before exports work. Go to Fulfillment, then Setup, then GL Account Mapping. Select the publication and enter your chart of accounts.
ONEcount BI shows stale data
ONEcount BI reads from a summarized data set, which is populated by a continuous sync job. If the sync job has not run since the last revenue compute, the ONEcount BI data will be stale. If you encounter stale data for more than 24 hours, please contact your ONEcount account manager.