Short answer
The token and the sender belong to different Firebase projects. Compare the project ID in the app’s config file (google-services.json or GoogleService-Info.plist, or the web config) with the project of the service account your server uses, and make them match. If you moved projects, old tokens will not work: have each app fetch a new token and save it.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why the sender does not match, and the fix
01
The server uses a service account from another project
“Make sure the credential and registration token both belong to the same Firebase project.” Firebase, FCM error codes (messaging/mismatched-credential)
The Admin SDK or HTTP v1 call is authenticated with a service account key, and that key belongs to one Firebase project. If it is not the project in the app’s config file, every send fails. Download a service account key from the same project as the app, or change the project ID your server sends to.
02
Staging and production are crossed
“The authenticated sender ID is different from the sender ID for the registration token.” Firebase, FCM ErrorCode (SENDER_ID_MISMATCH)
With separate dev and prod Firebase projects, a test build with the dev config sends its token to the production server, or the other way round, and the sends fail with this error. Check which config file each build ships with and which credentials each server environment loads.
03
The app moved to a new Firebase project
“If you switch to a different sender, the existing registration tokens won't work.” Firebase, FCM ErrorCode (SENDER_ID_MISMATCH)
After a migration the tokens saved in your database still point at the old project. They cannot be reused. Ship the build with the new config, have it fetch a fresh token on launch and save it, and remove the old tokens once users have updated.
04
You meant to send from one project to another
“In the target project, assign the Firebase Cloud Messaging API Admin role to the email address for the service account.” Firebase, Send messages with the Admin SDK
If one backend project sends for several apps on purpose, the other projects have to allow it. Give the sender’s service account the Firebase Cloud Messaging API Admin role in each target project, then initialize the SDK with the target project’s ID.
Checked against the vendor’s docs on : Firebase docs: FCM HTTP v1 ErrorCode; Firebase docs: FCM error codes (Admin SDK); Firebase docs: Send messages with the Admin SDK.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: FCM registration token not registered · FCM THIRD_PARTY_AUTH_ERROR · Firebase “No Firebase App [DEFAULT]” · Expo push notifications not working