Reporting data on app charges and earnings

There are two ways to report your app's revenue and retrieve data on transactions:

View app charges in the Partner Dashboard

The app charge overview page allows store owners and staff with the View financials permission to view details about one-time app charges, app usage charges, and app subscriptions in the Partner Dashboard.

If you want to check app charges from a particular merchant store, then you can view details for an app charge from a store's page. If you want to check app charges that are associated with a particular payout, then you can view details for an app charge from the Payouts page. You can also view details for an app charge from the App history table on the App overview page.

Viewing the details about an app charge

Each app charge overview page lists the following details about a particular app charge:

  • merchant information, including a link to the store where the app is installed
  • the name of the app that the merchant was charged for, including a link to the app
  • the status of the app charge or subscription
  • a list of merchant payment transactions that are associated with the charge

When you click the arrow that is next to the transaction, the following details for that transaction are displayed:

  • an itemized list of the Shopify revenue share fee, the processing fee, and your net profit as the app's developer
  • a link to the partner payout that includes the app charge (not available for pending payouts)

If the charge is a recurring app charge or a one-time app charge, then additional details are listed on the overview page.

Additional details about recurring app charges

The app charge overview page for a recurring app charge includes the following details:

  • a description of the subscription, such as "$15 every 30 days"
  • the subscription creation date
  • the status of the recurring app charge, which can be one of the following:
    • Pending: The merchant hasn't yet approved or declined the charge.
    • Accepted: The merchant approved the charge. This is only available for REST API versions older than 2021-01.
    • Activated: The merchant's subscription is currently active.
    • Declined: The merchant declined the charge.
    • Cancelled: The merchant or the developer cancelled the subscription.
    • Frozen: The subscription is on hold due to a store subscription non-payment. The charge reactivates after the subscription payments resume.
    • Expired: The merchant didn't accept the subscription within 2 days.

Additional details about one-time app charges

The app charge overview page for a one-time app charge includes the following details:

  • a description of the one-time charge
  • the charge creation date
  • the status of the recurring app changes, which can be one of the following:
    • Pending: The merchant hasn't yet approved or declined the charge.
    • Accepted: The merchant approved the charge. This is only for REST API versions older than 2021-01.
    • Activated: The merchant's subscription is currently active.
    • Declined: The merchant declined the charge.
    • Expired: The merchant didn’t accept the subscription within 2 days.

View an app charge from a store's page

  1. Log in to your Partner Dashboard.
  2. In the Partner Dashboard search bar, enter the name of the store with the app charges that you want to check.
  3. In the search results, click the name of the store.
  4. Next to the app charge that you want to check, click the link in the Details column.

View an app charge from the Payouts page

  1. Log in to your Partner Dashboard.
  2. Click Payouts.
  3. Click the payout with the app charges that you want to check.
  4. Next to the app charge that you want to check, click the link in the Type column.

View an app charge from the App Overview page

  1. Log in to your Partner Dashboard.
  2. Click Apps.
  3. Click the name of the app with the charges that you want to check.
  4. In the Latest app history table, click the link in the Details column next to the app charge that you want to check.
  5. Click View all history to view the full table with more charges.

Query transaction data with the Admin API

You can use the examples in the sections below to familiarize yourself with the Billing API data.

Query for an AppPurchase

Using the Billing API you can query for an individual purchase or query for multiple purchases.

Query for multiple purchases

To query for multiple purchases, you can use the currentAppInstallation type. You can use the first or last argument to specify how many purchases you want to return.

View response

JSON response:

Query for a single purchase

To query for a single purchase, you can query the node on AppPurchaseOneTime by passing the app purchase ID as an argument.

View response

JSON response:

Query for an AppSubscription

You can query for an individual subscription or query for multiple subscriptions using the Billing API.

Query for multiple subscriptions

To query for multiple subscriptions, you can use the currentAppInstallation type. You can use the first or last argument to specify how many subscriptions to return.

View response

JSON response:

Query for a single subscription

To query for a single subscription, you can query the node on AppSubscription by passing the app purchase ID as an argument.

View response

JSON response:

Query for AppUsageRecords

To query for AppUsageRecords, you can use the currentAppInstallation type. You can obtain the usageRecords from the lineItems field of allSubscriptions. You can use the first or last argument to specify how many records to return.

View response

JSON response:

Query for AppUsageRecords for a specific subscription

To query for an AppUsageRecord on a specific subscription, you can query the node on AppSubscription by passing the app subscription ID as an argument.

View response

JSON response:

Query for a specific AppUsageRecord by ID

To query for a specific app usage record, you can query the node on AppUsageRecord by passing the app usage record ID as an argument.

View response

JSON response:

Next steps