Tenants
Multi-tenancy model—tenants, environments, settings, and data isolation.
What are tenants
A tenant is an isolated workspace. All data—expected transactions, incoming transactions, matches, data sources, webhooks, jobs—belongs to a tenant. Tenants are identified by UUID and have a human-readable name, slug, and abbreviation. Use tenants to separate customers, brands, or business units.
Multi-tenancy model
| Concept | Description |
|---|---|
| Tenant | Top-level isolation. Each tenant has its own environments, settings, and data. |
| Environment | Per-tenant: development, staging, production, test. Data is isolated per environment. |
| Settings | Per tenant and environment. Matching threshold, locale, job schedules, LedgerMatch preferences, cache. |
| TenantUser | User–tenant assignment. Users are assigned to tenants with a role (admin, viewer) per environment. |
Every API request includes X-Tenant-Id and X-Environment. The API enforces that the authenticated user or API key is allowed for that tenant and environment. For API keys, both headers are required and must exactly match the tenant and environment the key was issued for.
Environments
Each tenant has one or more environments. Typical setup:
- development — Local or dev testing
- staging — Pre-production
- production — Live data
- test — Automated tests (E2E, integration)
Data in production is separate from staging. Create environments as needed. See Environments.
Settings
Settings are stored per tenant and environment. They control:
- Matching — Confidence threshold, auto-match, matching mode
- Locale — Timezone, currency, date/number format (used by field mappings)
- Jobs — Stripe sync schedule, matching schedule, retention
- LedgerMatch — REST vs gRPC, timeout, retries
- Cache — Enable/disable match and expected caches
Update via PATCH /tenants/:id/settings with X-Environment. See Settings and Configuration Reference.
Tenant lifecycle
- Create —
POST /tenantswith name, optional slug, abbreviation. See Managing Tenants. - Add environments —
POST /tenants/:id/environmentsfor each environment you need. - Configure settings —
PATCH /tenants/:id/settingsper environment. - Assign users — Grant users access via Users. Invite emails are sent by default.
- Configure org branding (optional) —
PATCH /tenants/:id/brandingfor display name and logo. See Branding. - Configure email notifications (optional) —
PATCH /tenants/:id/email-settings. See Email Settings. - Configure email transport (optional) —
PATCH /tenants/:id/email-settings/transportfor custom SMTP. See Email Transport. - Update or delete —
PATCHorDELETEtenants as needed. Deleting a tenant cascades to all related data.
Next steps
- Managing Tenants — Create, list, update, delete
- Environments — Add and list environments
- Settings — Configure per-environment behavior
- Branding — Org display name and logo (app UI + email)
- Email Settings — Notification toggles and reply-to
- Email Transport — Per-tenant SMTP delivery configuration
- Users — Assign users to tenants