Try NeticeOwn your app revenue dataApp Store and Google Play revenue, delivered to your warehouse or storage.Try free for 30 daysNo credit card required

Netice app revenue data infrastructure

Report currency and FX for app revenue data

Report currency is the currency Netice uses for presentation and analytics fields in app revenue outputs. It does not erase the original source currency, it does not make daily app-sales rows final payout truth, and it does not turn provider-native raw reports into normalized finance data.

Daily layercomponent FX fields
Finance layernative + report fields
Raw reportsno FX normalization
Core policynull is not zero

What report currency means

In Netice app revenue outputs, report currency is the configured presentation currency used for selected analytics or finance fields. For example, a task may use EUR as the report currency so downstream teams can compare Apple App Store and Google Play revenue in one reporting currency.

Report currency is not the same thing as the provider’s source currency, payout currency, merchant currency or customer charge currency. Netice keeps native/source context visible where the output family supports it. This matters because app stores can report amounts in different currencies, with different fee visibility, different tax behavior and different report families.

A safe mental model is: native values preserve provider context; report-currency values support analysis and presentation. You should not use report-currency fields without reading the source report, method fields, FX fields and output-family boundary.

What report currency does not mean

Report currency does not make daily app-sales rows final payout, settlement, tax, audit or accounting-close truth. It does not guarantee exact parity with a provider dashboard. It does not replace native values. It does not create missing finance data. It does not turn raw provider reports into a unified schema.

Netice separates Daily App Sales, Finance Unified and Raw Reports. Each output family has its own currency behavior. The same configured report currency can appear in more than one place, but the meaning of the fields still depends on the source and output family.

Native currency vs report currency

Native/source currency is the currency context coming from the platform report or the platform-side economic event. Report currency is the currency selected for customer-facing presentation fields. Both can be useful, but they answer different questions.

Concept Meaning How to read it safely
Native currency The source or platform-side currency context. Use it to preserve source truth and provider semantics.
Report currency The configured presentation currency for selected Netice output fields. Use it for analytics and comparison, with FX and method context.
FX field The rate or component conversion context used for report-currency fields. Do not assume missing FX means rate 1.
Method field Explains how an amount was derived or estimated. Do not treat estimated method values as source-truth finance facts.
Null value Unknown, unavailable, unsupported or not safely derivable. Do not silently convert unknown finance values to zero.

Daily App Sales currency fields

Daily App Sales uses the google_apple_app_sales workflow. It is the daily operational analytics layer for Apple App Store and Google Play sales-style reporting. The current daily schema evidence uses fields such as report_currency, estimated_gross, estimated_net, estimated_tax and estimated_fee for report-currency analytics.

Daily App Sales also preserves native/local context through fields such as native_currency, gross_local, net_local, tax_local and fee_local. Apple-specific proceeds context can appear in apple_proceeds_currency and apple_proceeds_native. These Apple fields should not be flattened into Google rows.

The current daily layer uses component-specific FX fields: gross_fx, net_fx, tax_fx and fee_fx. It should not be documented as having one generic public daily fx_rate column.

Daily App Sales field group Representative fields Boundary
Report-currency amounts estimated_gross, estimated_net, estimated_tax, estimated_fee Operational analytics, not final finance close.
Native/local amounts native_currency, gross_local, net_local, tax_local, fee_local Preserves source/local amount context.
Apple proceeds apple_proceeds_currency, apple_proceeds_native Apple-specific; blank or null for Google rows.
Component FX gross_fx, net_fx, tax_fx, fee_fx Amount-specific conversion context.
Method fields net_method, fee_method, tax_method Explains derivation; not optional decoration.

Apple and Google daily source differences

Apple and Google Play do not expose identical daily report facts. Netice keeps that difference visible instead of pretending that every amount has the same source truth.

Apple Summary Sales does not itemize commission and tax in the same way a finance ledger would. Daily Apple fee and tax values therefore need method context. Google Play Estimated Sales does not itemize service fee like Google Play monthly Earnings. Google tax can be source-truth when taxes collected are present and tax_method says so, but that should not be generalized to every tax value.

Provider Daily source family Currency/fee/tax boundary
Apple App Store Sales and Trends / Summary Sales style reporting Apple daily commission and tax are not itemized as separate source facts; read fee_method and tax_method.
Google Play Estimated Sales style reporting Service fee is not itemized like monthly Earnings; tax is source-truth only when the method supports that interpretation.

