Transfer an App to Another Apple Developer Account
By Mehdi Azizi
Published , 9 min
To transfer an app, the Account Holder starts App Transfer and the recipient accepts within 60 days. The app keeps its reviews and Bundle ID.
To move an app from one Apple Developer account to another, Apple offers app transfer in App Store Connect. The Account Holder of the account giving up the app starts the transfer, the Account Holder of the receiving account accepts it within 60 days, and then processing takes up to two business days. The app stays on sale and keeps its ratings, reviews and Bundle ID. Its users keep getting updates.
What breaks has to be prepared before you click: TestFlight, subscriptions, Sign in with Apple, push notifications, shared keychain. I haven't transferred an app myself yet. This guide follows Apple's help pages, reread on November 3, 2026, and the final checklist is the one I'd apply to my own apps, built with Expo and RevenueCat.
When to transfer an app
According to the app transfer overview, it's for when you've sold the app to another developer, or when you want to move it to another account or organization. A typical case for an indie: moving from a personal account to your company's account. To open that account, read the D-U-N-S number guide first.
The transfer moves the app, not your account. Each app is transferred separately, and it leaves your account completely once the process is done.
Apple's nine conditions
The app transfer criteria page lists nine, in this order:
| Apple's criterion | What you check |
|---|---|
| Neither account is pending or in the middle of a change, and both have accepted the latest version of their paid and free agreements | Business, Agreements tab, on both sides |
| The app has at least one version released on the App Store | An app that never shipped can't be transferred |
| The app isn't on pre-order in any country or region | Pre-order finished or removed |
| The app has none of these statuses: Processing for Distribution, Waiting for Review, In Review, Accepted, Pending Developer Release, Pending Apple Release | Your latest version is on sale |
| In-app purchases have one of these statuses: Approved, Ready to Submit, Developer Removed from Sale, Rejected | No in-app purchase in review or incomplete |
| Apple-hosted asset packs have no version in Waiting for Review or In Review, on TestFlight or the App Store | Nothing in review on that side |
| None of the app's in-app purchase product IDs are already used by an app of the recipient | Compare the IDs across both accounts |
| A Mac app that used the sandbox and shares its Application Group Container Directory with other Mac apps can't be transferred | Only some Mac apps |
| An Apple Arcade app can't be transferred | Affects few projects |
Wait until your latest version is on sale before starting the transfer.
Preparing the transfer
These points get settled before you click, according to Apple's help pages:
- Back everything up. The app leaves your account: export metadata, pricing, availability dates, sales and downloads.
- Shut down TestFlight. Remove all builds and all testers, and clear the Test Information fields in every language. How groups work is in the TestFlight guide.
- Clear out Xcode Cloud and remove the App Replacement entitlement if there is one, with a published update.
- Subscriptions: share the app-specific secret. An app that sells auto-renewable subscriptions must use an app-specific shared secret. You generate it, send it to the recipient, then start the transfer. The recipient updates their servers before accepting, and generates a new secret once the transfer is done.
- Sign in with Apple: ungroup and prepare the identifiers. Covered below.
- Webhooks: decide. They follow the app. Delete them beforehand if you don't want to receive events anymore, or let the recipient redirect them.
Two money-related effects to know about. According to the Small Business Program page, the app's net proceeds for the calendar year are attributed to every account that initiates or accepts the transfer. So the 1 million dollar threshold is assessed including this app, on both sides: see the 15% commission. And after the transfer, no new promo codes can be created for the app: existing codes stay valid for four weeks after they were created.
Steps for the sender
Only the Account Holder can start the transfer. They need the Apple ID of the receiving Account Holder and their account's Team ID. According to the help page on initiating a transfer:
- In Apps, select the app.
- In the sidebar, under General, click App Information, then scroll down to Additional Information.
- Click Transfer App. You may be asked for a two-factor authentication code.
- If all criteria are met, click Continue. Otherwise, Cancel, and fix what's missing.
- Enter the recipient Account Holder's Apple ID and their Team ID, then Continue.
- Read the terms, check the agreement box, then click Request Transfer.
- Click Done.
The app keeps its status, with Pending App Transfer added. During this time, you can no longer edit its metadata, pricing, availability or in-app purchases. Ongoing conversations with App Review are closed.
Steps for the recipient
Only the receiving Account Holder can accept, within 60 days. According to the help page on accepting:
- Sign in to App Store Connect: an alert tells you about the app to transfer.
- Open Business: the alert shows up in Agreements.
- Under App Transfers, click Review.
- Fill in the support URL, marketing URL and privacy policy URL if the app had them, plus the contacts for App Review and the App Store.
- In User Access, choose who on your team can see the app.
- In App Privacy, keep or redo the previous owner's answers. If there are no answers, you complete them before the next version.
- Read the terms, check the agreement box, then click Accept.
The transfer moves to Processing App Transfer, for up to two business days. If the app requires export documentation, it goes through Waiting for Export Compliance. At the end, both Account Holders are notified, and the app disappears from the sender's account. The recipient then creates new provisioning profiles, tied to the app's App ID and its distribution certificate: see iOS certificates and profiles.
As long as the status is Waiting for Recipient, either side can cancel: Cancel Transfer for the sender, Decline for the recipient, in the App Transfers section of Business.
What follows the app and what breaks
| Item | After the transfer | To do |
|---|---|---|
| Bundle ID and App ID | They follow, a wildcard App ID becomes explicit | Nothing |
| Ratings, reviews, updates | They follow, the app stays on sale | Nothing |
| Auto-renewable subscriptions | They require an app-specific shared secret | Secret sent before, regenerated after |
| iCloud | Data, containers and key-value identifiers follow | Update the key-value identifiers in the entitlements |
| Sign in with Apple Service ID | It follows, unless you remove the association beforehand | Transfer identifiers to exchange within 60 days |
| Webhooks | They follow | Delete them before, or redirect them after |
| Push notifications | Certificates stay valid until they expire | Recipient's APNs key, servers updated |
| Shared keychain | It works until the next update | Group recreated with the recipient's Team ID |
| App Groups | The app stays available | Group deleted on the sender's side, registered by the recipient |
| Apple Pay | The merchant ID doesn't follow | New merchant ID before the next update |
| Wallet passes | Those updated by the app must be reissued | New identifier |
| Promo codes | No new codes | Old codes valid for four weeks |
| Sales and payments | The sender keeps what came before, the recipient gets what comes after | Export before starting |
| App Analytics | The sender loses access, the recipient gets the history | Nothing |
| Nominations, bundle history | They don't follow | Write them down and hand them over before starting |
The keychain deserves special attention. Apple warns that after the update, the app can no longer find the login token stored in the shared keychain, and users have to sign in again once. If your app shares its keychain with another app or an extension, warn your users before publishing that update.
For Game Center, groups, combined leaderboards and matchmaking rules have to be recreated by the recipient. Mac Catalyst apps are transferred in two stages, the iPad app first.
Sign in with Apple: transfer identifiers
With Sign in with Apple, each user's identifier is specific to your team. The recipient can't reuse it as is. Apple's documentation on transferring users lays out three stages:
- Ungroup your apps. An app grouped with others for Sign in with Apple can't be transferred.
- Generate one transfer identifier per user. With a token obtained under the
user.migrationscope, you call theusermigrationinfoendpoint with the user's identifier and the recipient's Team ID. The response contains atransfer_sub. - Hand over only the transfer identifiers. Not your team's identifiers, and not the private email addresses.
You can generate these identifiers before acceptance, or up to 60 days after. The recipient has 60 days after acceptance to exchange them for their own identifiers. Plan this exchange before starting the transfer. Another effect: if a user has none of your other apps, you can no longer email them at their private address after the transfer. The sign-in rules are in guideline 4.8.
Key deadlines
| Step | Deadline |
|---|---|
| Acceptance by the recipient | 60 days after initiation |
| Processing after acceptance | Up to two business days |
| Sign in with Apple identifier exchange | 60 days after acceptance |
| Existing promo codes | Four weeks after they were created |
| APNs certificates from the transfer | Until their expiration date |
My checklist for an Expo app with RevenueCat
Here's what I'd check, in order, for one of my apps:
- Export sales, downloads and analytics before starting.
- Wait until the latest version is on sale and the in-app purchases have an allowed status.
- Shut down TestFlight: builds, testers and Test Information.
- Send the app-specific shared secret, then start the transfer.
- On the recipient's side, after acceptance: a new shared secret, entered in every service that validates subscriptions, RevenueCat included. In-app purchase keys are created in Users and Access, Integrations tab, and can only be downloaded once, according to App Store Connect help.
- Check the server notifications URL in the app's settings. Apple's transfer page doesn't mention it: verify it instead of assuming.
- Recreate the profiles and the APNs key in the recipient's account. For an Expo app, the steps are in the APNs push certificate with Expo.
- Publish an update signed by the new account, warning users about a re-login if the keychain is shared.
Publish without losing what works
The iOS & Android Kit starts from the Starter Code of my apps and walks through four steps to the App Store, at your own pace. The full process is on the publish an app on the App Store page.
Before changing anything, take your free diagnostic: it puts the steps in order and sends you my Apple anti-rejection checklist.
Frequently asked questions
How long does an App Store app transfer take?
The recipient has 60 days to accept. Once accepted, Apple says processing takes up to two business days. If the app requires export documentation, a verification step is added.
Does the app disappear from the App Store during the transfer?
No. The app stays on sale during and after the transfer. It keeps its ratings, reviews and Bundle ID, and its users keep getting updates.
Do subscribers keep their subscription after a transfer?
Apple doesn't describe any interruption for subscribers. Its only requirement concerns the app-specific shared secret: the sender sends it beforehand, the recipient updates their servers, then generates a new one after the transfer.
Can you transfer an app that was never published?
No. The app must have at least one version released on the App Store. It also can't be on pre-order or in review.
Who can start and accept an app transfer?
Only the account owners, called Account Holder. The sender needs the receiving Account Holder's Apple ID and their account's Team ID.
Can you cancel an app transfer?
Yes, as long as the status is Waiting for Recipient. The sender clicks Cancel Transfer, and the recipient clicks Decline, in the App Transfers section of Business. Without a response, the transfer expires after 60 days.

