# Impression-level ad revenue

[Impression-level ad revenue] helps to calculate more precise data on
the lifetime value (LTV) of app users. When enabled, AdMob sends back
the ad revenue for each ad impression shown on the user's device. This
data can be used to understand users' activities.

To use this feature:

1.  Enable the feature in the AdMob console, as explained in
    the [Impression-level ad revenue] documentation.

2.  For banner ad components use their `onPaid` prop to setup ad revenue event
    listeners. It should have the signature `(event: PaidEvent) => void`.

    For &laquo;full-screen&raquo; ads (app open, interstitial, _etc._) use
    their `addAdEventListener` methods to setup a listener, and look for
    the event with type `paid`, which payload will be a `PaidEvent` object.

    For &laquo;full-screen&raquo; displayed using hooks, the hooks return
    optional `revenue` value. If present, it keeps the last received `PaidEvent`
    for the ad.

The `PaidEvent` type is:

```ts
type PaidEvent = {
  currency: string;
  precision: RevenuePrecisions;
  value: number;
  /** Compact waterfall snapshot for this paid event (no full adapter list). */
  responseInfo?: PaidResponseInfo;
  /** Exact micros as a decimal string when the backend supplies them. */
  valueMicros?: string | null;
};
```

`currency` is the public name (native Google Mobile Ads APIs expose `currencyCode`).
Prefer `valueMicros` when present (null when exact micros are unavailable); do not
derive micros from floating-point `value` in JavaScript.

`responseInfo` on a paid event is a **compact** snapshot (`PaidResponseInfo`): winning
source and allowlisted extras only — not the full `adapterResponses` waterfall. For
load-time auction diagnostics, distinct no-fill handling, and waterfall debugging, see
[Revenue telemetry and auction diagnostics](/revenue-telemetry-and-auction-diagnostics).
Canonical TypeScript shapes live in the [v17 API
reference](./rngma-v17-api-reference.md#7-response-metadata-and-paid-events).

where `RevenuePrecisions` is an enum with keys `ESTIMATED`, `PRECISE`,
`PUBLISHER_PROVIDED`, and `UNKNOWN`. It can be imported from the library as

```ts
import { RevenuePrecisions } from 'react-native-google-mobile-ads';
```

[Impression-level ad revenue]: https://support.google.com/admob/answer/11322405?hl=en
