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

# Sender-ID pre-registration: the market-choosing matrix

> A choosing matrix for alphabetic Sender IDs: which markets force pre-registration before your first send, which markets merely recommend it, and which markets accept a dynamic sender outright — so you pick launch markets with the lead time in view.

# Sender-ID pre-registration: the market-choosing matrix

The most expensive onboarding surprise is not a rejection — it is
discovering **after** you have chosen a launch market that the
destination blocks unregistered alphabetic Sender IDs outright. Until
the registration clears, every send to that destination returns a
`422` from the send gate, and some markets take weeks to approve.

This page turns the flat [Country Compliance Requirements](/compliance/country-requirements)
reference into a **choosing matrix**: for each candidate market you read
one `registration` value — `none`, `recommended`, or `required` — and
plan from it. Read it **before you pick markets**, not at send time.

<Note>
  Registration is granted by the carrier or regulator in each country,
  not by Orbit — the values below tell you what to plan for, not a
  delivery guarantee. Coverage is enabled per tenant: a market listed
  here is not necessarily enabled on your account.
</Note>

***

## Read the matrix at choose-time, not send-time

The per-country rules are served by one endpoint —
`GET /api/v1/compliance/country-rules` — the same read-only reference
that backs Orbit's send-time gates. Any authenticated user can call it.
A brand integrating Orbit typically has a `choose` step in its own flow
("pick your launch countries"); that step should call the endpoint and
surface the `registration` value per country, so a market that requires
pre-registration shows its lead time **before** the brand commits to it.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/country-rules?channel=sms" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Each row carries the country, the accepted sender types, and the
`registration` level. Filter by `region` to narrow the scan (e.g.
`?region=EU`), and call it once per channel — `sms`, `rcs`, `whatsapp`,
`voice`, `email`, `viber` — because the same country answers to a
different regulator per channel.

<AccordionGroup>
  <Accordion title="none — launch today">
    The destination accepts a sender with no registration. You can start
    sending as soon as the country and channel are enabled on your
    account.
  </Accordion>

  <Accordion title="recommended — launch now, register in parallel">
    Sending is allowed without registration, but unregistered traffic is
    filtered or relabelled more often. Plan the registration as a
    reliability task, not a blocker.
  </Accordion>

  <Accordion title="required — registration gates every send">
    The send-time gate **blocks** all A2P traffic to this destination
    until a Sender-ID registration for the country reaches `approved`.
    Treat the approval lead time as part of your launch plan — weeks in
    some markets.
  </Accordion>
</AccordionGroup>

***

## The five hardest markets to plan for

Read the live value from the endpoint — the table below is the current
planning snapshot for the markets that surprise operators most, not a
frozen copy you should code against.

| Market               | Sender identity in play      | `registration`           | What to plan for                                                                                                                                          |
| -------------------- | ---------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| United Kingdom       | Alphanumeric Sender ID       | `required` (Ofcom / PRA) | Register the alphabetic Sender ID before the first send; the send gate holds unregistered UK-bound traffic.                                               |
| Saudi Arabia         | Alphanumeric sender **name** | `required` (CITC)        | The sender name — not just a number — must be pre-registered and approved with the regulator. Opt into the regional send gate and pass the approved name. |
| United Arab Emirates | Alphanumeric sender name     | `required` (TDRA)        | TDRA plus carriers (e&, du) expect a KYC-backed brand identity attached to the sender name. Upload documents first, register second.                      |
| Brazil               | Alphanumeric Sender ID       | `required` (Anatel)      | Dynamic alphabetic senders are not accepted; the Sender ID must hold a country-level `approved` registration before sends originate.                      |
| United States        | 10DLC long code              | `required` (TCR 10DLC)   | No alphabetic senders at all — register a brand and campaign per US long number. See the [10DLC guides](/guides/10dlc-registration).                      |

Two adjacent cases worth knowing:

* **India** — registration is `required`, but the regime is TRAI DLT
  rather than a plain Sender-ID registration: headers, content
  templates, and a template id on every send. See
  [DLT-India onboarding](/compliance/dlt-india).
* **Dynamic-alpha markets** (much of the EU, e.g. France) —
  `registration: none` or `recommended`: an alphabetic Sender ID works
  without pre-registration, but register it anyway where you can —
  unregistered dynamic alpha is the traffic carriers relabel first when
  filtering tightens.

For every other market, pull the value at choose-time: the
`registration` field on the country row is the answer, and `sender_rules`
on the same row carries the nuance (dynamic vs. pre-registered, name vs.
ID, format).

***

## How the send gate enforces it

When a destination is `required` and the sender has no `approved`
registration for that country, the send-time gate rejects the send with
a `422` and a market-specific code — for example
`MESSAGING_SA_SENDER_NOT_REGISTERED` or `MESSAGING_BR_SENDER_NOT_REGISTERED`.
The gate only checks alphabetic senders; a numeric long code routes
through carrier provisioning instead. See
[Send Gates](/compliance/send-gates) for how gated sends behave and what
the error payload carries.

To clear the gate, submit the registration from **Settings → Sender IDs**
or via the Sender-ID API, attach the KYC documents the market expects,
and wait for `approved`. The documents themselves — proof of business,
use-case description, brand authorization — live in your document
library and are referenced by ID across registrations. See
[KYC Documents & the Compliance-Profile Lifecycle](/compliance/documents-kyc)
and [Sender-ID Registration](/compliance/sender-id-registration).

***

## Example: an RCS/SMS choose flow

A brand choosing between RCS and SMS for a launch market should check
both channels — they can disagree (SMS may be `required` while RCS is
`recommended`, or vice versa):

```bash theme={null}
for channel in sms rcs; do
  curl -s "https://api.orbit.devotel.io/api/v1/compliance/country-rules?channel=$channel" \
    -H "Authorization: Bearer $ORBIT_API_KEY" \
  | jq '.data.rows[] | select(.country_code=="AE") |
        {country: .country_code, channel: .channel,
         registration: .registration, rules: .sender_rules}'
done
```

Expected shape for the UAE over SMS:

```json theme={null}
{
  "country": "AE",
  "channel": "sms",
  "registration": "required",
  "rules": "Alphabetic sender names require TDRA pre-registration with a KYC-backed brand identity."
}
```

Handle the decision in your choose UI:

* `required` → show the market with a "registration needed" flag and an
  estimated lead time before you let the brand commit to it.
* `recommended` → launchable, but queue the registration as a follow-up
  reliability task.
* `none` → launchable immediately.

This is a lookup pattern, not a new endpoint: any `GET /country-rules`
call your integration already makes at send-time can run at choose-time
instead, and the whole surprise class disappears.

***

## Related references

* [Country Compliance Requirements](/compliance/country-requirements) —
  the flat per-country reference this matrix curates.
* [Sender-ID Registration](/compliance/sender-id-registration) — submit
  and track per-country registrations.
* [KYC Documents & the Compliance-Profile Lifecycle](/compliance/documents-kyc) —
  upload once, reference by ID across registrations.
* [Send Gates](/compliance/send-gates) — how `required` markets block
  unregistered sends.
* [10DLC Registration](/guides/10dlc-registration) — the US-specific
  brand + campaign flow.
* [DLT-India Onboarding](/compliance/dlt-india) — India's header +
  content-template regime.
