Skip to main content

Egress Over Everything: Booking Synadia Cloud's Per-GiB NATS Egress Pricing as Variable Infra COGS

Published 12 min readMike ThriftMike Thrift
Egress Over Everything: Booking Synadia Cloud's Per-GiB NATS Egress Pricing as Variable Infra COGS
On this page

You signed up for the 49-dollar Starter plan and budgeted exactly that. Then the second invoice lands at twice the number, and nothing in your dashboard explains why. The plan price was never the price. The bytes leaving the cloud were. Synadia Cloud meters every gigabyte your applications pull out of its NATS service, and overage is where a flat subscription turns into a variable bill that scales with your traffic.

The timing matters. NATS graduated from the CNCF on November 10, 2026, with more than 400 million downloads and over 2,000 companies running it. A wave of teams is moving from self-hosted NATS to the managed cloud right now, trading operational toil for a meter they have never watched before. This post explains how Synadia Cloud prices network data, what that costs at realistic volume, why production messaging belongs in cost of goods sold rather than overhead, and how to book it so your gross margin tells the truth.

How Synadia Cloud Prices Network Data​

Synadia applies plans to teams, and every team starts on the free Personal plan. The paid ladder is short: Starter at 49 dollars a month, Pro at 199 dollars a month, and Enterprise on a custom contract. Each tier bundles a block of included network data alongside its connection, stream, and storage limits. Personal includes 10 GiB, Starter includes 100 GiB, Pro includes 1 TiB, and Enterprise includes 2 TiB.

The included block is the whole game, because what happens past it depends on your plan. On the free Personal plan there is no overage billing at all. If the team exceeds 10 GiB, active and new client connections are dropped until the next billing cycle or until the plan is upgraded. Your demo-day traffic spike does not cost money on Personal. It costs availability.

On every paid plan, overage is metered and charged at the end of the billing cycle, priced by traffic type. Three rates, separated by nearly an order of magnitude:

  • Client and leaf egress: 9 cents per GiB
  • Gateway egress: 2 cents per GiB
  • Route ingress and egress: 1 cent per GiB

Note what is missing from that list. Publishing into the cloud is not metered. The meter runs on bytes flowing out, which means fan-out is the multiplier on every Synadia bill. One message published once and delivered to ten consumers is ten deliveries of egress, not one.

Client and leaf egress at 9 cents per GiB​

This is the rate that dominates real invoices, and it covers the two ways your systems consume data. Client egress is every byte delivered from the cloud to your applications: subscriber deliveries, request-reply responses, and stream reads. Leaf egress is the same idea extended to the edge. A leaf node is a NATS server on your own network that dials out to the cloud hub and bridges subject interest across that link, so a factory floor or a retail store behind a firewall can publish and subscribe without any inbound firewall rule.

The billing consequence is that the edge is not free. Every byte the cloud forwards down a leaf link is egress at the top rate. A leaf subscription scoped to a tight subject like orders.created pulls exactly that subject. A lazy subscription to everything pulls the whole firehose across a 9-cent link. Interest scoping at the edge is a cost control, not just good hygiene.

Gateway egress at 2 cents per GiB​

Gateways join clusters into a supercluster, typically across regions, so a workload in one region can reach subjects in another. Gateway egress is the replication and cross-region traffic between those clusters, metered at 2 cents per GiB.

Two cents sounds negligible until you remember it stacks on top of the cloud provider's own transfer charges underneath. Synadia's own operational guidance flags a high gateway-traffic ratio as a problem worth fixing, noting that cross-availability-zone transfer alone runs about a cent per gigabyte in each direction. A team replicating heavily across regions pays the provider's transfer cost and Synadia's gateway meter on the same bytes. Keep publishers, streams, and consumers in one region unless the architecture genuinely needs geo-distribution.

Route traffic at 1 cent per GiB​

Routes are the intra-cluster links between NATS servers, carrying the routing and replication chatter that keeps a cluster coherent. At a penny per GiB in both directions, this is the cheapest meter on the page by design. It exists so that running a resilient multi-server topology does not punish you. If route traffic ever shows up as a meaningful line on your invoice, something structural is wrong, because it takes nine times the volume to match a dollar of client egress.

