Skip to content

SMS Fee screen blocks all login methods on new device despite active sessions and 2FA (Portugal +351) #2168

Description

@gustavodiasp

Checklist

  • I am reporting an issue in existing functionality that does not work as intended
  • I've searched for existing GitHub issues

Description

When logging into a new iOS device with an existing Telegram account (Portugal, +351),
the app displays an "SMS Fee" screen that blocks all login attempts. The screen offers
no way to proceed except paying €0.99 for Telegram Premium, even when the account has
active sessions on other devices and 2FA enabled. All alternative authentication methods
either fail silently or are inaccessible from this screen.

Expected Behavior

The app should fall back to device-based verification (sending the login code to an
existing active session) or prompt for the 2FA password, bypassing the need for SMS
entirely — as documented in Telegram's own authentication flow.

Actual Behavior

  • The SMS Fee screen appears immediately after entering the phone number
  • There is no dismiss button, back button, or alternative login option visible on screen
  • The login code IS sent to existing active sessions in the background (confirmed),
    but there is no code entry field accessible from the SMS Fee screen
  • Passkey login returns "An error occurred, please try again later"
  • Sign in with Apple returns the same error
  • Email login rejects Gmail ("Sorry, this email can't be used") and eventually
    rate-limits all attempts with "An error occurred, please try again later"
  • QR code login (via "Link Desktop Device" on existing session) does not recognise
    the QR code shown during the iPhone 14 login flow
  • On one attempt, login completed successfully and reached the "Add Email" screen,
    confirming the authentication flow CAN work — however that screen has no dismiss
    button (only Back, which cancels the session), making it impossible to complete
    login without a working email address

Steps to Reproduce

  1. Have an existing Telegram account with 2FA enabled, registered with a Portuguese
    number (+351)
  2. Install Telegram on a new iOS device
  3. Enter the phone number and tap Continue
  4. Observe SMS Fee screen — no alternative login options are accessible
  5. Attempt Passkey login → "An error occurred"
  6. Attempt Sign in with Apple → "An error occurred"
  7. Attempt email login → Gmail rejected; rate limit triggered after multiple attempts
  8. Attempt QR code via existing session → QR not recognised

Environment

Device: iPhone 14
iOS version: 26.5
App version: 12.7

Additional context:

  • Active sessions exist on iPhone 11 Pro Max (Telegram iOS 12.7), MacBook Air M1
    (Telegram macOS 12.7), and Telegram Web
  • Account has 2FA (Two-Step Verification) enabled
  • Issue appears specific to Portuguese phone numbers (+351) where telecom SMS costs
    trigger the fee screen

Workaround (does not fix the underlying issue):
In some cases, the SMS Fee screen can be bypassed by removing the existing Telegram
passkey on the new device — which may have been transferred from the old device via
iCloud Keychain — and creating a new one. Steps:

  1. Go to iPhone Settings → Passwords → search for "Telegram" → delete all existing
    Telegram passkeys
  2. Open Safari on the new device and navigate to web.telegram.org
  3. Log in via the browser using the phone number
  4. When prompted, create a new passkey — this time correctly bound to the new device
  5. Use this new passkey to log in on the Telegram iOS app

Note: This workaround only applies to users who had a passkey transferred via iCloud
Keychain. The underlying bug — the SMS Fee screen blocking all alternative
authentication methods (device-based login code, 2FA password, QR code) for Portuguese
numbers — remains unresolved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions