# 10DLC for Sub-Accounts

> Register independent 10DLC brands and campaigns for each of your sub-accounts

## 10DLC for Sub-Accounts

If you use **sub-accounts** to manage multiple clients, each client that sends SMS in the United States needs their own 10DLC registration. Since each sub-account represents a different business with its own legal entity, they cannot share a single brand registration.

## How It Works

Each sub-account (project) can independently register:

- **Its own Brand** — with the client's legal business information
- **Its own Campaigns** — with the client's specific messaging use cases
- **Its own Phone Numbers** — assigned to the client's approved campaigns

```
Parent Account
├── Sub-Account A (Client A)
│   ├── Brand: "Acme Corp"
│   ├── Campaign: "Order Notifications"
│   └── Phone: +1 (555) 111-0001
├── Sub-Account B (Client B)
│   ├── Brand: "Beta LLC"
│   ├── Campaign: "2FA Codes"
│   └── Phone: +1 (555) 222-0002
└── Sub-Account C (Client C)
    ├── Brand: "Gamma Inc"
    ├── Campaign: "Marketing"
    └── Phone: +1 (555) 333-0003
```

## Prerequisites

1. **Active sub-account** with an API key ([create one](https://www.zavu.dev/docs/guides/sub-accounts/creating))
2. **Business Verification (KYB)** approved on the parent account (submitting a brand or campaign without it returns `403 kyb_required`)
3. **Client's business information** (legal name, EIN, address, website)

## Step-by-Step Registration

Use the **sub-account's API key** for all requests below. This ensures the brand and campaign are scoped to that specific sub-account.

### 1. Register the Client's Brand

```bash
# Using the sub-account's API key
curl -X POST https://api.zavu.dev/v1/10dlc/brands \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entityType": "PRIVATE_PROFIT",
    "displayName": "Acme Corp",
    "companyName": "Acme Corporation",
    "ein": "12-3456789",
    "email": "compliance@acme.com",
    "phone": "+14155551234",
    "street": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "postalCode": "94102",
    "country": "US",
    "website": "https://acme.com",
    "vertical": "Technology"
  }'
```

### 2. Submit Brand for Review

```bash
curl -X POST https://api.zavu.dev/v1/10dlc/brands/{brandId}/submit \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY"
```

Wait 1-3 business days for brand verification. Check status:

```bash
curl -X POST https://api.zavu.dev/v1/10dlc/brands/{brandId}/sync \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY"
```

### 3. Create a Campaign

Once the brand is verified:

```bash
curl -X POST https://api.zavu.dev/v1/10dlc/campaigns \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brandId": "brand_abc123",
    "name": "Order Notifications",
    "useCase": "ACCOUNT_NOTIFICATION",
    "description": "Send order status updates to customers who opted in at checkout.",
    "sampleMessages": [
      "Hi {{name}}, your order #{{order_id}} has shipped!",
      "Your order #{{order_id}} has been delivered."
    ],
    "subscriberOptIn": true,
    "subscriberOptOut": true,
    "subscriberHelp": true,
    "numberPooling": false,
    "directLending": false,
    "embeddedLink": true,
    "embeddedPhone": false,
    "affiliateMarketing": false,
    "ageGated": false
  }'
```

### 4. Submit Campaign for Review

```bash
curl -X POST https://api.zavu.dev/v1/10dlc/campaigns/{campaignId}/submit \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY"
```

### 5. Assign Phone Numbers

After the campaign is approved, assign the sub-account's phone numbers:

```bash
curl -X POST https://api.zavu.dev/v1/10dlc/campaigns/{campaignId}/phone-numbers \
  -H "Authorization: Bearer $SUB_ACCOUNT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumberId": "pn_abc123"
  }'
```

## Managing via Dashboard

Team owners can also manage 10DLC registration for each sub-account through the dashboard:

1. Navigate to the sub-account in your [Dashboard](https://dashboard.zavu.dev)
2. Switch to the sub-account's project context
3. Go to **Compliance** → **10DLC**
4. Follow the standard registration flow

## Cost

All 10DLC fees are charged from the **parent team's balance**:

| Item | Cost |
|------|------|
| Brand registration per sub-account | $4 one-time |
| Campaign registration per sub-account | $15 one-time ($2 for `LOW_VOLUME`) |
| Campaign monthly fee per sub-account | $10/month ($2 for `LOW_VOLUME`) |

> **Note:**
> Each sub-account registers its own brand and campaign, so each pays these fees once.

## Best Practices

- **Register early** — Brand and campaign approval can take up to 7 business days
- **Use accurate business info** — Mismatches between the brand and official records cause rejections
- **One brand per sub-account** — Each sub-account represents one business entity
- **Set credit limits** — Use [credit limits](https://www.zavu.dev/docs/guides/sub-accounts/managing) to control spending per sub-account

## Next Steps

  - [Sub-Accounts Overview](https://www.zavu.dev/docs/guides/sub-accounts/overview): Learn about sub-accounts
  - [10DLC Overview](https://www.zavu.dev/docs/guides/10dlc/overview): Full 10DLC registration guide
