RevenueHogdocs
Get started

Currency conversion

How RevenueHog converts non-USD revenue to USD with daily ECB rates for each sale's own date, when a figure is marked estimated, and Stripe minor units.

RevenueHog reports revenue in USD. Every non-USD amount is converted at the reference rate for that sale's own date, not today's rate, so historical figures do not drift when exchange rates move.

Where rates come from

Rates are daily ECB reference rates, fetched from Frankfurter (a free ECB data service) and stored per day for about 30 currencies. The 08:07 UTC sync refreshes the last three days before any App Store data is converted, and backfills fetch rates across their whole range first.

How a rate is chosen

  1. USD is always exact.
  2. Otherwise, RevenueHog uses the rate for the sale's date, or the most recent earlier published rate. This covers weekends and holidays when the ECB publishes nothing.
  3. If no published rate exists for that currency, a static approximate rate is used and the row is marked estimated.
  4. A currency with neither a published nor a static rate contributes 0 USD, still marked estimated, so it cannot inflate totals.

Apple's payout reports remain the source of truth for exact figures. See Payouts.

Per source

SourceWhat is converted
App StoreCustomer price and developer proceeds from each daily sales report row; subscription prices at each snapshot's date; subscriber event amounts at each event's date.
Google PlayThe order's charge net of tax, and the developer share Google reports.
StripeInvoice amounts, minus Stripe's observed fees for proceeds.
Apple AdsSpend is stored in the account currency exactly as Apple reports it; USD is a derived convenience.

Stripe minor units

Stripe reports integers in each currency's minor unit, and the divisor depends on the currency: 3999 USD is 39.99, 500 JPY is 500 (zero-decimal), 1500 KWD is 1.5 (three-decimal). RevenueHog applies the per-currency rule rather than dividing everything by 100.

Last updated on

On this page