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

# Sender IDs

> Register the alphanumeric name recipients see on their phone.

In Africa, the "From" on an SMS must be a **registered sender ID** — a short alphanumeric string like `SHUTTLERS` or `PAYSTACK`. Each country has its own regulator:

| Country       | Regulator | What's required                         |
| ------------- | --------- | --------------------------------------- |
| Nigeria       | NCC       | Registered business + approved use case |
| Ghana         | NCA       | Business registration                   |
| Kenya         | CA        | Shortcode registration (for premium)    |
| Côte d'Ivoire | ARTCI     | Business registration                   |

We handle the regulator paperwork for you — but we need compliance metadata before submitting.

## Register a sender ID

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.robase.dev/v1/sender-ids \
    -H "Authorization: Bearer rb_live_xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "sender_id": "SHUTTLERS",
      "countries": ["NG", "GH"],
      "registered_entity": "Shuttlers Technology Limited",
      "registration_doc_url": "https://bucket.example/cac.pdf",
      "use_case": "Booking confirmations, ride status updates, receipts",
      "sample_message": "Your Shuttlers ride with Chidi arrives in 3 min. Reg: ABC 123 XY."
    }'
  ```

  ```typescript Node.js theme={null}
  await pm.senderIds.create({
    sender_id: 'SHUTTLERS',
    countries: ['NG', 'GH'],
    registered_entity: 'Shuttlers Technology Limited',
    registration_doc_url: 'https://bucket.example/cac.pdf',
    use_case: 'Booking confirmations, ride status updates, receipts',
    sample_message: 'Your Shuttlers ride with Chidi arrives in 3 min. Reg: ABC 123 XY.',
  });
  ```
</CodeGroup>

## Lifecycle

<Steps>
  <Step title="pending">
    You submit the registration. The sender ID is usable in **test mode** immediately but blocked in live mode until approved.
  </Step>

  <Step title="approved / active">
    Our compliance team submits to the regulator. On approval the status flips; subsequent sends succeed.
  </Step>

  <Step title="rejected">
    Regulator rejected — you'll see `rejection_reason` on the resource. Sends fail with `sender_id_invalid`. Fix the reason and submit a new registration.
  </Step>
</Steps>

<Tip>
  Rejected sender IDs block **both live and test mode**. Test mode is designed to catch compliance failures the same way production does — silently allowing rejected senders in test would surprise you in prod.
</Tip>

## List your sender IDs

```typescript theme={null}
const { data } = await pm.senderIds.list();
for (const sid of data) {
  console.log(sid.sender_id, sid.status, sid.countries);
}
```

## Edit compliance metadata

While a sender ID is `pending`, you can update its metadata (e.g. fix a typo in the use case):

```typescript theme={null}
await pm.senderIds.update('sid_01H8...', {
  use_case: 'Updated: booking confirmations + ride receipts',
});
```

Approved or rejected sender IDs are read-only — the audit trail stays intact.

## Best practices

<AccordionGroup>
  <Accordion title="Make the sender ID recognizable">
    Recipients block unknown senders. `SHUTTLERS` is clearly the brand. `MSG-123` is not — that looks like spam.
  </Accordion>

  <Accordion title="Use the same sender ID across channels">
    If your marketing copy says "From: SHUTTLERS", make sure every transactional message also uses `SHUTTLERS`. Consistency builds trust.
  </Accordion>

  <Accordion title="Sample message matters">
    Regulators check whether your sample message matches the use case. Don't submit "Hi!" — write a realistic message the recipient would actually receive.
  </Accordion>

  <Accordion title="Register once per country you target">
    Registration is country-specific. Register NG + GH now even if you only send to NG today — the lead time on GH approval catches you by surprise otherwise.
  </Accordion>
</AccordionGroup>

## Expedited review

Need a sender ID approved same-day for a launch? Email **[support@robase.dev](mailto:support@robase.dev)** with your ticket ID. We can prioritize with the regulator on the Scale plan.
