eqixiacEquinix Infrastructure as Code

Cost and value

Rate cards, price sources, the egress savings calculator and the TCO comparison.

Scope#

The design.value package produces design-time estimates, not quotes. A rate card resolves the price of one item and states its source. The savings calculator compares the egress cost of one cloud over the internet and over a private interconnect. The TCO comparison prices a deployment over a contract term.

Rate cards#

A RateCard prices one item: a Fabric connection, a Cloud Router, a GB of cloud egress, a cloud provider's interconnect port, or a colocation item (cabinet, kW of power, cross connect). A lookup returns an Optional, which is empty when the card cannot price the item. An empty result is distinct from a price of zero.

Price sources#

Each quote carries one of six PriceSource values.

PriceSourceOriginReliability
CUSTOMFigures you declare, such as contract ratesAs good as your input
EQUINIX_LIVEFabric price search for your accountCurrent list price for the Equinix side
PROVIDER_APIA cloud provider's public price APICurrent public list price; excludes negotiated discounts
REFERENCEThe bundled table dated 2026-06Indicative; goes stale
ESTIMATEDerived, with no external sourceLowest
COMPOSITEA sum over mixed sourcesRead the note on the quote

Standard chain#

When no card is supplied, the calculators use RateCard.standardChain(fabric), which asks the live Equinix card first and the bundled reference card for every item that the live card cannot price. Cloud egress rates always come from the reference card, because Equinix does not sell egress.

The live card sends one price query per lookup and caches the answer. On 2026-11-11 the live list prices in Ashburn were USD 200 per month for EVPL at 1 Gbps, and USD 0, 1500 and 3000 per month for Cloud Router LAB, STANDARD and ADVANCED. In 3.0.0 every live lookup failed with HTTP 400, and the chain used reference figures without reporting the failure.

Your own rates#

A card passed to rateCard(...) replaces the chain. To use contract rates and keep the chain for everything else, layer a custom card in front of it. A layered card asks its cards in order and returns the first price it gets.

Java
import com.eqixiac.equinix.core.enums.MetroCode;
import com.eqixiac.equinix.design.value.ratecard.ColocationItem;
import com.eqixiac.equinix.design.value.ratecard.CustomRateCard;
import com.eqixiac.equinix.design.value.ratecard.RateCard;
import com.eqixiac.equinix.design.value.ratecard.Term;
import com.eqixiac.equinix.fabric.enums.ConnectionType;

CustomRateCard contract = CustomRateCard.builder()
    .currency("USD")
    .connectionRate(ConnectionType.IP_VC, 10_000, MetroCode.DC, Term.MONTH_36, new BigDecimal("300.00"))
    .cloudRouterRate("STANDARD", new BigDecimal("950.00"))
    .colocationRate(ColocationItem.CABINET, MetroCode.DC, Term.MONTH_36,
        new BigDecimal("550.00"), new BigDecimal("500.00"))          // monthly, one-time
    .colocationRate(ColocationItem.CROSS_CONNECT, new BigDecimal("150.00"))
    .colocationRate(ColocationItem.POWER_PER_KW, new BigDecimal("140.00"))
    .build();

RateCard rates = RateCard.layered(contract, RateCard.standardChain(fabric));

A custom rate can be declared with or without a metro and a term. A lookup takes the most specific entry: metro and term, then metro only, then term only, then neither.

Live cloud-egress adapters#

Four adapters, which are not part of the standard chain, read the providers' public price APIs and price egress.

AdapterSourceKey needed
AwsPriceListRateCard.create()AWS Price List Bulk APINo
AzureRetailPricesRateCard.create()Azure Retail Prices APINo
GcpBillingCatalogRateCard.create(apiKey)Google Cloud Billing CatalogGoogle API key
OracleCloudPriceListRateCard.create()OCI Price List APINo
Java
import com.eqixiac.equinix.design.value.ratecard.EquinixRateCard;
import com.eqixiac.equinix.design.value.ratecard.ReferenceRateCard;
import com.eqixiac.equinix.design.value.ratecard.provider.AwsPriceListRateCard;
import com.eqixiac.equinix.design.value.ratecard.provider.AzureRetailPricesRateCard;
import com.eqixiac.equinix.design.value.ratecard.provider.OracleCloudPriceListRateCard;

RateCard live = RateCard.layered(
    EquinixRateCard.of(fabric),
    AwsPriceListRateCard.create(),
    AzureRetailPricesRateCard.create(),
    OracleCloudPriceListRateCard.create(),
    ReferenceRateCard.standard());

Each adapter request has a 5 s connect and a 10 s socket timeout. After a network error, throttling or an unrecognized response an adapter returns an empty result, and the next card in the layer is asked. An adapter caches successful fetches only, so it repeats a failed fetch on the next lookup. Google lists prices per GiB, which the adapter converts to decimal GB, recording the original figure in the note of the quote.

Calculation rules#

  • When an item cannot be priced, the result is marked unpriced or partial and gives the reason. The item is not left out of the total as if it cost nothing.
  • The calculators add and subtract amounts within one currency and apply no exchange rate. When components resolve in different currencies, the result gives a subtotal per currency, leaves the savings figures null and names the currencies.
  • Each substituted figure is labelled in the note of its quote. A reference lookup above the highest tabulated bandwidth is extrapolated linearly and tagged EXTRAPOLATED. An unlisted router package is priced at the STANDARD figure. A live price for a different term than the requested one names both terms.
  • Every report states the date of the reference data it used.

Savings calculator#

The savings calculator compares the egress cost of one cloud over the internet with the cost over a private interconnect, net of the Equinix connection and the cloud provider's port fee.

