[Documentation](https://fluxnative.app/docs) / Publish to stores

# Connect store accounts

Connect the organization's App Store Connect API key and Google Play service account once; every app in the organization uses them.

![Connect App Store Connect to FluxNative with Issuer ID, Key ID, the .p8 key file and Team ID, then Connect Google Play to FluxNative with the service account's .json file](https://fluxnative.app/guide-media/connect-store-accounts.7f6e42ae.webp)

Connect each store once: an App Store Connect API key, and a Google Play service account.

## Apple: App Store Connect API key

1. In App Store Connect (Account Holder or Admin), open **Users and Access** › **Integrations** › **App Store Connect API**.
2. Under **Team Keys**, generate a key with **Admin** access. Download the `.p8`: Apple allows it once.
3. Copy the **Issuer ID** and **Key ID**. The **Team ID** is under **Membership details** on the Apple Developer site.
4. In **Publish**, open **Connect App Store Connect to FluxNative** and enter them.

## Google Play: service account

1. In Google Cloud Console, enable the **Google Play Android Developer API** and the **Google Play Developer Reporting API**, and create a service account with no roles.
2. Under **Keys**, choose **Add key** › **Create new key** › **JSON**.
3. In Play Console, **Users and permissions** › **Invite new users**: enter the service account's email. One service account serves every app of the organization, and the part after @ names the Google Cloud project it was created in, not an app.
4. Under **Account permissions**, turn on **View app information and download bulk reports (read-only)**, **Release apps to testing tracks**, **Manage store presence**, **Manage policy declarations** and **Release to production, exclude devices, and use Play App Signing**. The first only reads, for Android vitals and installs. They then cover every app of the account, including apps added later, so a teammate's new app needs no new invite. To allow only some apps, use **App permissions** and add each one instead.
5. In **Publish**, open **Connect Google Play to FluxNative** and choose the `.json`.

## Good to know

- Owners and admins connect them. A key the store refuses is not saved, and the step checks it again whenever Publish opens.
- Connecting the same account again (the same service account, or the same Apple team) only updates its key, for every app: it never adds a second account.
- With several accounts for one store, each app publishes with the one linked to it: anyone who can publish the app chooses it in **Connect**. Owners and admins can remove an account there with **Remove from workspace**.
- "Has this app" stays **not yet** until the app exists in the store; on Google, until its first build is uploaded by hand.
- A new service account can take a while to work in Play Console: if the first upload says permission is missing, wait and retry.
- **Create new key** says key creation is disabled? The Google Cloud organization blocks keys, the default for organizations made since May 2024: an organization admin allows them for this project.
- Admin is not needed, and best not given: a leaked Admin key can invite its own users, which revoking the key does not undo.
- To rotate, connect a new key. To revoke, delete it in App Store Connect or Google Cloud.

**Warning:** These keys can publish to your store accounts. They are stored encrypted, away from the app and the assistant. Never paste them into chat.

## Related

[The Publish steps](https://fluxnative.app/docs/store-readiness) · [iOS certificates and profiles](https://fluxnative.app/docs/ios-signing)

Previous: [Publishing overview](https://fluxnative.app/docs/publishing-overview) · Next: [The Publish steps](https://fluxnative.app/docs/store-readiness)

---

Connect the organization's App Store Connect API key and Google Play service account once; every app in the organization uses them.

Page: https://fluxnative.app/docs/connect-store-accounts
