> ## Documentation Index
> Fetch the complete documentation index at: https://veriqa.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Moving off SMS codes

> Recipe: replace an SMS code with a confirmation in a messenger — check your audience's channels, deploy the server, connect the app and keep SMS as a fallback during the switch.

Today users sign in or confirm operations with an SMS code. You want to replace the code with a
confirmation in a messenger and stop paying for every message, without locking out users who have no
messenger.

## What you need

* an idea of which messengers and email your audience uses;
* a machine for the Veriqa server;
* access to the app's code where the SMS code is sent and checked today.

## Steps

<Steps>
  <Step title="Match the channels to your audience">
    The list of channels is on the [Supported channels](/docs/guides/supported-channels) page. The Email
    channel covers users who have no messenger but do have email.
  </Step>

  <Step title="Deploy the Veriqa server">
    In Docker, follow the [self-hosted quickstart](/docs/quickstart/self-hosted); without Docker,
    [install it as an OS service](/docs/quickstart/os-service).
  </Step>

  <Step title="Enable the channels">
    Set up the channels you chose as described in [Channel setup](/docs/guides/channels).
  </Step>

  <Step title="Connect the app">
    Follow the quickstart for your stack: [.NET](/docs/quickstart/dotnet), [Node.js](/docs/quickstart/node),
    [Python](/docs/quickstart/python) or [Java](/docs/quickstart/java).
  </Step>

  <Step title="Keep SMS as a fallback">
    During the switch, offer sign-in through Veriqa as the main option and the SMS code as a fallback
    for users no channel suits. Remove the fallback once almost nobody uses it.
  </Step>

  <Step title="Move operation confirmations too">
    If the SMS code also confirmed operations, not just sign-in, replace it with a repeated sign-in and
    an `auth_time` check — see [Second factor and step-up](/docs/scenarios/step-up).
  </Step>
</Steps>

## How to check

Sign in to the app through a messenger: the sign-in should succeed, and your SMS gateway should
receive no requests. Then check that the SMS fallback still works.

## Next steps

* [Replacing SMS codes](/docs/scenarios/sms-replacement) — what changes for the user and for you;
* [How Veriqa differs](/docs/concepts/comparison#sms-codes) — the comparison with SMS codes and where it
  stops applying;
* [Confirming a sensitive operation](/docs/recipes/confirm-operation) — if SMS confirmed transfers and
  changes of account details.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.