Try Netice Own your app revenue data App Store and Google Play revenue, delivered to your warehouse or storage. Try free for 30 days No credit card required

Netice app revenue data infrastructure

App Store and Google Play report publishing times

Apple App Store and Google Play revenue reports do not all appear at the same time, use the same timezone, or become "final" on the same schedule. Daily sales reports, monthly finance reports, raw report files, and warehouse-ready analytics outputs each need their own timing model.



Why app store report timing is harder than it looks

App revenue pipelines fail when they assume that every provider report appears at midnight, contains complete data immediately, and can be treated as final as soon as the file exists. That is not how App Store Connect or Google Play reporting works.

Apple and Google publish different report families on different schedules. Apple Sales and Trends daily reports are not Apple financeReports. Google Play Estimated Sales is not Google Play Earnings. Raw reports are not the same thing as a normalized analytics table. A missing file can mean “not generated yet,” not “zero revenue.” A daily dashboard can be directionally useful while a monthly finance report is still pending.

The practical goal is not to guess one perfect universal ingestion time. The practical goal is to understand provider timing, run after reasonable readiness windows, refresh recent data, avoid fake zeros, and keep daily analytics separate from monthly finance output.

The report timing map

The table below is the high-level mental model. It is intentionally not a promise that every report will arrive at exactly the same minute every day. Provider reports can be late, missing, delayed by processing, or unavailable for a specific account/report family.

Report family Typical provider timing Timezone / period basis Best Netice interpretation
Apple Sales and Trends daily reports Daily reports are available the following day; Apple says reports are generally available by 8 a.m. Pacific Time. Sales and Trends can be viewed in UTC or Pacific Time; downloaded report matching commonly uses PT context. Good for daily Apple operational analytics after a provider-readiness buffer.
Google Play Estimated Sales Generated daily into the current month’s file; Google says new transactions can take several days to appear. Google Play financial data is UTC-based. Good for daily Google operational analytics, with recent-day refresh recommended.
Apple financeReports Previous fiscal month’s earnings reports are available by the first Friday of the current fiscal month. Apple fiscal month / finance report period. Monthly finance output; not daily analytics.
Google Play Earnings Generated near the beginning of the month. Monthly Google Play finance period. Monthly finance output; not Estimated Sales.
Raw provider reports Depends on provider, report family, source account, and selected period. Provider-native. Source-native artifact custody; not normalized analytics by itself.

Example publishing timeline

A transaction day and a report-availability day are not the same thing. The visual below shows a simplified timing model for a sample transaction date. The point is not the exact calendar date; the point is that each report family becomes useful at a different stage.

Example app store reporting timeline

Exact provider availability can vary by account, report family, date, and provider processing state.

Apple Sales and Trends: next-day daily reporting, not finance close

Apple Sales and Trends reports are useful for daily operational analytics. Apple says Sales and Trends daily reports are available the following day, and that reports are generally available by 8 a.m. Pacific Time. Apple also documents weekly, monthly, and yearly availability separately.

This does not mean daily Apple rows are final settlement. Sales and Trends is a daily sales-style reporting system. It can estimate sales and proceeds, and it differs from Payments and Financial Reports. In Netice terms, Apple daily sales belongs to the Daily App Sales layer, not the Finance Unified layer.

Apple daily concept Meaning Netice boundary
Sales and Trends daily reports Daily reporting for sales-style analytics. Use for Daily App Sales, not monthly finance.
Generally available by 8 a.m. PT A useful readiness anchor. Still use buffers and provider-aware scheduling.
Pacific Time / UTC display context Apple reporting can differ by selected reporting timezone. Do not mix date semantics without source context.
Retention limits Apple stores daily/weekly/monthly reports for a finite period. Backfill design must respect source availability.

Google Play Estimated Sales: daily files, but not instant finality

Google Play daily revenue analytics typically comes from Estimated Sales. Google says Estimated Sales reports are generated daily by adding recent charged or refunded transactions to the current month’s file, and that it can take several days for all new transactions to appear.

Google’s bulk reports are available through Google Cloud Storage. Google says data is captured daily and posted within 3 to 7 days in monthly CSV files, and recommends building systems that do not depend on the exports being updated at a specific time.

This is the core reason recent Google Play days benefit from refresh. A pipeline that only fetches yesterday once may miss late-arriving transactions. A safer pipeline treats recent days as a moving window and re-checks them until they are old enough to be considered mature for operational analytics.

Google Play concept Meaning Netice boundary
Estimated Sales Daily sales-style reporting for recent charged/refunded transactions. Use for Daily App Sales; not Google Play Earnings.
3–7 day bulk posting window Data can appear over several days in monthly CSV files. Refresh recent windows instead of trusting a single fetch.
UTC basis Google Play financial data is UTC-based. Do not compare blindly with Apple PT periods.
No exact update time dependency Google recommends systems not depend on a specific update time. Schedule defensively and retry provider-late periods.

Finance reports: monthly, slower, and semantically different

Monthly finance reports are not “the same daily data, just later.” Apple financeReports and Google Play Earnings have different period semantics, fee/tax behavior, finality assumptions, and intended use.

Apple financial reports are automatically generated once a month based on Apple’s fiscal calendar, and Apple says the previous fiscal month’s earnings are available by the first Friday of the current fiscal month. Google Play Earnings reports are generated near the beginning of the month.

Finance report Timing model Do not confuse with
Apple financeReports Previous fiscal month available by the first Friday of the current fiscal month. Apple Sales and Trends Summary Sales.
Google Play Earnings Generated near the beginning of the month. Google Play Estimated Sales.
Finance Unified Monthly platform finance output where configured. Daily App Sales.

Netice timing pattern for app revenue pipelines

A dependable app store revenue pipeline does not rely on one universal midnight run. It treats Apple daily sales, Google Play Estimated Sales, monthly finance reports, and raw report files as separate report families with separate timing and refresh behavior.

Recommended ingestion pattern by output family
Output family Run pattern Refresh strategy Risk avoided
Daily App Sales Run after provider-specific daily readiness windows. Refresh recent days to catch late provider updates. Treating yesterday as final after one fetch.
Finance Unified Run on monthly finance availability windows. Track finance period availability and null-not-zero behavior. Using daily sales as finance close.
Raw Reports Check provider-native report families by their own period model. Record pending, delivered, unavailable, or unchanged status. Treating missing raw files as zero revenue.

Netice app-data refreshes are designed around provider-aware timing instead of a customer-selected midnight clock. Apple-aware tasks use Apple report-readiness timing, Google-only tasks use UTC-oriented timing, and combined Apple + Google tasks use a later readiness window so both providers have a better chance of being available. These scheduling rules improve reliability, but they are still readiness policies rather than guarantees that a provider report exists at an exact minute.

The “freshness ladder” for app revenue data

Not all revenue data has the same freshness level. A dashboard can use recent daily data while finance waits for monthly reporting. A raw file can be pending while a daily estimate exists. A missing provider report can mean “not ready,” not “zero.”

App revenue freshness ladder
Live / very recent Useful for directional monitoring. Highest risk of late provider changes.
Stabilizing daily Recent daily reports have arrived, but may still be refreshed.
Mature daily Older daily windows are less likely to change, but still not finance close.
Monthly finance available Finance report family exists for the period; still not an accounting-system substitute.

Netice Daily App Sales uses data_completeness as a source-readiness field. It helps distinguish very recent, stabilizing, and older daily windows, but it does not mean payout settlement, accounting close, or finance finality.

Why “report exists” does not mean “number is final”

The presence of a report file is only one milestone. Transactions can complete or settle later. Providers can process refunds and adjustments. Currency conversions can differ between daily analytics and finance output. Apple explicitly distinguishes Sales and Trends from Payments and Financial Reports, and Google distinguishes Estimated Sales from Earnings.

A safe revenue pipeline keeps report family visible in the output. Fields such as source, platform, source_kind, source_report, revenue_date, fiscal_period, data_completeness, event_has_revenue, and finance period fields exist to prevent false certainty.

