Short answer
The token your server sent is malformed: cut short, padded with extra characters, or not an FCM token at all (for example a raw APNs device token, a user ID, or an empty value). Log the exact token the app gets from the FCM SDK, save it unchanged, and send that. If the payload is valid and a saved token still fails this way, delete 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 FCM rejects the token, and the fix
01
The token was cut short or changed
“Make sure it matches the registration token the client app receives from registering with FCM. Don't truncate or add additional characters to it.” Firebase, FCM error codes (messaging/invalid-registration-token)
A database column that is too short, a trim or split in your code, quotes or a newline saved with the value, or a token copied by hand from a log can all break it. Store the token as plain text with no length limit and compare what you send with what the device printed.
02
The value is not an FCM token
“Check the format of the registration token you pass to the server.” Firebase, FCM ErrorCode (INVALID_ARGUMENT)
On iOS the app has two tokens: the APNs device token from Apple and the FCM registration token from Firebase. Sending the APNs token to FCM fails, and so does a user ID, a Firebase Installation ID or an empty string from a missing field. Save the token returned by the FCM SDK (getToken) and nothing else in that field.
03
The token is fine but the message is not
“it signals an invalid registration only if the payload is completely valid.” Firebase, Manage registration tokens
INVALID_ARGUMENT is also returned for a bad payload: a message that is too big, a reserved data key, a TTL out of range, or a data value that is not a string. Read the error details first. A payload error carries a BadRequest detail naming the field, such as message.data[0].value; a bad token comes back with the plain message The registration token is not a valid FCM registration token.
Checked against the vendor’s docs on : Firebase docs: FCM HTTP v1 ErrorCode; Firebase docs: FCM error codes (Admin SDK); Firebase docs: Best practices for FCM registration token management.
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 payload size limit exceeded · FCM SENDER_ID_MISMATCH · Flutter APNS token has not been set