What This Costs at Real Volume​

Per-gigabyte rates only make sense multiplied out, so here are three realistic shapes.

A side project with a handful of services fits inside Starter's 100 GiB without thinking about it. Ten thousand small messages a day, each delivered to two consumers, moves roughly 20 GiB a month. The invoice is 49 dollars flat, zero overage, and the effective rate on the included data is about 49 cents per GiB. The mistake at this scale is upgrading to Pro for headroom you do not need: 150 dollars more a month to hold gigabytes you never touch.

A mid-size SaaS platform streaming order and notification events to its workers and two edge leaf nodes pushes about 1.2 TiB of client and leaf egress a month. On Starter that is roughly 1,129 GiB of overage at 9 cents, or about 102 dollars over the 49-dollar base, for a 151-dollar invoice. Still cheaper than Pro's 199 dollars, and the breakeven is farther away than most teams guess: the 150-dollar step from Starter to Pro buys its way back on network data alone only past about 1.6 TiB of monthly overage. Below that line you upgrade for connections, streams, or storage, never for the data block. Run that division before you click upgrade.

Now add geo-replication. The same platform mirrors streams across regions for disaster recovery, adding 500 GiB of gateway egress, and total client egress lands just under 2 TiB on the Pro plan. Client overage is 960 GiB past the included terabyte at 9 cents, or 86.40 dollars. Gateway overage is 500 GiB at 2 cents, or 10 dollars. The invoice is 199 plus 96.40, or 295.40 dollars, and two-thirds of the overage comes from a replication topology nobody priced when it was drawn on a whiteboard. That is the recurring shape of a surprising Synadia bill: not one big number, but fan-out and replication multiplying a small rate.

Why Production Messaging Is Variable COGS, Not Overhead​

Messaging that delivers your product to paying customers is a direct cost of revenue. It scales with usage, it disappears when nothing sells, and investors expect to see it above the gross-margin line alongside compute, database, storage, and bandwidth for production.

Accounting standards leave room here: generally accepted principles do not precisely define cost of goods sold, and SaaS gross-margin practice fills the gap with a direct-cost test. Ask whether the spend exists to serve customers in production. Streams carrying order events, deliveries fanning out to customer-facing workers, and leaf links feeding edge locations that serve customers all pass. The staging account replaying last week's traffic, the load-test topic, and the developer sandbox subscriptions do not. Those belong in research and development or general overhead.

The production boundary is the entire game. One Synadia invoice lumps every account and every traffic type together, so split it every month using per-account usage from the dashboard. Teams that skip the split usually err in the flattering direction, burying infrastructure in overhead and reporting a gross margin their unit economics cannot defend. A diligence review reclassifies it in an afternoon, and the restated margin is never the higher one.

Book the net amount you actually pay. Unused included data is not an asset and the free Personal tier is not revenue, so there is nothing to gross up or carry forward. If you want visibility into headroom, track consumed versus included gigabytes in your metrics and keep the ledger entry at cash cost.

How to Book It So Your Margin Tells the Truth​

Give messaging its own cost-of-sales account rather than blending it into a generic cloud or software line. A dedicated account such as cloud messaging lets you divide the month's spend by the month's egress gigabytes and see your true cost per GiB, which is the number that tells you whether fan-out growth is eating margin.

The Synadia charge settles after month-end, so accrue it. Estimate the production portion from your egress metrics at close, true up to the invoice when it lands, and keep the non-production portion out of cost of sales. Here is a full cycle for a January where production ran an estimated 291.20 dollars against an actual invoice of 295.40 dollars, with a separate 49-dollar Starter team for development:

2026-01-01 open Assets:Cash:Operating USD
2026-01-01 open Expenses:CostOfSales:Cloud-Messaging USD
2026-01-01 open Expenses:Research:Cloud-Sandbox USD
2026-01-01 open Liabilities:Accrued:Synadia USD
 
2026-01-31 * "Synadia" "January prod estimate, Pro base plus client-leaf and gateway overage"
  Expenses:CostOfSales:Cloud-Messaging  291.20 USD
  Liabilities:Accrued:Synadia  -291.20 USD
 
