Subscription Plans
ThingsBoard Cloud uses a flexible pay-as-you-go model. Choose a subscription plan that matches your project scope, then top up entity and API limits on demand.
See Pricing for current pricing and to manage your subscription.
Subscription plans
Section titled “Subscription plans”| Plan | Target audience | Price |
|---|---|---|
| Free | Start exploring features | $0/month |
| Prototype | PoCs and MVPs | $49/month |
| Pilot | Upcoming IoT projects | $149/month |
| Startup | Defined long-term projects | $399/month |
| Business | Scalable IoT growth | $749/month |
Entity limits
Section titled “Entity limits”| Entity | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| Devices | 5 | 50 | 100 | 500 | 1,000 |
| Assets | 5 | 50 | 100 | 500 | 1,000 |
| Customers | 2 | 5 | 50 | 100 | 200 |
| Users | 5 | 10 | 50 | 100 | 200 |
| Dashboards | 5 | 50 | 100 | 200 | 500 |
| Rule chains | 3 | 5 | 20 | 50 | 100 |
| Integrations | 1 | 3 | 5 | 10 | 20 |
| Converters | 3 | 10 | 15 | 25 | 50 |
| Scheduler events | 5 | 10 | 100 | 250 | 500 |
File storage limits
Section titled “File storage limits”| Limit | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| OTA package upload size | 50 MB | 50 MB | 50 MB | 50 MB | 50 MB |
| Total OTA package storage | 512 MB | 512 MB | 1 GB | 2 GB | 4 GB |
| Resource file upload size | 10 MB | 10 MB | 25 MB | 25 MB | 25 MB |
| Total resources storage | 512 MB | 512 MB | 1 GB | 2 GB | 4 GB |
The Total resources storage limit caps the combined size of all files in the Resources library (Resources section of the main menu). OTA packages are stored separately and have their own quota: each upload is capped at 50 MB, and the Total OTA package storage limit caps the combined size of all packages per tenant.
API limits (monthly)
Section titled “API limits (monthly)”| Limit | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| Transport messages | 0.5M | 5M | 50M | 250M | 500M |
| Transport data points | 1M | 10M | 100M | 500M | 1B |
| Rule Engine executions | 3M | 30M | 250M | 1B | 2B |
| JavaScript executions | 100K | 1M | 10M | 50M | 100M |
| Data point storage days | 30M | 1B | 10B | 100B | 200B |
| Alarms | 200 | 1,000 | 4,000 | 20,000 | 40,000 |
| Emails | 100 | 1,000 | 2,000 | 10,000 | 40,000 |
| SMS | 0 | 10 | 100 | 500 | 1,000 |
| AI credits | 2.5M | 4M | 6M | 8M | 16M |
Storage retention
Section titled “Storage retention”Time-series and alarm data are automatically expired after the retention period. The Default storage TTL applies to time-series data unless you override it (see Data point storage days). The Alarms TTL and RPC TTL are fixed by your plan.
| Limit | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| Default storage TTL | 30 days | 60 days | 180 days | 365 days | 365 days |
| Alarms TTL | 30 days | 60 days | 180 days | 365 days | 365 days |
| RPC TTL | 30 days | 60 days | 180 days | 365 days | 365 days |
Data point storage days
Section titled “Data point storage days”Data point storage days are calculated for all time-series data points stored in the database. The platform multiplies the number of data points by the number of days those data points are stored. The number of days is taken from the TTL applied to each data point.
The Default storage TTL of your plan is used when no other TTL is set. You can override it in the Save Time Series rule node or with the TTL metadata field of a message; both take the value in seconds (for example, 31536000 for 365 days). This lets you optimize storage consumption: for example, store raw data for 3 months and aggregated data for 3 years by using a specific calculated field. The max allowed TTL for ThingsBoard Cloud is 5 years. ThingsBoard Private Cloud can support a longer TTL.
How data point storage days are counted
Section titled “How data point storage days are counted”Data point storage days are counted at the moment data is written. Each stored data point adds its full TTL to the counter of the current subscription period:
data point storage days (DPSD) = data points × TTL (days)
- The DPSD is counted immediately, not day by day. Increasing the TTL from 30 to 365 days makes each new data point consume 12 times more of the limit in the same month.
- A TTL shorter than one day counts as one day. Partial days are rounded down.
- Only time-series data counts. Attributes do not.
- A data point value is counted in chunks of 512 characters. If a string or JSON value exceeds this length, the initial data point turns into multiple points using the formula: total number of characters / 512, rounded up to the nearest whole number (examples: 300 characters → 1 data point; 512 characters → 1 data point; 513 characters → 2 data points). Numeric and boolean values always count as one data point.
Examples
Section titled “Examples”Single message. A device sends {"temperature": 22, "humidity": 45, "battery": 87} (3 data points) with a 30-day TTL: 3 × 30 = 90 data point storage days.
Fleet on the Pilot plan. 100 devices send 10 keys every minute:
- Data points per month: 100 × 10 × 43,200 messages = 43.2M
- With the default 180-day TTL: 43.2M × 180 = 7.78B, within the 10B limit
- With TTL overridden to 365 days: 43.2M × 365 = 15.77B, exceeds the limit
Raw and aggregated data. Same fleet. Raw data is retained for 30 days. Aggregated data is kept for 365 days:
- Raw: 43.2M × 30 = 1.30B
- Hourly aggregates: 100 × 10 × 720 = 720K data points × 365 = 0.26B
- Total: 1.56B, about 10 times less than storing raw data for a year
To use this limit efficiently, see how to configure time-series data retention.
Rate limits
Section titled “Rate limits”Rate limits are enforced per second, per minute, and per hour. When a rate limit is breached, the platform rejects excess messages and notifies the tenant administrator.
Tenant-level limits
Section titled “Tenant-level limits”Tenant transport rate limits scale with the subscription plan.
| Metric | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| All transport messages | 100/s · 2K/min · 75K/h | 1K/s · 30K/min · 750K/h | 2K/s · 60K/min · 1.5M/h | 10K/s · 300K/min · 7.5M/h | 20K/s · 600K/min · 15M/h |
| Telemetry messages | 50/s · 1K/min · 35K/h | 500/s · 15K/min · 350K/h | 1K/s · 30K/min · 700K/h | 5K/s · 150K/min · 3.5M/h | 10K/s · 300K/min · 7M/h |
| Telemetry data points | 100/s · 2K/min · 70K/h | 1K/s · 30K/min · 700K/h | 2K/s · 60K/min · 1.4M/h | 10K/s · 300K/min · 7M/h | 20K/s · 600K/min · 14M/h |
| Integration messages | 50/s · 1K/min · 30K/h | 500/s · 15K/min · 350K/h | 1K/s · 30K/min · 750K/h | 5K/s · 150K/min · 3.5M/h | 10K/s · 300K/min · 7.5M/h |
Per-device limits
Section titled “Per-device limits”Device-level rate limits are the same for all paid plans. The Free plan has lower limits.
| Metric | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| All transport messages | 50/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h |
| Telemetry messages | 50/s · 600/min · 7K/h | 100/s · 600/min · 7K/h | 100/s · 600/min · 7K/h | 100/s · 600/min · 7K/h | 100/s · 600/min · 7K/h |
| Telemetry data points | 100/s · 2K/min · 15K/h | 200/s · 2K/min · 15K/h | 200/s · 2K/min · 15K/h | 200/s · 2K/min · 15K/h | 200/s · 2K/min · 15K/h |
| Integration messages | 50/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h | 100/s · 1K/min · 15K/h |
Gateway limits
Section titled “Gateway limits”Aggregate limits applied across all devices connected through a single gateway.
| Metric | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| All transport messages | 100/s · 2K/min · 60K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h |
| Telemetry messages | 50/s · 1K/min · 30K/h | 500/s · 15K/min · 180K/h | 500/s · 15K/min · 180K/h | 500/s · 15K/min · 180K/h | 500/s · 15K/min · 180K/h |
| Telemetry data points | 100/s · 2K/min · 60K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h | 1K/s · 30K/min · 360K/h |
REST limits
Section titled “REST limits”| Metric | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| REST requests (Tenant) | 100/s · 1K/min | 100/s · 2K/min | 100/s · 2K/min | 100/s · 2K/min | 100/s · 2K/min |
| REST requests (Customer) | 50/s · 500/min | 50/s · 1K/min | 50/s · 1K/min | 50/s · 1K/min | 50/s · 1K/min |
WebSocket limits
Section titled “WebSocket limits”| Metric | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| Updates per session | 1K/s · 5K/min | 1K/s · 10K/min | 1K/s · 10K/min | 1K/s · 10K/min | 1K/s · 10K/min |
| Sessions (Tenant) | 50 | 100 | 1K | 2K | 4K |
| Subscriptions (Tenant) | 2K | 2K | 4K | 20K | 40K |
| Sessions (Customer) | 50 | 50 | 500 | 1K | 2K |
| Subscriptions (Customer) | 1K | 1K | 2K | 10K | 20K |
| Sessions (Public user) | 20 | 100 | 250 | 250 | 250 |
| Subscriptions (Public user) | 1K | 1K | 5K | 5K | 5K |
| Sessions (Regular user) | 20 | 50 | 100 | 100 | 100 |
| Subscriptions (Regular user) | 400 | 1K | 2K | 2K | 2K |
| Queue messages per session | 100 | 250 | 500 | 500 | 500 |
K = 1 thousand, M = 1 million.
Rule Engine queues
Section titled “Rule Engine queues”Queue availability depends on your subscription plan.
All plans include the same default queues: Main, HighPriority, and SequentialByOriginator.
| Capability | Free | Prototype | Pilot | Startup | Business |
|---|---|---|---|---|---|
| Rule Engine | Shared | Shared | Shared | Isolated | Isolated |
| Queue partitions | Shared | Shared | Shared | 1 per queue | 3 per queue |
- Shared — your tenant’s messages are processed by a shared Rule Engine pool. The three default queues are available, but you cannot modify their settings or create custom queues.
- Isolated — your tenant gets dedicated Rule Engine resources with pre-configured queues. Higher partitions allow more parallel processing.
Calculated fields limits
Section titled “Calculated fields limits”All plans share the same calculated fields configuration:
| Parameter | Value |
|---|---|
| Max calculated fields per entity | 10 |
| Max arguments per calculated field | 10 |
| Min scheduled update interval | 10 seconds |
| Max relation level per argument | 2 |
| Max related entities per argument | 1,000 |
| Max data points per rolling argument | 1,000 |
| Max state size | 32 KB |
| Min deduplication interval | 10 seconds |
| Min aggregation interval | 60 seconds |
Top-ups
Section titled “Top-ups”Increase limits on demand without changing your plan.
Entity top-ups
Section titled “Entity top-ups”| Pack | Contents | Price |
|---|---|---|
| Extra Device Pack | +50 devices, +50 assets | $15 |
| Extra Customer Pack | +10 customers, +10 users | $10 |
| Extra Integration Pack | +1 integration, +1 converter | $10 |
| Extra Calculated Field | +1 calculated field per entity | $5 |
API limit top-ups
Section titled “API limit top-ups”| Pack | Contents | Price |
|---|---|---|
| Traffic Pack | +2.5M transport messages, +5M data points | $5 |
| Compute Pack | +5M Rule Engine executions, +1M JavaScript executions | $25 |
| Storage Pack | +1B data point storage days | $10 |
| Alarm Pack | +1,000 alarms/month | $1 |
| Email Pack | +1,000 emails/month | $1 |
| SMS Pack | +100 SMS/month | $15 |
| AI Credits Pack | +1M AI credits | $5 |
Add-ons
Section titled “Add-ons”| Add-on | Description | Availability |
|---|---|---|
| White Labeling | Custom branding for web UI, email templates, and login pages | Included from Pilot plan |
| Edge Computing | Local data processing on edge devices | Available as add-on |
| Trendz Analytics | Business intelligence and predictive analytics | Available as add-on |
Cancel subscription
Section titled “Cancel subscription”To cancel, go to Plan and billing → click Cancel subscription → confirm.
Was this helpful?