Java
import com.eqixiac.equinix.design.value.savings.DataUnit;
import com.eqixiac.equinix.design.value.savings.SavingsEstimate;
import com.eqixiac.equinix.fabric.model.implementation.cloud.CloudProviderType;

SavingsEstimate aws = fabric.savingsCalculator()
    .egress(40, DataUnit.TERABYTE)                    // per month
    .fromCloud(CloudProviderType.AWS).inRegion("us-east-1")
    .viaMetro(MetroCode.DC)
    .bandwidthMbps(1_000)
    .calculate();

System.out.println(aws.toMarkdown());

With the bundled reference rates for AWS us-east-1 (USD 0.09 per GB over the internet, USD 0.02 per GB over Direct Connect):

LineOperationMonthly, USD
Egress over the internet40,000 GB x 0.093,600.00
Egress over the private interconnect40,000 GB x 0.02800.00
Egress savingDifference2,800.00
Equinix connection and cloud provider portFrom the rate cardsSubtracted
Net monthly savingEgress saving less the fixed costsDepends on the two fixed prices

In live validation on 2026-11-11 a 1 Gbps case in Ashburn netted USD 3,081 per month after the provider's port fee. Release 3.0.0 omitted that fee and reported USD 3,300 for the same input.

The estimate also reports the break-even egress volume, which is the monthly volume at which the egress saving equals the fixed costs. The private path costs less above that volume.

TCO comparison#

The TCO comparison prices a whole deployment under several archetypes over a contract term and ranks them by total cost over the term, which is the monthly cost times the months plus the one-time charges.

DeploymentArchetypeMeaning
PUBLIC_CLOUD_INTERNETCloud egress over the public internet
EQUINIX_INTERCONNECTPrivate egress through Fabric, with the Equinix and colocation items you include
ON_PREMAn own facility, from coarse reference inputs that can be overridden
NATIVE_MULTICLOUD_INTERCONNECT BetaA native provider-to-provider link, only in a two-cloud comparison
Java
import com.eqixiac.equinix.design.value.tco.CostBreakdown;
import com.eqixiac.equinix.design.value.tco.DeploymentArchetype;
import com.eqixiac.equinix.design.value.tco.TcoComparison;

RateCard rates = RateCard.standardChain(fabric);      // or the layered card with contract rates from above

TcoComparison tco = fabric.tcoComparison()
    .egress(80, DataUnit.TERABYTE)
    .fromCloud(CloudProviderType.AWS).inRegion("us-east-1")
    .viaMetro(MetroCode.DC)
    .bandwidthMbps(10_000)
    .connectionType(ConnectionType.IP_VC)
    .includeCloudRouter("STANDARD")
    .cabinets(2)
    .crossConnects(4)
    .powerKw(5.0)
    .term(Term.MONTH_36)
    .archetypes(DeploymentArchetype.PUBLIC_CLOUD_INTERNET, DeploymentArchetype.EQUINIX_INTERCONNECT)
    .rateCard(rates)
    .compare();

CostBreakdown equinix = tco.breakdown(DeploymentArchetype.EQUINIX_INTERCONNECT).orElseThrow();
equinix.getLineItems().forEach((item, monthly) -> System.out.printf("%-44s %,10.2f%n", item, monthly));
System.out.printf("Total over the term: %,.2f %s%n", equinix.getTotalOverTerm(), equinix.getCurrency());

if (tco.getSavingsOverTermVsBaseline() != null) {       // null when a side is unpriced or currencies differ
    System.out.printf("Saving over 36 months: %,.2f %s%n", tco.getSavingsOverTermVsBaseline(), tco.getCurrency());
}
System.out.println(tco.toMarkdown());

The Equinix archetype, computed offline with the contract rates above and the reference card for everything else:

Line itemMonthly, USDSource
Cloud egress over the private interconnect, 80,000 GB x 0.021,600.00REFERENCE
Fabric connection, 10 Gbps IP_VC300.00CUSTOM
Fabric Cloud Router950.00CUSTOM
Cross connects, 4 x 150.00600.00CUSTOM
Cabinets, 2 x 550.001,100.00CUSTOM
Power, 5 kW x 140.00700.00CUSTOM
Cloud provider interconnect port, 10 Gbps1,642.50REFERENCE
Monthly total6,892.50

Over 36 months: 6,892.50 x 36 + 1,000.00 one-time (two cabinets at 500.00) = USD 249,130.00. The internet archetype is 80,000 GB x 0.09 = 7,200.00 per month, or USD 259,200.00 over the term. The difference is USD 10,070.00 over 36 months.

On these inputs the egress saving of USD 5,600 per month exceeds the monthly cost of the router, the 10 Gbps port, two cabinets, the cross connects and the power by USD 307.50, before the one-time charge. A lower egress volume, or list prices in place of the contract rates, makes the internet archetype the cheaper one. The comparison prices egress and the listed items, and assigns no monetary value to latency or to private connectivity.

Limits#

  • The reference table is dated 2026-06. Cloud egress prices are tiered by volume and differ by region and destination, and the table holds one headline rate per provider and region.
  • Free-tier egress allowances are excluded.
  • Compute, storage, software licences and staff are out of scope for every archetype.
  • The ON_PREM inputs are coarse reference midpoints and should be replaced with your own figures before that archetype is compared.
  • Live Equinix prices are list prices for the account. A negotiated rate has to be supplied through a CustomRateCard.
  • A blended multi-cloud flow has to be modelled as one calculation per cloud, or at one cloud's rates as an approximation.

MCP tools#

MCP tools: design_estimate_tco and design_compare_cloud_egress use the same rate-card chain and return the same provenance notes (MCP server).