2026-02-03 * "Synadia" "January invoice settles at 295.40 plus 49.00 dev team"
  Liabilities:Accrued:Synadia  291.20 USD
  Expenses:CostOfSales:Cloud-Messaging  4.20 USD
  Expenses:Research:Cloud-Sandbox  49.00 USD
  Assets:Cash:Operating  -344.40 USD

Reconcile the accrued amount to the dashboard's per-account network usage at least monthly, with client, gateway, and route traffic as separate lines so a spike in one does not hide inside the others' flat trend. If you keep your books in plain text, the cost-tracking patterns in the docs extend naturally to a per-traffic-type messaging split.

One classification trap to avoid: add-ons such as extra leaf nodes, connectivity packages, and storage are still messaging costs when they serve production, but the Remote System add-on linking your own self-hosted NATS system is a hybrid-architecture choice. If that link exists to keep a legacy on-premises system alive rather than to serve current customers, it belongs wherever that system's costs live, not in cost of sales.

Five Controls That Keep Egress From Eating Margin​

Start with fan-out discipline and payload size. Together they address the multiplier and the multiplicand, and both are afternoon-sized fixes.

1. Treat every delivery as a purchase​

Each subscriber delivery is separately metered egress, so audit who receives what. Attach tight subject scopes so every consumer gets only the events it handles, and remove dead subscriptions from decommissioned workers. Unfiltered fan-out pays delivery for messages the consumer drops on arrival. This is pure waste with a one-line fix per subscription.

2. Put the payload on a diet​

Keep events lean. Store the full document in object storage and send a reference with the identifiers the consumer needs, the claim-check pattern. Strip embedded blobs, duplicated customer records, and verbose debug context from the hot path. Every gigabyte you remove saves 9 cents on every delivery of every message that carried it, which is why payload size usually beats plan shopping as a savings lever.

3. Scope leaf-node interest tightly​

A leaf link forwards only subjects with interest on the other side, which makes the edge subscription the valve on a 9-cent pipe. Review every leaf subscription quarterly and confirm each still serves a live edge workload. One forgotten catch-all subscription at a single store can quietly drag the entire subject space down the most expensive link on the invoice.

4. Keep streams near their consumers​

Colocate publishers, streams, and consumers in one region wherever the architecture allows. Cross-region replication pays gateway overage plus the provider's underlying transfer on the same bytes, so treat every gateway gigabyte as guilty until proven necessary. If disaster recovery genuinely needs a second region, replicate the smallest subject set that satisfies the recovery objective, not the whole account.

5. Right-size the plan and watch the burn rate​

Track consumed versus included gigabytes weekly, not monthly, because overage accrues silently until the cycle closes. Remember the 1.6 TiB breakeven before upgrading Starter to Pro for data reasons, and remember the Personal cliff in the other direction: teams prototyping on the free tier should upgrade before any traffic spike they care about, because Personal answers overage with dropped connections, not a bill.

Month-End Checklist for Messaging Costs​

Close the loop the same way each month so the numbers stay trustworthy:

  1. Pull egress gigabytes by traffic type from the dashboard, not logical message counts from application logs.
  2. Divide each type's spend by its gigabytes and compare against the 9, 2, and 1 cent benchmarks.
  3. Compute delivery fan-out per subject by dividing deliveries by publishes; anything above your design ratio deserves a subscription review.
  4. Split production from staging and sandbox usage per account, and confirm only production landed in cost of sales.
  5. True up last month's accrual to the settled invoice and carry the variance forward in your estimate.
  6. Check gateway traffic as a share of total egress, and confirm every cross-region flow still has an architectural reason.
  7. Confirm every new account, stream, and leaf node created during the month inherited production tagging and tight subject scopes.

Pull this month's Synadia network lines from your dashboard today and compare total egress gigabytes against the included block. If overage is growing faster than customer usage, fan-out or replication is multiplying the rate, and your cheapest margin win is a smaller payload and tighter subscriptions, not a bigger plan.

Source: https://beancount.io/blog/2026/11/11/synadia-cloud-nats-egress-pricing-variable-cogs-guide

Published: November 11, 2026