Finance Unified currency fields

Finance Unified is separate from Daily App Sales. It is the monthly platform finance output for Apple financeReports and Google Play Earnings where configured. Its rows use source_kind = 'FINANCE' and preserve native finance values separately from report-currency presentation fields.

Finance field Meaning Important interpretation
native_currency Platform-native payout or merchant currency context. Do not replace it with report currency.
native_net_proceeds Signed developer-side finance amount in native currency. Primary native finance amount.
native_customer_charge Customer-side charge amount where applicable. Can be null on fee, tax or adjustment rows.
report_currency Configured presentation currency. Not necessarily the platform-native currency.
report_net_proceeds Native proceeds converted where FX is available. Missing cross-currency FX leaves this null.
report_customer_charge Native customer charge converted where present and FX is available. Null follows native customer-charge availability.
fx_rate Native-to-report conversion factor. Same-currency can be 1; missing cross-currency is not 1.

In Finance Unified, unknown finance values remain null. Real zero remains zero. Missing cross-currency FX does not become rate 1. That distinction matters because fake zeros and fake FX rates can corrupt finance review logic.

Same-currency and missing cross-currency FX

Same-currency conversion is straightforward: if the native currency and report currency are the same, the finance FX rate can be 1. Cross-currency conversion is different. If a required FX rate is not available, finance report-currency fields should remain null or be surfaced as a quality issue rather than silently producing fake amounts.

FX case Finance behavior Unsafe interpretation to avoid
Native currency equals report currency fx_rate = 1; report values can equal native values. Do not generalize this to all missing rates.
Cross-currency FX available Report fields can be populated from native values and rate. Do not treat as provider-native value.
Cross-currency FX missing fx_rate and converted report fields remain null. Do not silently use 1 or 0.
Native proceeds exist but report proceeds missing Can be a quality issue when report currency is configured. Do not hide it with COALESCE(..., 0).

Raw reports do not use report currency or FX conversion

Raw Reports are provider-native artifacts. They are separate from Daily App Sales and Finance Unified. Raw report output does not apply report currency, currency normalization, FX conversion, fee methods or tax methods.

This is an important product boundary. If you need source-native provider files, use Raw Reports. If you need daily report-currency analytics, use Daily App Sales. If you need monthly finance-period rows with native and report currency fields, use Finance Unified where configured.

Output family Report currency behavior FX behavior
Daily App Sales Uses configured report currency for estimated analytics fields. Uses component FX fields such as gross_fx and net_fx.
Finance Unified Preserves native values and adds report-currency presentation fields. Uses fx_rate; missing cross-currency FX remains null.
Raw Reports No report-currency normalization. No FX conversion.

Null-not-zero behavior

In finance output, null is not zero. Null can mean unknown, unavailable, unsupported, not disclosed or not applicable. Zero means a known zero. Treating these as the same can create false finance facts.

Google Play Earnings fee or tax rows can have null customer-charge fields because those rows are not customer charge events. Apple finance output should not fabricate separate Apple commission or tax rows when Apple does not disclose those as separate finance facts. Missing cross-currency FX should not become a fake zero amount.

Situation Correct handling Why
Unknown finance amount Keep null. Unknown does not mean zero.
Real source value is zero Keep zero. Zero is meaningful when known.
Missing cross-currency FX Keep report fields null or surface quality issue. Missing FX is not rate 1.
Raw provider report Do not add report-currency fields. Raw output is source-native.

Safe synthetic examples

The examples below are synthetic. They show the relationship between report currency, native currency, FX and null handling without using real app IDs, SKUs, source rows, object paths, datasets, tables, hashes, task IDs, logs or customer data.

Daily App Sales example row

revenue_date,platform,app_id,source_kind,source,country,report_currency,estimated_gross,estimated_net,estimated_tax,estimated_fee,native_currency,gross_local,net_local,tax_local,fee_local,gross_fx,net_fx,tax_fx,fee_fx,net_method,fee_method,tax_method,data_completeness,source_report,event_has_revenue,item_id,source_row_hash
2026-02-10,ANDROID,com.example.app,SALES,GOOGLE_PLAY,US,EUR,9.990000,6.990000,1.500000,1.500000,USD,10.990000,7.690000,1.650000,1.650000,0.909000,0.909000,0.909000,0.909000,GOOGLE_ESTIMATED_NET_FROM_CHARGED_AMOUNT_MINUS_ESTIMATED_FEE,GOOGLE_ESTIMATED_FEE_30PCT_FROM_SOURCE_STANDARD,GOOGLE_TAXES_COLLECTED,T_PLUS_2_STABILIZED,GP_ESTIMATED_SALES,true,premium_monthly,synthetic_hash_google_001

