TL
The short answer

Azure charges for data movement based on direction and distance: outbound data to the internet, egress, is billed per gigabyte after a small free allowance, data moving between Azure regions is charged on both ends in many cases, and traffic between availability zones in the same region carries a charge too. Inbound data from the internet is generally free, and traffic within a single zone is usually free. The cost grows quietly because chatty services spread across zones or regions, replication, and internet egress to users and partners all generate billed flows that no line item warned you about. Controlling it is an architecture exercise: keep talkative components close, route through the right gateways, and avoid paying egress twice through poor placement.

Here is which flows Azure charges, where the surprises hide, and the placement and routing choices that bring transfer cost down.

Which Azure data flows are charged?

The pattern follows direction and distance. Outbound internet egress is charged per gigabyte once you pass the monthly free allowance, and it is usually the largest line. Cross region traffic, including geo replication and services calling across regions, is charged and can be billed on both sides. Cross zone traffic between availability zones in the same region carries a per gigabyte charge, which surprises teams who spread tiers across zones for resilience. Inbound from the internet is generally free, and same zone traffic is generally free. Knowing this map is what lets you predict the bill from an architecture diagram.

Where do the surprises hide?

Three places generate transfer cost no one intended:

  • Cross zone chatter. A spread of application, cache, and database tiers across zones for high availability is sound for resilience but bills every hop between zones. Keep tightly coupled, high volume components in the same zone where the availability design allows.
  • Cross region replication. Geo redundant storage and cross region service calls move large volumes continuously. Confirm the redundancy tier matches the real recovery requirement rather than a default.
  • Egress to partners and users. Serving large payloads to the internet, especially uncached, drives egress. A content delivery layer and caching cut the volume that leaves Azure.

How do you architect transfer cost down without rework?

You rarely need to rewrite the application. Co locate chatty components in one zone where availability targets allow, so high volume traffic stays free. Match storage redundancy to the actual recovery objective instead of defaulting to geo redundant everywhere. Put a caching and content delivery layer in front of internet facing payloads to cut egress volume. Route through the appropriate gateways and private connectivity so traffic takes the cheaper path. Each of these is a configuration or placement decision, not a redesign, and together they move the largest transfer lines.

A worked example

Worked example

A European SaaS company spread every service tier across three availability zones by default and served large media payloads to users straight from origin, so cross zone and egress charges had grown into a material share of the Azure bill. Co locating the chattiest cache and database pair in a single zone where the availability design allowed, right sizing storage redundancy to the real recovery objective, and adding a caching layer in front of the media path cut transfer cost sharply with no change to application code. Trimming this hidden line was one of several moves in the program that left the company 41 percent lighter on cloud spend. Figures are verified against billing data and anonymised.

Frequently asked questions

Is inbound data free on Azure?
Inbound data from the internet is generally free. The charges are on outbound internet egress, cross region traffic, and cross zone traffic between availability zones in the same region. Same zone traffic is usually free.
Why am I charged for traffic between availability zones?
Spreading application tiers across zones for resilience is sound, but Azure bills traffic that crosses zones per gigabyte. High volume, tightly coupled components can often sit in one zone where the availability design allows, keeping that traffic free.
How do I reduce Azure egress cost?
Cut the volume that leaves Azure: cache and use a content delivery layer in front of internet facing payloads, match storage redundancy to the real recovery objective, and co locate chatty components so high volume traffic stays within a zone.

Find the transfer cost hiding in your estate

We map the charged data flows in your Azure estate, then cut transfer cost through placement and routing rather than rework, across AWS, Azure, GCP, and OCI. We take zero provider commissions and answer only to you, on a Fixed Fee or a no risk Gainshare basis, with a guarantee that keeps us honest: we reduce your cloud spend or we reimburse our service fee. Book a strategy call, and follow more in The Cloud Spend Navigator.

Independent · buyer-side

Put a defensible number on your cloud spend.

No provider in the room, no published price list. Tell us your footprint and we will scope the savings against your billing data — we reduce your cloud spend or we reimburse our service fee.

Buyer-side intelligence, monthly.

The Cloud Spend Navigator: what changed in cloud pricing, commitments, and FinOps — no vendor spin.