Menu

Third-Party Revenue Reporting (v6.3.70+)

1. Firebase

The TopOn SDK supports obtaining the revenue of real-time displayed ads. You can listen to the onAdRevenuePaid() callback to get the eCPM value of the currently displayed ad to record the Google Analytics ad_impression event.

‼️ Note: When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.

java Copy
public void handleFirebase(ATAdInfo adInfo) {
    FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
    if (adInfo != null) {
        // When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.
        // if (adInfo.getNetworkFirmId() == 2 && adInfo.isHeaderBiddingAdsource() == 0) return;
        FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
        Bundle params = new Bundle();
        // Revenue parameter configuration
        params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "TopOn");
        params.putString(FirebaseAnalytics.Param.AD_SOURCE, adInfo.getNetworkName());
        params.putString(FirebaseAnalytics.Param.AD_FORMAT, adInfo.getFormat());
        params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, adInfo.getNetworkPlacementId());
        params.putDouble(FirebaseAnalytics.Param.VALUE, adInfo.getPublisherRevenue());
        params.putString(FirebaseAnalytics.Param.CURRENCY, adInfo.getCurrency());
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
    }
} 
java Copy
public void handleFirebase(TUAdInfo adInfo) {
    FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
    if (adInfo != null) {
        // When using Firebase with AdMob integrated in association, AdMob's non-bidding sources do not need to be reported.
        if (adInfo.getNetworkFirmId() == 2 && adInfo.isHeaderBiddingAdsource() == 0) return;
        FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(mActivity);
        Bundle params = new Bundle();
        // Revenue parameter configuration
        params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "TopOn");
        params.putString(FirebaseAnalytics.Param.AD_SOURCE, adInfo.getNetworkName());
        params.putString(FirebaseAnalytics.Param.AD_FORMAT, adInfo.getFormat());
        params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, adInfo.getNetworkPlacementId());
        params.putDouble(FirebaseAnalytics.Param.VALUE, adInfo.getPublisherRevenue());
        params.putString(FirebaseAnalytics.Param.CURRENCY, adInfo.getCurrency());
        mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params);
    }
} 

Call the handleFirebase() method in the onAdRevenuePaid(ATAdInfo adInfo) callback of the following ad types:

Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATBannerView#setAdRevenueListener(). The sample code is as follows:

java Copy
mBannerView.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUBannerView#setAdRevenueListener(). The sample code is as follows:

java Copy
mBannerView.setAdRevenueListener(new TUAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(TUAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of NativeAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mNativeAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of NativeAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mNativeAd.setAdRevenueListener(new TUAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(TUAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

● Rewarded Video

Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATRewardVideoAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mRewardVideoAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TURewardVideoAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mRewardVideoAd.setAdRevenueListener(new TUAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(TUAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATInterstitial#setAdRevenueListener(). The sample code is as follows:

java Copy
mInterstitialAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUInterstitial#setAdRevenueListener(). The sample code is as follows:

java Copy
mInterstitialAd.setAdRevenueListener(new TUAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(TUAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(ATAdInfo adInfo) callback method of ATSplashAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mSplashAd.setAdRevenueListener(new ATAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(ATAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

Return revenue in the onAdRevenuePaid(TUAdInfo adInfo) callback method of TUSplashAd#setAdRevenueListener(). The sample code is as follows:

java Copy
mSplashAd.setAdRevenueListener(new TUAdRevenueListener() {
    @Override
    public void onAdRevenuePaid(TUAdInfo adInfo) {
        handleFirebase(adInfo);
    }
});

2. Adjust

Refer to Firebase above. Call the following handleAdjustRevenueReport method in the onAdRevenuePaid(ATAdInfo adInfo) of each ad type:

java Copy
public void handleAdjustRevenueReport(ATAdInfo adInfo) {
    // Supported in adjust 4.38.1 and above
    AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue( "topon_sdk");
    adjustAdRevenue.setRevenue(adInfo.getPublisherRevenue(), adInfo.getCurrency());

    // Optional configuration
    adjustAdRevenue.setAdRevenueNetwork(String.valueOf(adInfo.getNetworkFirmId()));
    adjustAdRevenue.setAdRevenueUnit(adInfo.getAdsourceId());
    adjustAdRevenue.setAdRevenuePlacement(adInfo.getPlacementId());

    // Send revenue data
    Adjust.trackAdRevenue(adjustAdRevenue);
}

Refer to Firebase above. Call the following handleAdjustRevenueReport method in the onAdRevenuePaid(TUAdInfo adInfo) of each ad type:

java Copy
public void handleAdjustRevenueReport(TUAdInfo adInfo) {
    // Supported in adjust 4.38.1 and above
    AdjustAdRevenue adjustAdRevenue = new AdjustAdRevenue( AdjustConfig.AD_REVENUE_TOPON);
    adjustAdRevenue.setRevenue(adInfo.getPublisherRevenue(), adInfo.getCurrency());

    // Optional configuration
    adjustAdRevenue.setAdRevenueNetwork(String.valueOf(adInfo.getNetworkFirmId()));
    adjustAdRevenue.setAdRevenueUnit(adInfo.getAdsourceId());
    adjustAdRevenue.setAdRevenuePlacement(adInfo.getPlacementId());

    // Send revenue data
    Adjust.trackAdRevenue(adjustAdRevenue);
}

3. AppsFlyer

Refer to Firebase above. Call the following handleAppsFlyerRevenueReport method in the onAdRevenuePaid(ATAdInfo adInfo) of each ad type:

java Copy
public void handleAppsFlyerRevenueReport(ATAdInfo adInfo) {
    
    // v6.3.10+
    String monetizationNetwork = adInfo.getNetworkName(); 
    Currency currency = Currency.getInstance(Locale.US);
    if ("CNY".equalsIgnoreCase(adInfo.getCurrency())) {
        currency = Currency.getInstance(Locale.CHINA);
    }
    Map customParams = new HashMap<>();

    AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, MediationNetwork.Topon, currency, adInfo.getPublisherRevenue(), customParams);
}

Refer to Firebase above. Call the following handleAppsFlyerRevenueReport method in the onAdRevenuePaid(TUAdInfo adInfo) of each ad type:

java Copy
public void handleAppsFlyerRevenueReport(TUAdInfo adInfo) {
    
    // v6.3.10+
    String monetizationNetwork = adInfo.getNetworkName(); 
    Currency currency = Currency.getInstance(Locale.US);
    if ("CNY".equalsIgnoreCase(adInfo.getCurrency())) {
        currency = Currency.getInstance(Locale.CHINA);
    }
    Map customParams = new HashMap<>();

    AppsFlyerAdRevenue.logAdRevenue(monetizationNetwork, MediationNetwork.Topon, currency, adInfo.getPublisherRevenue(), customParams);
}
Previous
AdMob Content mapping for apps
Next
Revenue Reporting
Last modified: 2026-07-08Powered by