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

# Registering a Number for Texts

> US carriers block texts sent from an unregistered number. Fill in your business details once, register your agent's number, and it can reply.

# Registering a Number for Texts

A voice agent with [its own phone number](/voice#give-an-agent-its-own-phone-number-inbound-calls)
starts **receiving** texts the moment it has that number. Erdo keeps every one of them and honors
opt-out from day one — nothing here is needed for that.

**Sending** is different. US mobile carriers will not carry business texts from an ordinary
ten-digit number unless the account behind it is registered under a programme called
**A2P 10DLC**: the carriers want to know which real business is texting, and what it is texting
about, before they will deliver anything. An unregistered number's messages are simply refused.

So a number can capture texts perfectly and still be unable to answer one. That is almost always
the explanation when an agent looks silent on SMS.

Registration is per organization, and it is Erdo that files it — you provide the business details
and approve the request.

## What you fill in

Everything the carriers need is one form, at **Settings → Business**:

| Field                     | What it has to be                                                                                                                                                                                                                                           |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Legal name                | Your registered legal name, exactly as it appears on your tax record. Not a trading name, not an abbreviation — the carriers match it against the tax id.                                                                                                   |
| Entity type               | Private company, public company, non-profit, sole proprietor, or government.                                                                                                                                                                                |
| Legal structure           | How the business is incorporated: sole proprietorship, partnership, limited liability corporation, co-operative, non-profit corporation, or corporation.                                                                                                    |
| Stock exchange and ticker | Public companies only. The registry asks a listed business where its shares trade and under what symbol; the form asks for them only when you pick "public company".                                                                                        |
| Tax ID (EIN)              | Your nine-digit US EIN. A sole proprietor has none, so the form stops asking when you pick that entity type — and clears any EIN already stored, because it belonged to a different kind of business. Switching back to a company means entering one again. |
| Registered address        | Street, city, state, postal code, country.                                                                                                                                                                                                                  |
| Website                   | Your own site. Reviewers open it, so it has to be reachable and describe the business.                                                                                                                                                                      |
| Industry                  | The closest match from the list on the form.                                                                                                                                                                                                                |
| Privacy policy URL        | Your own privacy policy page, on `https`. Every campaign registration has to name one — a registration filed without it is rejected, after the review fee has been taken — so Erdo asks for it here rather than letting you find out later.                 |
| Terms & conditions URL    | Your own terms page, on `https`. Required for the same reason, and checked the same way.                                                                                                                                                                    |
| Authorised representative | A real person the carriers can contact: name, job title, role, email and phone.                                                                                                                                                                             |

Entity type and legal structure look like one question asked twice, and they are not. Entity type is
whether the business is privately held, publicly traded, a non-profit and so on; legal structure is
its legal form, the one written on the tax record. Acme Holdings LLC is a private company *and* a
limited liability corporation, and the registry asks for both because it checks the second against
that record. An LLC declared as a corporation is not caught when you save it — it comes back days
later as a rejection, with the review fee already spent.

Only an **organization admin** can see or change this page.

<Note>
  Your tax ID is stored encrypted and is never shown again — the form displays only its last four
  digits, and you re-enter it to change it. It is never returned by the API, never written to a log,
  and never appears in a chat. **Erdo's agents have no way to write it, and will never ask you for it
  in a conversation** — they can only tell you which fields are still empty and point you here.
</Note>

## Registering the number

Once the profile is complete, press **Register for SMS** next to the number on the same page.

Because registration costs money, it goes through an **approval card** like any other spend: you
see the number, which agent answers on it, your organization, and the fees before you approve.
Erdo pays those fees for you during the pilot — the card states them so nobody approves a charge
blind. As of writing they are approximately **$4.50** once to register the business, **$15** once
for campaign review (not refunded if the review fails), and about **\$1.50 a month** for the
campaign. Twilio publishes the current figures.

You can do the same thing from anywhere else you work:

<CodeGroup>
  ```bash CLI theme={null}
  # What each of your numbers is waiting on
  erdo voice numbers list

  # Fill in the business details. The tax id is never a flag — it is prompted for
  # and never echoed, because a flag would put it in your shell history and in the
  # process list. Add --replace-tax-id to change one that is already stored, or
  # --tax-id-stdin to pipe it in from a script.
  erdo org business-profile set \
    --legal-name "Acme Holdings LLC" \
    --entity-type private_for_profit \
    --legal-structure limited_liability_corporation \
    --street "1 Market Street" --city Miami --region FL \
    --postal-code 33131 --country US \
    --website-url https://acme.example \
    --industry REAL_ESTATE \
    --privacy-policy-url https://acme.example/privacy \
    --terms-url https://acme.example/terms \
    --first-name Alex --last-name Rivera \
    --title "Managing Partner" --job-position director \
    --email alex@acme.example --phone +13055550123

  # Ask for the number to be registered
  erdo voice numbers provision-sms +17865550123

  # And read what it is waiting on afterwards
  erdo voice numbers get +17865550123

  # Replacing a stored tax id: prompted, still never echoed
  erdo org business-profile set --replace-tax-id

  # Or, from a script, with nothing in argv
  pass show acme/ein | erdo org business-profile set --tax-id-stdin
  ```

  ```bash REST theme={null}
  curl -X PUT https://api.erdo.ai/v1/org/business-profile \
    -H "Authorization: Bearer $ERDO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"legal_name":"Acme Holdings LLC","entity_type":"private_for_profit","legal_structure":"limited_liability_corporation", ... }'

  curl https://api.erdo.ai/v1/voice/phone-numbers \
    -H "Authorization: Bearer $ERDO_API_KEY"

  curl -X POST https://api.erdo.ai/v1/voice/phone-numbers/+17865550123/sms \
    -H "Authorization: Bearer $ERDO_API_KEY"
  ```
</CodeGroup>

Through MCP the same surfaces are `erdo_get_business_profile`,
`erdo_set_business_profile`, `erdo_voice_phone_number_list` and
`erdo_voice_phone_number_sms_provision`. `erdo_set_business_profile` deliberately
cannot set the tax ID — an assistant filling that field in would put it in its own
conversation history — so use the settings page, the REST endpoint or the CLI for
that one field.

And in chat you can simply ask — "why isn't my number replying to texts?" — and the agent will read
the registration state and tell you which fields are missing or what the carriers said.

## What the states mean

| State                     | What is happening                                                                                                                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Unregistered**          | Nothing has been submitted. The number receives texts; it cannot send one to a US mobile.                                                                                                     |
| **Pending**               | The registration is under way. Most of this time is the carriers reviewing the campaign, which takes days rather than minutes. Nothing is required from you.                                  |
| **Approved**              | Everything is in place and the number can reply.                                                                                                                                              |
| **Failed**                | Twilio or a carrier rejected something and said why.                                                                                                                                          |
| **Approved, out of date** | The number is registered and sending, but the business profile has been edited since it was submitted, so the carriers still hold the previous legal identity. Re-send it when you are ready. |

Alongside the state you will see **what it is waiting on** — the business profile being reviewed,
the brand being verified, the campaign in carrier review — and, when something was rejected, the
reviewer's own words for it, usually naming the exact field. A rejection also appears in your work
feed, so nobody has to be watching this page for it to be noticed.

**Editing the profile after a number is approved does not reach the carriers on its own.** The
registration holds the legal identity that was submitted, so renaming the business, moving the
registered address or changing the authorised representative leaves Erdo showing the new details
over a registration that still carries the old ones. Erdo notices within a day and says so: the
number is marked **out of date** with the fields that moved, and a work-feed item explains it. The
number keeps sending throughout — what is stale is what the registry knows about the business, not
the number's permission to text. Re-sending it is your call rather than Erdo's, because it re-opens
carrier review for days and is not something to trigger by editing a form: press **Re-send the
business profile** on the number, or run `erdo voice numbers provision-sms` again. Nothing already
accepted is paid for twice.

**Approved** is checked rather than assumed. A registration can be withdrawn after it was granted —
the registry can suspend a business registration, or begin removing one, and the carriers stop
carrying its messages from that moment. Erdo re-asks about every approved number once a day, so a
registration that has been withdrawn moves to **Failed** with the reason and raises the same work-feed
item a rejection does, instead of the page going on saying the number can reply while every reply is
being refused.

## When it is rejected

Fix the field the reviewer named at **Settings → Business** and press **Register for SMS** again.

Registration **resumes** rather than starting over: whatever was already accepted stays accepted,
and your corrected details are sent up to replace the ones that were rejected. If the rejection came
before the business registration itself went in — which is most of them, and all the ones that name a
field — the correction costs nothing extra. If the registration was rejected by the registry, it
cannot be amended there and has to be filed again, which is a second registration fee; Erdo pays it
during the pilot, and the card says so. The same is true one step further on: a **campaign** the
carriers turn down cannot be amended either, so correcting the field they named files a new campaign
and the review fee is charged again. That fee buys a submission rather than an outcome, and it is
not refunded — which is why Erdo says so here rather than leaving it to appear on an invoice.

Moving country is the one correction that is more than an edit. The carriers do not allow a
registered address to change country, so Erdo files a new address and a new supporting document and
detaches the old one. You do not have to do anything differently — change the address on the form
and register again — but the registration goes back through review with the new address rather than
carrying the old one forward.

Re-pressing the button without changing anything sends nothing and costs nothing. There is nothing
to correct, so the answer would be the same.

The commonest rejections are worth knowing in advance:

* **The legal name does not match the tax ID.** Use the name on the tax record, not the trading name.
* **The website does not describe the business.** A parked domain or a page that says nothing about
  what you do gets rejected.
* **The representative cannot be reached.** The email and phone have to belong to a real person at
  the business.

## Two cases Erdo cannot register for you

**A sole proprietor** — someone trading as themselves, with no EIN — is registered through a
different route that requires a one-time code sent to the owner's mobile phone, which a person has
to read and enter. Erdo will tell you this rather than half-submitting; contact support and we will
walk it through with you.

**A government entity** has no matching category in the carrier registry, so it also needs a person.
Same answer: Erdo says so plainly instead of guessing at a category that would be rejected weeks
later.

In both cases the refusal comes back straight away, when you press the button, rather than as a
registration that sits saying "pending" for days and never moves. The number itself keeps receiving
texts throughout.

## Giving a number up

Releasing a number also cancels its campaign registration. That matters because the campaign is the
one part of this that costs money every month: the carriers bill it for as long as it is registered,
whether or not anything is sending through it. Erdo cancels it the moment the last registered number
on your account is released, so the fee stops with the number rather than running on invisibly.

Your **brand** — the registration of the business itself — is kept. It has no recurring fee, and a
replacement number on the same account reuses it, so you do not pay the one-time brand fee twice.
What a new number does need is a new campaign, and the campaign review fee is charged again; that is
the carriers' fee for reviewing a submission, and it is not refunded or reusable.

Releasing one of several numbers changes nothing: the campaign belongs to the account, the numbers
that are left still send through it, and it is cancelled only when the last one goes.

## What this does not cover

Registration is about a number being *allowed* to send. It is not the reply feature itself — see
[SMS Messaging](/messaging) for what Erdo does with an incoming text today, and
[Voice](/voice) for the agent that owns the number.

Numbers on Erdo's own shared account, rather than your organization's, are registered by Erdo
centrally and are not something you can request here.