How Netice handles provider-late data

Netice treats provider-late data as a report state, not as zero revenue. If a provider has not published the report yet, Netice avoids fabricating a zero-value row just to make a dashboard look complete.

Customer-facing status separates requested windows, delivered windows, pending provider data, unavailable reports, unchanged raw artifacts, source access problems, and destination write problems. That lets teams understand whether they need to wait, reauthorize, fix destination permissions, or rerun a selected window.

Status category Meaning What it does not mean
Provider not ready The report family or period is not available yet. Revenue is zero.
Source permission failure Netice cannot read the provider report. Destination write settings caused the issue.
Destination write failure Netice cannot write to the customer-owned target. The app store has no data.
Schema or source format issue The candidate output needs review or parser handling. The missing value is zero.
Unchanged artifact The provider file was already processed and did not change. Every run must create a new file.

Netice can show user-safe status categories such as waiting for provider availability, source access failure, destination write failure, schema or source-format issue, unchanged raw artifact, delivered window, pending window, and provider follow-up. Customer-facing summaries avoid raw logs, task/run identifiers, source object paths, source rows, credentials, and customer-specific destination names.

Example schedule model

The following example shows how the timing model works at a high level. Netice uses provider-aware daily scheduling and separate finance/raw timing boundaries, while still allowing for provider delays and account-specific availability.

Task type Reasonable scheduling idea Refresh window Expected status behavior
Apple daily only Run after Apple’s daily report availability window in Pacific Time. Refresh recent Apple daily windows. Pending if Apple report is not ready.
Google daily only Run on UTC-oriented readiness with no dependency on exact Google update time. Refresh several recent Google days because transactions can appear late. Pending/provider-late if files are not posted yet.
Apple + Google daily Run after the later provider readiness window. Refresh recent windows for both providers. Partial/provider-specific statuses remain visible.
Monthly finance Run after monthly finance availability windows. Refresh finance months/periods, not daily dates. Missing finance report is not zero revenue.

Netice uses overlapping Daily App Sales refresh windows so recent provider data can be updated as reports mature. Backfills are bounded by provider/source availability, and requested windows can differ from delivered windows when provider data is not ready.

What this means for BigQuery, Snowflake, GCS, and S3

Report timing affects destination behavior. Warehouses do not need blind duplicate appends every time a provider is rechecked. Object storage works better with stable managed files than uncontrolled run-archive spam when the goal is a current analytics output. Raw report storage preserves provider-native status without pretending to be a unified schema.

Destination pattern Timing implication Netice behavior
BigQuery daily table Recent daily windows may need refresh. Update selected windows after candidate rows are prepared.
Snowflake daily table Recent daily windows may need refresh. Use scoped replacement and duplicate checks.
GCS/S3 daily file Recent daily windows may change. Keep stable managed output current.
Raw report folder Provider files can be pending, late, unchanged, or unavailable. Use manifest and status metadata without exposing raw source rows.
Finance output Monthly periods become available on finance timing. Refresh finance periods separately from daily dates.

Netice Daily App Sales outputs can use BigQuery table app_sales_daily, Snowflake table APP_SALES_DAILY, and managed GCS/S3 CSV files such as app_sales_enriched_EUR.csv. Finance Unified uses separate monthly outputs such as BigQuery table finance_unified, Snowflake table FINANCE_UNIFIED, and managed finance CSV files such as finance_unified_EUR.csv, where Finance Unified is configured.

Common mistakes when automating app store revenue reports

The same timing mistake appears in many in-house scripts: run once per day, assume yesterday is complete, append everything, and mark missing files as zero. That creates false certainty and fragile downstream dashboards.

Mistake Why it breaks Better pattern
Running exactly at midnight Provider reports may not be published yet. Run after provider-specific readiness windows.
Fetching yesterday only once Google Play transactions can appear several days later. Refresh recent daily windows.
Treating missing files as zero Missing can mean provider not ready or permission failure. Use provider-late and customer-action states.
Mixing daily and finance reports Estimated Sales and Earnings are not the same data. Keep source_kind and source_report visible.
Hiding timezone context Apple and Google period definitions can differ. Preserve date, period, timezone and report-family semantics.

