# Brands and franchisees

## Franchisor

A **franchisor** is a brand. It has a name, the programs Rikor runs for it, and a published **requirement set**\:
the coverages its franchisees must carry and the minimums each must meet.

```json
{
  "object": "franchisor",
  "id": "65f0c2a1e4b0a1b2c3d4e5f6",
  "name": "Northside Fitness",
  "programs": { "policy_monitoring": true, "compliance_monitoring": true },
  "readiness": "live",
  "franchisee_count": 142,
  "as_of": "2026-10-29T17:02:11.000Z"
}
```

`readiness` says whether the brand can grade a certificate today\: `not_started`, `draft`, or `live` (a requirement
set is published). `GET /v1/franchisors/{id}/requirements` returns that set.

## Franchisee

A **franchisee** is one location of a brand\: the business, never its owner. The API exposes the legal entity name,
DBA, center name, city, state and postal code, and where the location stands.

| Field | What it is |
| --- | --- |
| `compliance_status` | The account verdict\: `compliant`, `non_compliant`, `pending`, `exempt` or `unknown` |
| `compliance_score` | 0–100, `null` until the first certificate is graded |
| `policy_status` | The worst monitored coverage\: `active`, `expiring`, `lapsed`, `not_verified`, `exempt` or `unknown` |
| `next_expiration_date` | The soonest upcoming expiration among coverages that are not exempt |
| `external_id` | Your own id for the location, once you [set one](/guides/external-ids) |
| `updated_at` | When the record last changed; drives [incremental sync](/guides/sync) |

`GET /v1/franchisees/{id}` adds `coverages`, the [per-coverage ledger](/concepts/compliance).

## What is never exposed

Owner names, emails and phone numbers, tax ids, revenue and payroll, driver and vehicle lists, internal notes,
documents, and Rikor's internal account fields. A field that is not in the API reference does not leave Rikor.