Finance Unified same-currency example

platform,source,source_kind,source_report,fiscal_period,app_id,sku,event_type,native_currency,native_net_proceeds,native_customer_charge,report_currency,report_net_proceeds,report_customer_charge,fx_rate,source_row_hash
ANDROID,GOOGLE_PLAY,FINANCE,GOOGLE_PLAY_EARNINGS,2026-02-01,com.example.app,premium_monthly,SALE,EUR,7.000000,7.000000,EUR,7.000000,7.000000,1.000000,synthetic_finance_hash_001

Finance Unified missing cross-currency FX example

platform,source,source_kind,source_report,fiscal_period,app_id,sku,event_type,native_currency,native_net_proceeds,native_customer_charge,report_currency,report_net_proceeds,report_customer_charge,fx_rate,source_row_hash
IOS,APPLE_APP_STORE,FINANCE,APPLE_FINANCE_DETAIL,2026-02-01,com.example.app,premium_monthly,SALE,USD,6.990000,9.990000,EUR,,,,synthetic_finance_hash_002

Daily report-currency analytics query

SELECT
  revenue_date,
  platform,
  report_currency,
  source_report,
  SUM(estimated_net) AS estimated_net_report_currency
FROM `example_project.example_dataset.app_sales_daily`
WHERE revenue_date BETWEEN DATE '2026-02-01' AND DATE '2026-02-28'
  AND source_kind = 'SALES'
GROUP BY revenue_date, platform, report_currency, source_report
ORDER BY revenue_date, platform, source_report;

Finance FX coverage query

SELECT
  fiscal_period,
  platform,
  report_currency,
  COUNTIF(native_net_proceeds IS NOT NULL AND report_net_proceeds IS NULL) AS rows_missing_report_net
FROM `example_project.example_dataset.finance_unified`
GROUP BY fiscal_period, platform, report_currency
ORDER BY fiscal_period, platform;

The daily query is for operational analytics. The finance query is a coverage check. Neither query is accounting close, payout reconciliation, tax advice or audit evidence.

FAQ

What is report currency in Netice app revenue data?

Report currency is the configured presentation currency used for selected analytics or finance fields. It helps teams compare app revenue in one reporting currency while preserving native/source context separately.

Does report currency replace native currency?

No. Report currency does not replace native or source currency. Native/source fields remain important for understanding provider context.

Which daily app-sales fields are in report currency?

Daily App Sales uses report-currency fields such as estimated_gross, estimated_net, estimated_tax and estimated_fee.

Why does Daily App Sales have gross_fx, net_fx, tax_fx and fee_fx?

Daily App Sales uses component-specific FX fields because gross, net, tax and fee values can have different derivation and availability contexts.

Does the daily app-sales schema have an fx_rate column?

Current daily app-sales evidence supports component FX fields such as gross_fx, net_fx, tax_fx and fee_fx, not one generic public daily fx_rate field.

What happens when finance FX is missing?

Missing cross-currency finance FX leaves report-currency fields null and can surface as a quality issue. It should not silently become rate 1 or zero.

Is same-currency FX always rate 1?

In Finance Unified, same native/report currency conversion can use fx_rate = 1. That rule should not be applied to missing cross-currency FX.

Why can daily analytics and monthly finance numbers differ?

They can differ because Daily App Sales and Finance Unified use different report families, period semantics, fee/tax visibility, FX handling, finality concepts and source boundaries.

Are Apple and Google fee/tax values always source-truth?

No. Apple Summary Sales does not itemize commission and tax, and Google Play Estimated Sales does not itemize service fee like monthly Earnings. Method fields and source reports must be read before interpreting the values.

Can I use report-currency fields for accounting close?

Report-currency fields are useful for analytics and finance review, but this page does not claim accounting close, audit, GAAP, IFRS, ASC 606, tax or bank-reconciliation status.

Use report currency without losing source meaning

Netice keeps report-currency analytics, native source context, FX fields, method fields and finance null behavior visible so app teams can analyze revenue without flattening away the boundaries that matter.

Review pricing Review security