Security and status visibility

Report timing status helps customers understand what happened without exposing sensitive material. Netice keeps source access, destination access, and customer-owned output targets separated, and customer secret material is encrypted and handled through Netice secret management rather than being placed in public examples or status summaries.

Customer-facing status can show high-level states such as provider pending, source access issue, destination write issue, delivered window, pending window, or unchanged raw artifact. It does not expose raw source rows, credentials, secret references, service-account material, source object paths, real bucket names, task IDs, run IDs, logs, app IDs, SKUs, or customer amounts.

Synthetic examples

These examples are synthetic. They are not real task records, customer output, provider source rows, or operational logs.

Daily App Sales timing query

SELECT
  revenue_date,
  platform,
  source_report,
  data_completeness,
  COUNT(*) AS rows
FROM `example_project.example_dataset.app_sales_daily`
WHERE revenue_date BETWEEN DATE '2026-02-01' AND DATE '2026-02-07'
GROUP BY revenue_date, platform, source_report, data_completeness
ORDER BY revenue_date, platform, source_report;

Finance period availability query

SELECT
  fiscal_period,
  source,
  source_report,
  COUNT(*) AS rows,
  COUNTIF(report_net_proceeds IS NULL) AS rows_missing_report_net
FROM `example_project.example_dataset.finance_unified`
WHERE fiscal_period = DATE '2026-02-01'
GROUP BY fiscal_period, source, source_report
ORDER BY source, source_report;

Illustrative run schedule table

Apple daily operational refresh: after Apple daily availability window
Google daily operational refresh: UTC-oriented, with recent-window refresh
Combined daily refresh: after later provider readiness
Monthly finance refresh: after finance-report availability window
Raw report refresh: by provider/report-family period and status

Real app IDs, product IDs, buckets, table names, source paths, source row hashes, task IDs, run IDs, credentials, and customer amounts are intentionally omitted from public examples.

FAQ

What time are Apple Sales and Trends reports available?

Apple says Sales and Trends daily reports are available the following day and that reports are generally available by 8 a.m. Pacific Time. Treat this as a provider-readiness window, not as settlement finality.

What time are Google Play Estimated Sales reports available?

Google Play Estimated Sales reports are generated daily into monthly CSV files, but Google says it can take several days for all new transactions to appear and recommends not depending on a specific update time.

Why refresh recent Google Play days?

Because Google Play transactions and report files can update over several days. A recent-window refresh helps catch late-arriving or newly posted data.

When are Apple financeReports available?

Apple says financial reports for the previous fiscal month’s earnings are available by the first Friday of the current fiscal month.

When are Google Play Earnings reports available?

Google describes Earnings reports as generated near the beginning of the month. They are not daily Estimated Sales.

Does report availability mean the data is final?

No. A report can be useful before it is finance-final, and daily operational reporting is different from monthly platform finance reporting.

Are missing provider reports zero revenue?

No. Missing reports can mean provider-late data, unavailable periods, source permission issues, setup problems, or destination write failures. Missing does not mean zero.

How does Netice schedule daily Apple and Google refreshes?

Netice uses provider-aware scheduling and refreshes recent windows. Apple-aware tasks use Apple report-readiness timing, Google-only tasks use UTC-oriented timing, and combined Apple + Google tasks use a later readiness window. Recent windows can still be refreshed or followed up when provider data arrives late.

Is Daily App Sales the same as Finance Unified?

No. Daily App Sales is operational daily analytics. Finance Unified is monthly platform finance output where configured. They use different source families and timing models.

Can raw reports solve report timing issues?

Raw reports preserve provider-native files and status metadata, but they do not normalize schema, apply report currency, or turn missing provider reports into zero revenue.

Build refreshes around provider reality

Netice is designed around the reality that Apple and Google Play reports arrive on different schedules, use different report families, and need safe refresh behavior. The point is not just moving files; it is preserving the timing, source and finance boundaries that make app revenue data usable.

Review pricing Review security